えいのうにっき

a-knowの日記です

「パーフェクト Ruby on Rails」をパーフェクトに写経した & 僕の写経のやり方について

写経した。 「パーフェクトに」というのは、6章から8章までのひととおり全部を、ということ。

6章は「イベント管理アプリケーション」を Rails で構築してみる、というもの。7章はテスト。8章で Rails のインフラ・運用周り。

感想とか

写経を終えてみて、やってよかったと心底思っている。

今の職場でも、この本で扱われているような

  • Rails アプリケーションの開発
  • TDD の実施
  • CI
  • DevOps
    • Chef でのインフラの構成管理
    • Capistrano デプロイ
    • インフラのCI

といったようなことには普段から接しているのだけど、とはいえ DevOps のあたりは、"有り物" に手を加える形だったり、メインはインフラエンジニアさんにお願いしたりという形(自分はどちらかというアプリの人間なので)が、お仕事では多い。 でも本当は、その殆どを1から全部、自分の手でやってみたい! という思いがあった。

で、「パーフェクト Ruby on Rails」の写経は、その気持ちの大部分をスッキリさせてくれた。こういうのはやっぱり、自分の自由にできる環境で、自分の手を動かしていろいろやってみないと、ほんとのほんとに "腹落ち" することはできないんだよなー。

まぁ、とにかく楽しかったのだ。w

で、実はまだまだやりたいことがたくさんあったりする。今後はこのコード・アプリケーションをベースに、

  • Hubot + slack による ChatOps
  • Travis による アプリ/インフラのCI、push-to-deploy
  • fluentd + BigQuery でのログ解析
  • heroku にも乗っけてみたい
    • heroku ボタン!
  • 各種バッチを出してみたい

...といったあたりをやっていきたいと思っている。ここまであれこれ自由にできるのは、自分のリポジトリ・趣味コードだからこそ。

「写経」について

今回の写経で、上で書いたような「色んなことを試すための土台」ができたのも、本当に良かったと思っている。 別に、これぐらいのことは "Hello World" 程度のコードでも十分なんだろうけど、でもなんかそれだとイヤなのは、まぁ、僕のヘンな拘り(ある程度作りこんだものに対して試したほうが、より面白そう!)、ってことで。w

僕はよく何か新しいことを身に付けるときに「写経」というスタイルを選択するのだけど、それは「写経」が好きだから。なぜ好きかっていうと、今回の「土台が出来た」っていうようなことを含め、僕は「写経すること」の有用性をひしひしと感じているから。だから、「何かを習得するための手段としての写経」が、好き。

僕が感じている写経の有用性ってのは、例えば下記のようなものだ。僕はこれらのことに、助けられまくっている。

  • コードそのものが手元に残る
    • 再利用や、テンプレートなどにできる
  • 「そういや、そういうコードを書いたっけなー」っていうインデックスが、頭のなかにできる
    • 全てを完全に記憶できる脳みそを持ちあわせていないので、重宝してる
  • これも一種の「他人のコードを読む」経験のひとつ
    • 「あ、こういう書き方、できるのね」という気付きもときどきある

写経に関しては、ソニックガーデン・倉貫さんの有名すぎるエントリもありますね。

写経で身につけるプログラミングの基本 | Social Change!

ちなみに、僕の写経のやり方について

ちなみに、これだけのボリュームの写経を一日二日では当然やりきれないんだけど、 その日一日の作業をPR化してやる のは、すごく良いやり方かも!と思った。

https://github.com/a-know/awesome_events/pull/1

  • 最初のコミットと同時にPRを作成
  • コミットを重ねていく。途中での気付きとかつまづいた点があったら随時コメント(場合によってはインラインコメントでもいい)していく
    • 今日はどこまで出来て、次はどこからやる、とかも書いとくと便利
  • その日の作業が終わったらセルフマージする
  • 後々、好きなときに見返すことができる
    • 「なんでこうしてたんだっけ」とか
    • 「また同じような実装をしたいんだけど、ハマりポイントとかあったっけ」とか

もしかしたら一般的なやり方なのかもしれないけど、オススメ。Contributions に草も生えるしw。ぜひ、お試しあれ。

パーフェクト Ruby on Rails

パーフェクト Ruby on Rails

パーフェクトRuby on Rails

パーフェクトRuby on Rails



follow us in feedly