渡り鳥の旅路

元半導体系エンジニア、今Webエンジニアの雑記

#ginzarails 「プログラマがコードを書きながら考えること 」by jnchitoさんの観察ログ

はじめに

2019/8/29にDeNAさんにて開催された銀座Rails#12で、jnchitoさんのライブコーディング(動画)を観る機会があった。まずは雑に出す。

ginza-rails.connpass.com

当日の様子はこちらのハッシュタグでどうぞ

ライブコーディングが始まる前に思い浮かべたこと

  • どこから始めるか?
  • どんな出力にするか?
  • ツールは何を使うのか?
  • 伊藤さんならもちろんテストから?
    • もしかして簡易ツールだとテストは書かない?

パッと見ポイントだなと思ったこと

  • 使い慣れた技術を選定している
    • Rails
    • Heroku (w/ Scheduler)
    • Mechanize gem

→(後からわかるが)Mechanize gemはそうでもなかったらしい。

観察スタート(心の声を添えて)

序盤

  • 対象のサイトをよく観察してみる
  • 単純なターゲットを決める(ユニークキーをみつける)
  • 新プランの判断は既存との差分で決める

  • 名前に迷う(ある)

  • 名前をつけるときにちゃんとスペルをチェックしている

  • リポジトリを作成したら、まずは基本動作をチェックしてイニシャルコミットする(ある)

  • モデルを考える

    • Rubymineを利用して作成する(便利!)
    • 最初にすっとインデックスも貼っている
    • migrateもRubyMine上からやっている
    • 最初にバリデーションもさっと設定
    • コミットもRubymine上で実施。
    • 英語のまま

中盤

  • まずモデルからメソッドをはやしていく

    • やっぱりテストから作成している。
    • 簡単なテストをパスさせるところから
  • Gemをどこに追記してくか、いつも悩む(ある)

    • Mechanize導入して、最初に簡単な動作確認をする(重要)
  • 何度もリクエストを飛ばさないようにするためのgem(スクレイピング時の配慮大事)

    https://github.com/vcr/vcr

  • テストライブラリはどちらも使えるようにしておくと便利らしい

    • Minitest & RSpec
  • まずさっと試す→さっとリファクタ

  • DOMチェックはChrome Dev toolのconsoleでさっと試す

    • console上で使えるメソッドにも色々便利なものがある
  • Rubyの使い方についてはかなりサクサクでてくる(当たり前だけど)

  • 正規表現の適用までもかなりスムーズ

  • RubyMine上でgit diffも確認できる(diffの確認はやっているがいつもターミナルだなぁ)

  • アプローチとして、アーキテクチャ上の一連の処理に対して簡単なものをまず作る

    • インクリメンタルに実装を進めていく。
  • RubyMine上のターミナル画面を小さいまま使ってる(意外だがそうならざるを得ない?)

  • 自分とやっている手順は近いがRubyMine上ですべて完結しているところが凄い(ウィンドウの切り替えがないところが良い)

  • RubyMine上だとテストランもわんぽちでいける

終盤:運用へ向けて

  • Rakeタスクを作成
  • Heroku Schedulerを設定

まとめ

  • 手慣れているツール使いのスムーズさが半端ない(Ruby、RSpec、RubyMine)
    • 自分の中でここまで習熟しているものはないのでは、というくらいスムーズだった。
  • 自分の中であいまいなことは一次情報を調べる(英語、初めて/たまに触るツール)
    • この過程を経て手慣れたツールに昇華されていくのだと思う。

2019/9/8追記

伊藤さんが発表に使われた資料と動画がBOOTHで販売開始されました。リンクはこちら↓

jnito.booth.pm