2019その感想をメモを兼ねて時系列順にざっと思うままに書いてみます。Festは過去に何度か開催されていたようですが、自分は今回が初参加でした。場所は永田町で、10時開場、10:30セッション開始というスケジュールで、10:10くらいに入場しました。会場は縦に長く、中央にプロジェクターのスクリーンが1枚という構成でした。後ろの方に座るとスライドがよく見えないだろうと思ったので前の方の席を探すと中央の前から2番目というかなりのいい席に座ることができてセッション中に不自由しなかったのがとてもよかったです。発表資料を公開します。2019一つ目の発表はHastegaというElixirのコードをOpenCLに変換して分散処理をするライブラリ(でいいのだろうか)についての発表でした。名前の由来はFFの仲間を強化する魔法だそうです。現状はdefhastegaというマクロで囲んだ中にあるEnum.mapなどが変換され、並列処理されるようになるそうです。将来はdefhastegaマクロを使わずに、できそうなところは変換するようにしたいとも話していました。スライドに性能評価はありましたが、コード生成の仕組みに悩んでいるとのことでリリースはされていないそうです。Hastegaを使ったコード例を見た限り、使う分にはシンプルそうでよさそうでした。22からはHiPEが非推奨になるのでそこも悩みどころ、と話しており、それについてツイートしたところ、記事を教えていただきました。Joseから紹介された記事です。2019どうやら、HiPEの開発チームが忙しいようです。2019NervesというElixirでIoTをするフレームワークについての発表でした。PiのファームウェアをNervesHubからネットワーク越しに更新するというでもを見せてくれました。mixを使ってttyでのシリアル接続なども可能だそうです。これによって、サーバとデバイスの両方、つまり全てをElixirで書けるようになって嬉しいですね。Elixirという構成になっているらしく、どのように動いているのかが個人的に非常に気になりました。ブート後の下回りではLinuxが動いていないらしいです。〜ラダー・ロジックを実行する〜本日の発表資料です。素敵な写真はご来場頂いた方限定ということで、これには掲載しておりません。2019水力発電のシステムにElixirを使おう、というプロジェクトのお話でした。最近の発電所では、リモートで監視/制御をしたいが、実現するための技術とエンジニアの心に谷があり、いろいろな背景を持ったエンジニアが協力しないといけないため、文化を融合させるのに苦労しているそうです。始めはPythonを使っていたが、並行性と信頼性の点でElixirに白羽の矢がたったと話していました。ボタンなどのハードウェアそれぞれを軽量プロセスに対応づけて表現できないかを検討しているらしく、プロセスの異常終了時に状態の復元や、不整合が起きないようにするのが少し大変そうだと思いました。入門タイトルの通りElixirのプロセス入門でした。時間の都合でスピード感が凄まじかったです。自分Erlangの経験があったから、聞いていて全く問題ありませんでしたが、初めて聞く人は少しついていけなさそうでした。2019ランチ弁当は美味しかったです。個人的に五穀米はとても好きです。使ったハンズオンがありました。直前のプロセス入門と合わせていい流れで取り組みやすいかなと思いました。(ドメイン駆動設計).。Developmentの略でした。send/2を使ったメッセージパッシングはキューの処理がボトルネックとなり欠点になるそうです。context)紹介してくれました。今スライドを見返しても余りよくわかっていません。キーワードをヒントとして調べてみるのがよさそうです。2019タイトルの通りノウハウ/Tips集でした。Bufferの値とElixirのコードを見ながらbitstringのパターンマッチを使って処理していくのを解説するという発表でした。パターンマッチはいい文明ですね。仕様とコードを見比べたときにわかりやすいです。4才から24才までプログラミングを教えた結果、高校生にElixirを教えるに至った気付きゲームを作りたい、という高校生にC言語から教えたら全然だったけど、Elixirを使ったら上手く行ったよ、という教育系のお話でした。ゲームを作るのが目的でコードを書くのが目的じゃないので、いかに楽しんで自分は得意なんじゃないかと錯覚させることが大事とのこと。scaleタイトルにあるリアルタイムのデジタルイベントプラットフォームの設計のお話でした。Appsを使っており、DBレイヤ、push通知、などの粒度で分割しているそうです。crash"というのが最も印象的で、長期間ステートを持っているプロセスが死んだら困るので死なないようにしている。個人的にもなんでもエラーしたら死ぬ、では難しいとこもあるよなと思っています。簡単に殺せないプロセスが生まれてしまうというのもErlang/Elixirの気軽にプロセスを終了して再起動すればいい、ようなやり方と相反しているようにも思いました。Elixir1年くらいElixir開発したノウハウを共有する、という話でした。Bufferを使ったAPIの話で、サーバとクライアントの型定義ファイルなどいろいろなものを自動生成しているそうで、かなり便利そうでした。ちなみにサービスはまだリリース前だそうです。Railsを使っていて人を誘いやすいから、Elixirを採用したそうです。いう話はたまに聞きますね。LambdaでElixirを動かす話でした。Lambdaやらサーバレスという言葉は最近耳にするが知らなかったので知る機会になってよかったです。サーバレスでElixirアプリケーションを動かすためにアーキテクチャ上の制約があるらしいので必要になったら見返したいです。〜生産性を上げてゲームの面白さに注力ゲームサーバをElixirで開発したという話でした。Elixirでサーバというと大体がPhoenixですが、ここではCowboyを使っていたので少し意外でした。質疑応答で選定理由は特に無いらしく、今だったらPhoenixを使うだろうとも答えていました。JSONを返却するAPIサーバで、平均のレスポンスタイムが50msという性能が出るそうです。Elixirを使うことで今までDBに保存していたゲームデータを起動時にETSに格納することで高速化に成功したらしく、Erlang/Elixirらしいと思いました。標準でETSのようなKVSが付いていると手軽でいいですね。ゲームのバトルロジックの計算もサーバサイドで行っているそうです。サーバサイドなので、チートの防止にもなり、StateにActionを適応していく、という方針で、かつ、関数型言語でImmutableが基本なので、テストがしやすいとのこと。これらのロジックのログや乱数シードを保存してバグを再現しやすくしているそうです。作るリアルタイムサーバー1vs1の対戦ゲームのためにPubSubサーバを作ったという話でした。1vs1の対戦ゲームなので、自分のキャラ、相手のキャラ、自分の画面にいる相手のキャラのコピー、相手の画面にいる自分のキャラのコピーの合計4体を制御する必要があり、結果は直ぐに反映されてほしいという要件だそうです。既存の製品はあったが機能過多であり、可用性の観点から自前で作ることにしたと話していました。土管を作る、ステートフルだがデータレスをコンセプトに作成したとのこと。プロトコルも自前で作成したそうです。Tokenを使ってPubSubサーバからAPIサーバに問い合わせて認証をするなど、面改めて見たいのでスライドを公開してほしいです。2019Erlang界隈では自分もTwitter上で見かけていましたが、激しい感じの発表でした。開発体制もレビューはしない、マネージメントはしない、開発用ドキュメントは書かずコメントはがっしり書く、など、まあ、おいそれとは真似できない、この人だからやっていられるんだろうな、という感じでした。パッケージ製品の販売をしているが、4年間で製品が落ちた、という報告を顧客から受けたことはないそうです。対応がとても気になります。ゲーム開発事例ElixirでFPGAハードウェアが作れちゃう,かも!!?というタイトルでした。1.9で大きく変わるというConfigが非常に気になりました。スライドがよくまとまっていたので使うときに見返します。本日のキーノート、任天堂の渡邉さんの講演スライドを運営からアップしました。Connpassからのリンクも設定済みです。2019最後のセッションはkeynoteの任天堂の発表でした。プッシュ通知の概要の説明を一通りしたあとに、Erlangとejabberdを運用していくにあたっての開発で現れた問題とその解決方法の話が主でした。抱えているユーザの規模が違うのでシステム全体への接続が1億台、ノード1個では50万から100万接続、全世界のSwitchが一斉にログインしてきたとしても30分で裁けてほしい、と超大規模でした。それらをデバッグするにあたって、etop、eprof、reconなどのトレースをかなり活用していたようです。スケールするんだから台数を増やせばいいよね、という前に技術的に解決してやろう(そして、出来ている)という姿がエンジニアとして憧れます。「問題はひとつずつ解決していこう」、いい言葉です。ejabberdはOSSのプロダクトですが、発表を聞いた感じではかなり手を入れているそうです。開発していく上でクラスタ構築の面倒をErlangVMが行ってくれるから、というのがErlangを使う一番の理由だったそうです。まとめLTも含めると全部で22の発表があったのでここまで書くのがつかれました。一般参加チケットの料金は6000円で、購入時点では、まあ、高くはないなーと感じていましたが、参加後の今現在のお気持ちとしては安かったな、です。いろいろな話が聞けて楽しかったので、来年もあるならば参加しようと思います。Extension】"マイム"と読むらしい直訳してみれば、"多目的インターネットメール拡張機能"かな?ネットワーク上で動画、音声、画像などのファイルを扱うための規格RFC2045~2049で規定されている。タイプ名/サブタイプ名"のように区切られて表現される例としては、text/htmltext/plainimage/jpgapplication/pdfなどなどさて、例えば、AndroidでSDカードにアクセスし適当なファイルを開いた際どんなファイルか判別したいとするこの時にMIMEを読み取り画像か音声かテキストか判別し他のアプリにIntentを投げようと思います※12/25追記:以下の方法だと動作しない場合があるので更に下に追記しました。}引数のパスは"/sdcard/Music/xxx.mp3"のように渡しています。