雨ブロ【yusukixsのブログ】

アドテク関連の業界で働くエンジニアです。最近はKubernetesでコンテナクラスタを構築してサービス開発することに力を入れてます。

プログラマーのための「Rubyの世界」に参加してきました

(プログラマーのための「Rubyの世界」)http://forkwell.connpass.com/event/20332/という勉強会イベントに参加してきたので、その内容をシェアしたいと思います。

Rubyの世界

松田 明(@a_matsuda)

自己紹介

  • Rubyコミッター
  • Railsコミッター
    • 日本では自分だけ
    • Rubyコミッターを兼任しているのは世界中で2, 3人くらい
  • Asakusa.rbを主宰
  • 好きなメソッド
    • Module#prepend

Rubyについて

  • Matz is nice.
  • 純粋なオブジェクト指向言語
  • スクリプト言語
  • 開発者にとって読みやすい/書きやすい
  • 多言語にあってRubyがない機能はない
  • Rubyの誕生日: 1993.2.14
    • 名前を決めた日
  • 歴代コミッターの総人数は80人くらい
    • 今でもアクティブなのは50人くらい
  • フルタイムコミッターは世界中で3名
  • Rubyの日々の改良はSalesForceのおかげ
    • 国産言語??

Rubyのリリースサイクル

  • 2.0以降は毎年1回クリスマスごろに機械的にリリースすることにした
    • 2015年クリスマス:2.3.0
    • 2016年クリスマス:2.5.0
    • 20XX年クリスマス:3.0.0

Rubyist

Railsについて

  • DHHが作ったフレームワーク
  • 設計思想
    • CoC(設定より規約)
    • DRY(Don't Repeat Yourself)
  • 2004年ぐらいに公開開始
  • Rails5.0は2015年秋にリリース予定だったが、たぶん出ない

なんでRubyなのか?

  • Rubyはソーシャルコーディングと相性が良い
  • ソーシャルコーディング(GitHub
    • 開発者同士がソースコードを投げ合ってコミュニケーションを取る
  • Ruby = 開発者にとって読みやすい言語
  • RUbyGems & Bundlerという優れたパッケージシステム
    • ライブラリ百花繚乱の時代には必須の仕組み
  • 新しいものたちはRubyコミュニティからやってくる
  • Rubyに触れていると新しいパラダイムに触れられるのが楽しみ

コミュニティ

  • *.rbという地域コミュニティが多い
    • Seattle.rb 2001年くらい〜が発祥
    • Asakusa.rb 2008年〜
  • 毎週どこかの国でカンファレンスが行われている
  • オフラインのコミュニケーションができるのが強み

なんでRailsなのか?

  • Rubyの仕事をしようとするとRailsしかないから
    • Rubyの仕様を壊さずにWebの世界で使えるのが良い

OSSについて

  • OSSを仕事で使うと楽ができる
    • 巨人の肩に乗る
    • 納品物の大部分は誰か頭の良い人がつくったもの
    • うまくやれば楽ができる
  • OSSを仕事で使う覚悟
    • 自分で選んだOSSもアプリケーションの一部
  • 自分が書いたアプリケーションとOSSの境界
    • 境界なんてない
    • ソースは全て公開されているが、他人のバグを引き受ける覚悟が必要
    • 自分が選んだものは自分で責任を持つ

じゃあどうする?

  • ソースは全て読むのが理想
  • OSSに貢献」という立派なものではなく、「部屋の片付け」くらいの感覚
    • 気がついたらメンテナーになっている…

OSSのバージョン

  • 「枯れたバージョン」なんてない
    • 安定しているものは最新版
  • バグもセキュリティホールも全てオープン
  • 常に最新のものを使う
    • アップデートのコストはしっかり払う
    • いつでもアップデートできるようにE2Eテストをしっかり書いておく
  • 常に最新のものを使う喜び
    • 数々の新機能
    • パフォーマンスの向上
      • 自分でパフォーマンスをチューニングするのではなく、アップデートするだけでパフォーマンスが上がる
      • Ruby2.3.0もパフォーマンスが改善する見込み
  • フレッシュなバグが踏める楽しみ

Rubyの歩き方

  • 一次情報を見る
    • Matz「仕様もバグもソースコードに書かれてる」
    • 最近はドキュメントを書くコミッターが増えた
    • 日本人同士のRubyコミッターでも英語でコミュニケーションをしている
    • Railsなら当然英語のものしかない
      • WEB+DB58号と74号には日本語の記事あり
    • Rubyはコア部分に関する一次情報が日本語で手に入る唯一のプラットフォーム
  • るびま
    • Hotlinks
  • RubyKaigi 2015
  • 地域Ruby会議
    • 大江戸Ruby会議
  • Asakusa.rb
  • Rails Tutorials

今どきのやり方でWebサービスを作ろう

後藤大輔(@idesaku)

  • 今どきのやり方って?

  • 結局はコミュニケーションの問題に行きつく

    • 一人だけではお金を生み出すWebサービスを作ることは難しい
  • プロフェッショナルとしてのコミュニケーションが必要
  • プロとしてやっちゃダメなこと
    • 口頭だけのコミュニケーション
      • 情報共有がなされていない
      • 口頭が一番ラクなので、ドキュメントが残らない
  • 状況は変わった
    1. ツール

      • メーリングリスト
        • 今まで口頭で行ってきたことをメールにするだけ
        • 時間が経つとメールを見なくなる
          • メールが増えすぎて、内容の分類ができなくなってくるため
      • チャット(Slack)
        • チャンネル
        • メンション
      • ドキュメント共有
        • ファイルサーバー
          • 変更管理でファイル名がグチャグチャになる
        • esa
        • Qiita:Team
      • コードレビュー
        • コードレビューは高コスト
        • Pull Request
      • ツールの連携
        • Qiita:Team + Pivotal Tracker + Slack
    2. 作法

      • emoji
      • HRT
        • Team Geek(Googleギークたちはいかにしてチームを作るのか)
          • 謙虚(Humility)
          • 尊敬(Respect)
          • 信頼(Trust)
      • Pull Requestでなぜその実装をしなければならないのかという背景を可視化する
        • 口頭だけで済まさない
    3. リモートワーク
      • 全てのワークがWebサービスなので、リモートワークが現実的になった
      • リモートワークにすることによって、オンラインで必要な作法が分かる
  • 組織を変えようと思ったら、ボスに相談

感想

Rubyがどういう言語かを紹介する初心者向けの内容であり、少し物足りなかった。

ただ、現役のコミッターの方の言葉でどのような思想でRubyRailsが開発されているのか、Rubyによってどのようなイノベーションが起こっているかなどという話は刺激があった。

後半のセッションでは、今どきの開発のやり方を紹介してもらったが、セキュリティの厳しい大企業(ソースが外に置けない、Webサービスの利用に申請や審査が必要など)では実現が難しいだろう。

うーん、その解決方法が転職しかないっていうのは答えとしては寂しいかな。

全社レベルでGithubを導入したり、Slackを利用するのは敷居が高いので、少人数のプロジェクトごとにボトムアップで導入していくことが現実的かと思う。というか、そうしてる。

具体的には、ソース管理をSubversionからGitLabに移行したり、Redmineでタスク管理をしたり、チャットをSlackに置き換えたりして、開発プロセスの効率化を図っています。その成果をもって、他のプロジェクトに展開していくことを狙っています。