give IT a try

プログラミング、リモートワーク、田舎暮らし、音楽、etc.

リモート参加もOK!簡単なRailsのお題を使って公開コードレビューをやります!(2017年8月24日)#railsdm

お知らせ

2017年8月24日(木)の19:30から開催される、Rails Developers Meetup #4で「プロを目指すRailsエンジニアのための公開コードレビュー」という講演をやります。
会場は東京がメインですが、中継で視聴可能な大阪会場と、日本全国どこからでも参加できるリモート会場(YouTubeライブ使用)の3箇所に分かれています。

また、僕自身も兵庫県西脇市の自宅からリモートでお話しする予定です。
話す人も聞く人もリモートで参加できる勉強会ってすごいですね。未来的!

申込みページはそれぞれ以下のとおりです。

僕の講演の概要はこんな感じです。

「プロを目指すRailsエンジニアのための公開コードレビュー」


自分が書いたコードは他の人が見たときにどう思われるのか、気になりませんか?

この発表では、参加者のみなさんが書いたコードをソニックガーデンのプログラマ、伊藤淳一がその場でコードレビューします。

お題は以下のURLにあるので、「レビューされてみたい!」という方はイベント当日までにREADMEに書いてある内容に従って自分の解答を提出してください。


https://github.com/JunichiIto/train-ticket-rails


当日は1~2件の解答をピックアップして、良いところや改善できそうな点をレビューしていきます。

参加者全員で「良いコードとは何か」を一緒に考えてみましょう!

はい、このように今回は「僕の話を聞いて終わり」ではなく、参加者の人が提出してくれた解答によって内容が変わる「全員参加型」の発表になります。

お題のRailsアプリは初心者向けのごくごく簡単なものなので、「まだRailsチュートリアルしかやってないんだよな~」という人でも解けるはずです。
みなさん、ぜひ参加申込み&解答にチャレンジしてみてください!

お題についてもうちょっと詳しく

お題は「TrainTicketRails」という名前の、電車の改札口を簡易的にシミュレーションするRailsアプリケーションです。

「切符を買って電車に乗る」「目的の改札口で降りる」という動きをブラウザ上でシミュレートします。
ただし、運賃が足りなかったり、同じ駅で降りようとしたりすると、エラーになります。

f:id:JunichiIto:20170802052627g:plain

上の画面は完成バージョンの動作ですが、前述のGitHubリポジトリからコードを落としてきた時点ではアプリはまだ未完成です。
そこでこのアプリを完成させるべく、解答者のみなさんに要件を満たすコードを書いてもらう、というのがこのお題のゴールです。

テストコードを書かずにテスト駆動開発(TDD)ができます

お題には最初からMinitestを使ったテストコードが付いています。
最初の状態ではアプリが完成していないので、以下のように当然テストが失敗します。

f:id:JunichiIto:20170802053612p:plain

ちゃんと要件を満たすコードを書けば、テストがすべてパスします。

f:id:JunichiIto:20170802053821p:plain

テストがパスしさえすれば、(コードの善し悪しはともかく)要件を満たしたコードを書いていることは証明できます。
つまり、解答者のみなさんはこのお題をテスト駆動開発(TDD)で解くことになるわけです。

TDDなのにテストコードは自分で書かなくていいので楽チンですね!

解答の提出はPull requestで

詳しい手順はREADMEに書いてありますが、解答はGitHubのPull requestを使って提出してもらいます。
Pull requestを使えばこんな感じで差分として表示されるので、レビューする側(つまり僕)もみなさんが書いてくれた解答を確認しやすくなります。

f:id:JunichiIto:20170802054828p:plain
(注:上の画像は解答が見えないようにボカしてあります)

余談:お題の原案は「プロを目指す人のためのRuby入門」から持ってきています

この問題は現在執筆中の書籍「プロを目指す人のためのRuby入門」(2017年11月発売予定)で使用した例題がベースになっています。

ただし、本の中ではまったくRailsを使わない「素のRubyコード」として実装しています。

「素のRubyで書けるんだったら、Railsに移植するのも余裕でしょ」と思ったんですが、実際やってみると「Railsならでは」の制約やルールに苦しめられて、意外と苦戦しました。。

それはともかく、書籍が発売されたら、こちらもぜひチェックしてみてください!

まとめ

というわけで、このエントリでは2017年8月24日(木)に開催されるRails Developers Meetup #4の発表内容と、発表で使用するRailsアプリの紹介をしてみました。

「最近Railsを始めたばかりなんだけど、がんばって書いたのでレビューしてほしい」という初心者の方から、「こんなの楽勝、楽勝!完璧な俺のコードを見よ!!」という上級者の方まで、たくさんのご参加をお待ちしています!