builderscon tokyo 2017に参加してきた[day 3]

ここまで出来るmruby

builderscon.io

  • CRubyとの違い
    • RegexpやFileなどが拡張扱い
    • mrbgemで拡張(エムジェム)
  • 省メモリを生かして組込み用途へ
    • mod_mruby
    • ngx_mruby
  • mrubyはLLのもう一歩先へ進める言語
    • mrubyを活かすなら低レイヤー
    • mrubyはソースコードが追いやすい
      • build_config,rb
        • rubyのDSL
      • mruby
      • ctagsを使うと言語を超えてdebugできる
      • mrbgemのdebugはmrubyとのつながりが強い
  • 深く理解するということ
    • gdbデバッグ、Kernel, Craiburarino 周辺知識が得られる
    • ミドルウエアやOSのボトルネックやパラメータに迫れるようになる
    • Internetより俺のほうが詳しい体験
      • mrubyはソースを読む
      • C言語やmiddlewareのレイヤーはドキュメントを読む
  • mrbgem化されていないライブラリ
  • opennssl, thor, faraday
  • まとめ
    • mrubyを利用することで低レイヤーに強くなる
    • middleware + mruby = 強い
      • 他社に真似出来ない仕組みが作れる

小さく始めて育てるコンパイラ

  • オリジナルの言語を作るには

      1. 既存言語のサブセットとして最低限の機能を実装
      1. 欲しい機能を拡張として実装
      1. オリジナルの構文に置き換える
    • → やらなければいけないことが
  • なぜ既存言語のサブセットとしてまずは実装するのか

    • 構文のデザインを先にやってしまい、つまづくことが多い
    • どういう構文がいいのかは実際に書いて動かさないと分からない
    • 実装に詰まったときに既存言語を参考にできる
  • GoCamlはMinCamlをベースに作った

    • MinCamlは教育用言語なので、シンプル
    • バックエンドはLLVM
  • 型推論期が多層的な型を推論できるように拡張

    • LLVM IRには多相型はない

builderscon.io

ランチセッション

  • エンジニアがkintoneを使うべき3つの理由 サイボウズ株式会社
  • 検索サービス開発が絶対におもしろいと思う理由 Supership株式会社

Make you a React: How to build your own JavaScript framework.

  • hyperapp
  • picodom
  • hyperappのソースを読んだことがあったため、メモ少なめ
  • セッション後hyperapppicodomの今後の開発方針についてお話をさせていただいた
    • hyperappは無依存のフレームワークとして
    • picodomは他のフレームワークのVirtual DOMエンジンとしての役割を持たせていくとのこと。

builderscon.io

Factory Class

builderscon.io

  • キーボードを中国の企業で量産する際の話
  • 工場選びで再重要なこと: ボスと直接ランチを取れるような関係と付き合うこと
    • そうでなければ、自分たちが小さすぎる
  • 工場の見学は必須である
    • 中国では人と人とのつながりが重要
    • 契約は重要ではない
    • お茶の儀式が終わるまではビジネスの話はしない
    • リリースされていない製品の写真を出してくることがある
      • 主要なNDA違反になっているんだろうなと思って見ていた
  • 各種書類を揃えておいたほうがよい
    • Bill of Materials(BOM)
      • 最も大切な資料
      • それぞれの部品に対して詳細な仕様を決める
      • どこから調達するかも記載する(1社からしか調達できないのか、一般品なのか)
      • Dragon Standard BOMというテンプレートがよい
    • Electrical design files
      • ODMならデザインをしてくれる
      • 今回は自分たちで作った(コントロール・フリークだった)
    • Machanical design files
      • CADなどで使用
      • 2D図面図も作成
    • Product Requirements
      • なぜこの製品を作っているのか
      • SWは誰が書くのか
      • どうテストするのか
      • → 工場では開いてはくれないが、自分たちの方針付けに重要な資料になる
    • Manufacturer Survery
      • 工場に対するアンケート
      • 工場のサイズは大丈夫か
      • 財務状況は大丈夫か
      • 児童労働をしていないか
  • 先方からの見積もりも、詳細度が重要
    • 安すぎる場合何かが怪しい場合がある

The Evolution of PHP at Slack HQ

builderscon.io

  • 現在のslackの社員
    • 社員: 約1, 000名
    • エンジニア: 約400名

PHP

コアの部分にPHPを採用している

  • PHPは誰も使いたがらない

    • しかし、影響力の強いWebサービスはPHPで書かれている
    • Facebook, wikipedia, Wordpress, Flickr, etc…
  • なぜslack社ではPHPを使い続けているのか

    • FounderがPHPを使っているから
    • 既存のPHP資産を流用するため
      • Hackを使うことによって、後方互換性を保ったまま不具合点を改善できる