CROSS 2015

CROSS 2015 | エンジニアサポート CROSS 2015 に参加してきたのでメモ


#jxck_sushi

お昼に#jxck_sushiした

Sushiイベントのガイドラインが欲しいという話になったので、いつもこういう感じでやってるというガイドラインを書きました。

Sushiイベントとは、人が集まって食事を食べながら話し合う場のことです。

誰でも開催出来ますし、何かを制限するガイドラインではなくて自由にやっていいことを示すためのガイドラインです。


Webエンジニアなら抑えておきたい最近のOSS事情

  • 自己紹介
  • 本編開始
  • moongift
    • 印象深い出来事
      • FC2ブログがOSS化
    • 便利なもの
      • LICECap
    • Atomは最初オープンソースではなかったことが残念だった
  • 竹添
    • Elasticsearchが便利だった
    • Scala自体はギャップがある(仕事で使う人がまだ少ない?)
  • 会長
    • Node.jsはIssueとかPRを捌き切れない
    • Nodeとio.jsの違い大きな違いはプロジェクトモデル
    • オープンガバメントモデルをio.jsでは採用してる
      • 不透明さを排除して透明性を保ってコントリビュートできるようにしてる
    • OSSは特殊なプロダクト
      • みんなが参加できるし、みんなが逃げることができる
  • Bootstrap
    • CSSフレームワーク
    • Pureとか色々でてきてる
  • セキュリティ
    • サンドボックス
    • WAFのオープンソース
    • などがでてきた
    • PriabeBrowser/OnionShare Tor系のソフトウェア
    • JPCERT
      • お役所仕事なので修正のリリースタイミングをあわせるのが難しい
      • お昼にリリースとかなるので
    • 去年-今年は長らく存在してたセキュリティ・ホールが色々見つかった
      • オープンソースの人の目を抜けてる感じのセキュリティ・ホールが色々でてきた
      • オープンソースでセキュリティをどうやって担保していくか
    • 脆弱性が見つかった時にどういう方針で動くかをプロダクトで決めるといい
      • メンテナンスポリシーとかそういうのを決めてある方が安心
  • 趣味と実務
    • 実務ならBackbone
    • 趣味なら好きなモノを使う
  • 仮想
    • BitCoin
    • Vagrant
    • Docker
      • 今まではElasticsearchとか検証するために複数台のサーバ用意したりしてたけど、仮想環境とかで用意すると楽だしコストが少なくていい
    • ウェブブラウザで動くエディタ
    • Scalaのコンパイル
      • コンパイル as a serviceで外部にコンパイラを置く作りとか
    • Dockerが何でもできるという
    • 冪等性をちゃんと担保して書くのはすごく難しい
    • Dockerみたいなコンテナを使ってやると冪等性的な話が楽になる
    • io.jsでDockerfile用意されてて、Issue登録するときにこれをベースでやると検証がしやすい
    • 開発環境の共有とかには効果的
    • Dockerでサービスをやるのはコンテナ同士の管理があるので、また別の難しさがある

全文検索エンジン群雄割拠

  • セッション概要
    • 5年ぐらい前に
      • Apache Solrとか選択肢がほとんどなかった
    • 今は色々あるのでどれ使えばいいのか迷う
  • Elasticsearch
    • Elasticsearchは会社
  • Elasticsearchの紹介と特徴
    • Elasticsearchとは?
    • スキーマフリー、分散ドキュメントストア、REST&JSON
    • 複数台でクラスタを組んで使える
    • REST APIでデータを更新したり、検索ができる
    • 機能が豊富
    • コミュニティが活発
      • MLで月1000以上ぐらいの投稿がある
    • Azure Searchのバックエンドでも使われてる
    • Elasticsearchはまだ新しいプロダクト
      • リリース頻度が高い
    • 開発自体はJava
      • REST APIがあるので色々なライブラリから使える
    • 検索以外にも
      • Elasticsearch + Logstash+Kibana3
      • ログを集めてグラフする化する用途でも使われる
    • Kibana3で無理なクエリ投げて固まるのは4でかいけつしていってる
      • Elasticsearch側での対策も入れていってる
    • KibanaUIとバックエンドの切り離し?
      • 今のところElasticsearch前提
    • KibanaのUIがいいのでElasticsearch使う人もいる
  • Solr
    • Solr @ CROSS2015 C4 // Speaker Deck
    • レシピ、懇談検索の用途で使ってる
    • Solrを使う理由
      • 開発の自由度
      • パフォーマンス
      • 管理コスト
    • 自由度
      • ダイナミックフィールド
      • 自由にフィールドを追加できる
      • 必要になったタイミングでフィールドを追加できる
      • sunspotという便利なクライアントがある
        • Solrについて知らなくてもクライアントから触れる
    • 予測可能なパフォーマンス
      • master/slave(モダンではないが)
      • ファイルベースのレプリケーション
      • フィールドの追加するときにmasterでバイナリ変更 - slaveにバイナリが送られるだけなのでよい
    • 管理コスト
      • 2011年(Solr 1.4 - 4.9)
      • 普通に使っててBreaking Changeがない
    • デメリット
      • インターフェースの問題
        • クエリが読めない
        • reStructuredTextみたいにクエリ構文に柔軟性をもたせてる => Breaking Changeしなくてもいい
      • JVMなのでGCとの戦い
      • 最適なGCを見つける戦い
    • Q. 辞書が貧弱?
    • JSONクエリ
      • diffが使えるのが良い
    • 使い方を間違えると遅い
      • フィルタークエリとクエリは別もの
  • Amazon CloudSearch
    • Lucene/Solrベース
    • 導入の敷居が低い
      • 各言語のAWS SDKがある
    • 運用が楽
      • ドキュメントのサイズ、数での自動スケールがある
      • Multi-AZ校正にもオプション対応(複数のデータセンター)
    • ChatWork事例
      • 5億件ぐらいのメッセージをインデックスして検索可能にしてる
      • メッセージの変更に合わせて差分投入するしくみ
    • Tips
      • document/batch APIを使ってまとめて更新
      • batchサイズは最大5MB => まとめると課金が安くなる
      • インデックスのコストを最小化
    • CloudSearchはkuromojiで形態素解析してる
  • Groonga

#cros_sushi

CROSS後に#cros_sushiというので、最近のJavaScript ASTの動きについて発表してきました。

Esprima/Esprima-FB/espree、Shift AST、acorn/acorn-6to5とかのJS ASTパーサの近況についてや、 EsprimaがjQuery Fundationに移管した話とか最近結構色々動きが出てきてるのでその辺の現状を整理した内容です。 (後で別記事であげるかもしれないです)

その他

  • JavaScriptをどうやって直していく + 固い書き方にするためにはどういうフレームワークがいいのかという話
  • その得た知識をチームの他の人にどうやって伝えればいいのかという話
    • 色々パターンはあるけど、現実的にはレビュー時に伝えるとか
    • チームに一人そういうのをしっかり出来る人がいると安定する
    • JavaScriptのbad partsはURLを貼り付けて教えることがし易い(既に記事がある)

などの話をしてました。