Aktsk Tech Meetup #1に行ってきました
Elixirのイロハを学ぶためにアカツキさん主催のミートアップに行ってきました! 場所は代官山のアカツキさんオフィス。UNITの近くでした。
リアルタイムメモを晒しておきます。 (生メモなので正確なところはスライドを参照ください)
『GraphQL を Relay と Phoenix で実装する』
Speaker:岡田さん
WebAPI
- WebAPIのスタイルはRESTとオーケストレーション層の2種類がある
オーケストレーション層
- 1画面1API
- DBアクセス多い
- 汎用性なし
- クライアント毎の最適化に強い
理想のAPI
- サーバーの作りがシンプル
- 汎用性がある
GraphQL
- 理想のAPIに近い?
Relay
- ReactにGraphQLの機能を追加するライブラリ
React
- JSのライブラリ
Elixir
- マクロでDSLを作ることができる
Ecto
- DSLでデータベースアクセスを実装
- マクロを自分でつくって、GraphQLを実装する
Phoenix
- ElixirのWAF
QA
- 複雑なクエリはどうしてるのか?
- ASTで変換してる(聞き間違えてるかも)
『Node.js is Dead - なぜ私がNode.jsを捨ててElixirに乗り換えたのか』
Speaker:平野さん
Node.jsへの期待
- V8
- npm
Node.jsを4年くらいやって学んだこと
- コールバック地獄
- ベストプラクティスがずっとない(RoR的なとりあえずこうしておけ的な)
- 一個ブレイクスルーが起きるとそのフォロワーが山程出てくる問題がつらい
- タスクランナーだけでいくつも渡り歩いた(jake、grunt、brunch、gulp)
いまはこうしてる
- ES6で書く
- co+yield(TJ)
- WAFはkoa(TJ)
- sequelized
Node.jsはすごいが、、
- 一個一個npmモジュールを評価し組み込むサイクルはつらい
- サーバーサイドはもっともっと楽したい
補足
- co + koa + sequelizedはよい。
- BKSS開発ワロタ
- co + koaで非同期処理中のエラーハンドリングもしやすくなってきた
Elixir
- 安心して乗っかれるベストプラクティスがある
- シンタックストレンディ
Elixirの美点
- 関数型、データの不変性、参照透過性
すごさ
- パターンマッチ演算子
プロセスアーキテクチャ
- エラーハンドリングは監視プロセス側で行う
- ロジックとエラーハンドリングが分離出来る(これがNode.jsだと辛い)
- SupervisorからTask.asyncとTask.awaitを使い、タスクの非同期呼び出しをする
他には、、
- マクロによるメタプログラミング
- ファーストクラスドキュメント
感想
- Node.js(2ヶ月)→Elixir(2週間)
QA
- よい教材は?
- 踏んだ地雷は?
- IOヘビーな処理は並列化することでパフォーマンスでる。
- ストリング操作やりやすいが、SJISの文字列をUTF8に変換するのが大変(iconvを使った)
懇親会は時間の都合上行けませんでした〜(T_T)