Ruby勉強会@宇都宮 -2019/03-
参加者は3人。今日はこじんまりだったが、新しい人がきた。
ポジペ
- RubyKaigi、RegionalRubyKaigiのこと
- Cloud9とTechAcademy
Ruby
はじめての人がいたので、1章から軽く復習をして、3章をおこなった。実行環境などを確認しながら、すすめた。いまどきなのか、オンライン環境なのにはびっくりした。すでに一人で勉強をしているのでそんなに戸惑うことなく参加してたように思う。たんたんと変数についてを学んだ。擬似変数のところは面白かった。クラスを意識させるように説明しているのはとてもいいなぁっと。あと、はじめに気になりそうなことだけを説明してくれているので、とても進めやすいです。”かんたんRuby”とてもいい感じだ。
Rails
今月もお休み。
新しい参加者と
オンラインの学習サイトのこととか、どうしてプログラミングに興味があったのかとか、これからのことなどをいろいろ聞いてしまった。先週の別の勉強会できた小学生とはまた違う角度での現実的な意見がきてて、とても考えさせられた。
次回
4/6の予定です。
とちぎラズパイ同好会52回目
すがぬまさんが風邪でおやすみ、たかいさんはCoderDojo古河でおやすみといつもよりメンバーがすくなかったけど、新しく若い人(小学5年生)がきました!お母さんの同席してもらって、一緒に勉強会しました。今回もなかなか、よい勉強会になりました。
場所提供
- 株式会社アルフォ様に貸してもらいました
- はじめにみんなで会社の概要の説明をききました
- はじめての人がいたので、みんなきちんと自己紹介
- はじめて来たワカモノもちゃんと自己紹介してくれた、えらい!
- ”正栄デンシ”ユーザー
- ロケ
- デブサミ
- マイクロソフトでのイベント
- 栃木で開催予定の教育イベント
勉強ターン
- 7segLED
- アソードコモン、カソードコモンがある
- 7個だから7セグ
- 数字とアルファベットが表現できる
- ピンをひとつずつ制御するのはちょっと面倒くさそう
- とてもわかりやすく、みじかかった
休憩中に
- はじめてきたワカモノが自作した電子工作を紹介してくれた
- ダイソーで売ってる電池で動くデスクスタンドをUSBから電源を取れるようにしたもの
- はんだづけも上手にできてた。USBと電池を切り替えるスイッチを作ってた
- USBケーブルの中に入っているデータ通信用のケーブルを見分ける話や、電圧を図るときに苦労したことなどを説明してくれた。
- おとなはみんな感心してた。とてもいい刺激をもらったように思う。
今後のやってみたいこと
- 先月からの続き。
- 電源ON/OFF問題。レグザ以外は電源OFFにする状態のボタンが隠し機能でついているらしい。どうやったら、いま電源がついているかをしれるかについてアイデアも含めて話した。
- 音声認識。Juliusを使ったけど、うまくいかなかったので、IBMなどのCloudサービスを使ってためせないか?の話
- IFTTTを使った、ラズパイとの連携。次回はここ試すかも。
実験ターン
- なかうちさんが7segを持っていたのでためしてみることに
- プログラムでかくと、アノードコモンとカソードコモンの違いに気づく
- 20年ぶりにC言語でLEDを付けるコードかいている人がいた
- ワカモノとペアプロ。初めてのプログラミングだったそうなので、意外と説明することがたくさんあることに気づく。プログラムがうまく動いたので、感動して動画を撮ってた。
ふりかえり
- 今回、参加してくれたワカモノの自由な発想がとてもよかった。お互いにとてもよい体験ができた。
- アノードコモンの時の、ラズパイとの端子の接続方法について
ひさしぶりに新しい人がきてくれたのもあるけど、電子工作好きというのもあって、みんなだいぶ楽しんでいたように思う。僕もペアプロできて面白かったなぁー♪
次回は3/31を予定しています。
朝会について
前書きが済んだ?ので、朝会についてかいてみる。
毎朝 9時15分から10時00分までが朝会。だいたい9時50分に終わる。たまに10時ギリギリに終わったり、さらっと短く9時40分ごろに終わることもある。そういうのは異常値として、その日の活動に影響したりもする。全員にとって大事な時間。
朝会はいつも同じ会議室。チームメンバー全員が入るには結構、狭い。しかも、冬は寒く、夏はカビ臭い・・・咳おじさんが朝会のすこし前に空調をつけたり、脱臭剤を用意したりはしているが・・・ちょっぴり?きびしい環境で朝会をしている。
9時ごろに司会の自分は会議室に入って、プロジェクタをつける。ストーリーを眺めてたり、準備運動していると、徐々に会議室にみんなが集まってくる。メンバーはそれぞれ座ったり壁に寄りかかったり。はじめてみた時のこの光景はいまも印象に残っていて、すっごく全員がテンションが低くそうにみえて、大丈夫か?って思った。自分は朝会へのイメージがだいぶ偏っていたみたい。欧米的なイメージが強かったのかもしれない。あんまり関係ないけど、チームメンバーにはそれぞれ場所にお気に入りがあるのか、だいたい決まった位置にいる。あれ?なんなんだろうw
プロジェクタにストーリーの書かれたWiki(RWiki)を表示しながら、進んでいく。表示されるストーリーは今週のイテレーションにあるもので、順番にひとつずつ表示される。ストーリーのタイトルを司会が読みあげて、主に担当している人にパスをする。パスされた人がそのストーリーでできた今日の状態や次の設計について話す。朝会は設計をしていて、報告や連絡を目的にしていない。なので、ひとつひとつストーリーがとても細かく、具体的に話す。報告、連絡会だと思っていたのもあって、こんなに内容をつっこんで話すのかーって、だいぶ衝撃を受けた。
毎日毎日、そのストーリーや周辺について設計するので、詳細な内容や状況が勝手に頭に染み付いてくる。その場の全員が自分ごとになって、参加するので、昨日は問題ないように進んでいたものを、今日は考えを改めたり、やり直すこともある。
朝会の間は、携帯・スマホをいじるのはなし、あとノートPC持ってくるのもなし(司会だけがノートPC持参)、プロジェクターだけに集中。話が長引くと2次会ーって、司会が話を切ることもある。
最近、750イテレーション超えをしたチームの朝会はだいたいこんな感じ。
朝会の燃料、ストーリー
自分たちのチームは『ストーリー』という単位で仕事をしている。ストーリーがなんなのかわからないと朝会のことかいても意味わかんないかもしれないので、先にストーリーについて書きます。よくあるバグ管理のチケットや、タスクとは全く違うものですよ。
ストーリーとはXP(Extreme Programmmig)でてくる"User Stories"から生まれたものだそう。一般的な?アジャイル界隈では計画ゲームとかに使ったりするのかな?原文だとなんだか小難しい...
- http://www.extremeprogramming.org/rules/userstories.html
- http://www.extremeprogramming.org/rules/planninggame.html
自分たちでは、ユーザーが動かしてわかる事象の一つを1つのストーリーにしている。なんとか機能とか、なんとか処理とか大雑把なやつではない。あるストーリーが始めるときには、次のことがだいたいきまって始まる。
- ユーザーはなぜ?どういう目的で「それ」をするのか
- ユーザーは「それ」をするとどんなことができるか
- その次にユーザーはどんなことをするのか
いくつもストーリーが反復しながら進化していくことで大きな機能(処理)が完成する。ストーリーが1つできあがると、それまでにできた関連するストーリーを再評価する機会にもなる。ここまでストーリーができたから、次はこういう風に動作するのがよいかもとか、あの動作はこういう風に動作した方がいいかもとか、ひとつひとつのストーリーが大きなストーリーの1部になっていく感じ。わかりにくいですよね?
バグもストーリーとして扱っているのでそれで説明すると、ある機能がなにかのバグで動かなくなったとすると、”ある動作ができない”というストーリーが作成される。なのでゴールは”ある動作ができること”になる。
手順とか実現方法についてちょっとだけ書く。
RWiki( https://github.com/rwiki/rwiki )というRubyでできたWikiの『ストーリーカード』という機能をつかって実現している。ストーリーのページを作るとイテレーションごとに並べくれるもの。(他にもいろいろあるんだけど、それはまたの機会に)ひとつのストーリーには以下のようなことが書かれている。
- タイトル(文字通り、ゴールが書かれる)
- 種類(Story or Bug or Task)
- イテレーション(反復開発しているのでそのイテーレーション)
- ディスクリプション(概要が書かれる)
- サイン(主に担当する人)
- バージョン(複数バージョンあるので)
- 見積もり・実績(どのくらいかかりそうとか、いまはあんまり機能していない)
- 開発者の開発日記、メモ(想起のためもの)
- テスト(このストーリーを確認するためのテストケース)
だいたいのテンプレートはこんなところ。細かいところを書き始めるとキリがないので今回はここまで。手前味噌だけど、ちょっと前にこういうの書いてた。
https://speakerdeck.com/vestige/story
Ruby勉強会@宇都宮 -2019/02-
参加者は5人。またすこしずつ参加者が増えてくるとよいな。
ポジペ
- 英会話オンライン学習サイトのこと https://hapaeikaiwa.com/premium/
- アレクサアプリのこと
- とちぎRuby会議08のこと
- RubyKaigi2019のこと
- 島根へ行った話
- 3D BASECAMP 2019 Tokyo https://www.alphacox.com/company/basecamp-2019-tokyo/
Rubyターン
今月は「かんたんRuby」2章から。基本を学ぶ。リファレンスの見方からはじまって、インデントの話まで。どちらかというと他の本にはない構成な気がする。とても楽しかった。
演習にはリファレンスマニュアルを使って調べるものがあって、なにか斬新だった。参加者たちも普段はすぐにグーグルで検索して、その場の情報でやってしまうこともあるけど、正確な情報ではないのでこういうのは大事だいう話をした。いろんな言語のリファレンスマニュアルあるけど、やっぱりはじめはどう読んでいいかわからなかったりするけど、こういうのができると覚えることも増えるし、できることの幅は広がるんだろうなぁと思う。
演算子の話の中で"and"と"or"の優先順位の話しらなかった。なぜ、文字列には優先順位がなかったの?
”名前重要”の話がでてて、15年くらい前のmatzの写真をみんなでみた。すごく、わかいー!!!
プログラムのエントリーポイントの話もあった。入門書で?!というのもあるけど、一人だと、「うっ」としそうだけど、とても丁寧な説明でよかった。あと、こういうのは勉強会向きだなぁっと思いました。
Railsターン
今月もお休み。もうしばらくRubyをすすめてからにしよう思います。
次回
3/2の予定です。
朝会がはじまるまでのこと
1日のことをすこしずつ詳細にかいてみる。
その前に前提になる開発のことをすこしかいておく。いまの開発では複数のバージョン、複数の構成(エディション)を扱っている。だいたい3バージョン以上が並行開発されている。スケジュール、開発されるアイテム、重要度を加味しながら全員で行う回帰試験マシンを用意している。また、テストを主にする人たち向けの試験マシンも用意している。朝会が始まるまでにこの回帰試験マシンの準備をしているのでその話を書いてみる。
いま、ビルドできるマシンは3台。なので、3バージョンを開発の状況を見ながらナイトリービルドしている。(だいたい6時間ぐらいで終わる。だいぶはやくなった。)
試験できるマシンは10台ぐらい。だいたい毎日、1〜2人で行っている。
手順としては、会社にきたらまずはビルドマシンのコンパイルログを見る。問題なければ、各試験マシンの電源を入れ、それぞれのマシンからお手製の自動スクリプトでビルドマシンからダウンロード、ファイルの展開を行う。この辺の作業は基本的には誰でもできる。ただ、定時に来れる普通の人じゃないと朝会に間に合わないし、よく休んじゃう病弱な人だと向かない。さらにコンパイルエラーになると、だれでもできる訳ではなく、だれがどんなストーリーをやったかとか、どういうシステム構成かとか、いろんなアンテナや情報を持っていないと、問題の原因を探すのはとても大変。ということで、できる人たちだけでやっている。ファイルを展開をしている最中に今日の回帰試験シナリオを選ぶ。これもだいたい適当だけど、その週に行なっているストーリーに関連するもの。最近、触れていないもの、テストがあまり進んでいないものなどを適宜入れ替えながら設定している。
ファイルの展開が終わると、製品のエディション設定を行う。同じバージョンでも複数のエディションがあり、それぞれできる機能や動作が違うので状況に合わせて切り替えたりする。この辺は毎日やっていても、よく間違えるのでモニターに付箋紙などでどういうエディションのどのバージョンなどを貼っている。そうそう、忍者式テストが始まった頃(18年ぐらい前?)テストするマシンは2台ぐらいだったらしい。それを考えると結構大変なことしているなあっと思う。いまのやり方も徐々に調整されてこのカタチになっているが、構築まで45分から60分はさほど変わっていないのもすごいなぁっと思う。
会社にきたら、毎日すぐにこういう仕事なのでメールみて、ぼーっとしているとかはるか遠い昔のことのよう。
1日のこと(2019年版)
いつかやったけど、文字として残してなかったのでやってみる
わりと最近の平日のこと
- 6:15 起床
- 7:00 - 8:00 通勤。ゲーム。
- 8:00 - 9:00 回帰テストマシン構築、テスト作戦決め
- 9:00 - 9:15 Wikiでストーリーの確認、予習
- 9:15 - 10:00 朝会(司会業)
- 10:00 - 10:45 テストチームの朝会、特定バーションの設計会議(司会業)
- 10:45 - 11:30 朝会での宿題、徘徊
- 11:30 - 12:00 自分の担当しているストーリー作業(プログラマー)
- 12:00 - 13:00 お昼
- 13:00 - 14:00 午前中の続き(プログラマー)、ストーリーの整理
- 14:00 - 15:00 なにかしら会議に呼ばれる
- 15:00 - 16:00 回帰テスト(テスター)
- 16:00 - 16:30 徘徊
- 16:30 - 17:00 夕会(司会業)
- 17:00 - 18:00 だらだら、回帰テストマシンの片付け
- 18:00 - 19:00 帰宅時間。ゲーム。Twitter。
- 19:00 - 20:30 だらだら。夕飯。
- 20:30 - 21:00 お風呂
- 21:00 - 22:30 勉強
- 22:30 - 23:30 ゲーム or ビデオ
- 23:30 就寝
仕事以外はだいたいゲームだった...
仕事時間内は基本的にずっとみんなが作業している場所にいる。
休憩は1時間おきに水分補給、お菓子補給。
仕事中は基本的に割り込み優先。
いろんなところから話しかけられる。こっちからもたくさん話しかける。そんな感じ。
いまのチームに入ってからは平日の昼間の間はあっという間に時間がすぎる。
もうすこし細かい内容はまたかいてみようと思う。