こんにちは、福岡オフィスのエンジニア@imaimaです。
先日2021年10月12日から15日にわたって開催されたElixirConf US 2021にオンライン登壇し、ぶじに終わりましたので、そちらについてのお話をします。
ElixirConf US 2021について
ElixirConfとは、プログラミング言語Elixirの開発者や愛好家が世界中から集う技術カンファレンスです。
今年のElixirConf USは、テキサス州オースティンで開催され、
- In-person(オフライン) 10月12日〜13日
- Virtual(オンライン) 10月14日〜15日
の形式で行われました。
登壇に至るまでの経緯
Elixirそのものに関しては、imaimaがおもに趣味で書いてきており、その関係もあって社外で個人的にElixirの勉強会を定期〜不定期で行なっていました。
その流れで、今年の6月ごろに「有志で海外ElixirカンファレンスにCFPを提出する挑戦をしよう!」な会を企画し、自分でも書いて提出したらなんと採択された、というのが今回の登壇に至った経緯です。
Elixirについて
Elixirとはどういった開発言語なのかを簡単に説明しますと、
- 強い動的型付け言語
- Erlang VM上で実行される
- 軽量プロセスによるアクターモデルでの分散/並行処理
- 関数パターンマッチやパイプ演算子(
|>
)といった持ち味がある - 標準搭載のテスト機構であるExUnitやDoctests機構によるテストコード実装が容易
等の特徴をもつ言語になります。
なお、Elixirは弊社で標準的に使用している技術スタックではないのですが、別のパラダイムの技術に触れることで得られる恩恵もあると個人的に実感しています。
- 多様的な技術選定の目を養う習慣につながる
- それによって実装パターンや考え方の引き出しが増える
- Elixirに触れていることでの話で言うと、
- テストしやすい実装コード記述を心がけるようになる→テストコードをさらに書くようになる、という好循環が得られる
- データ入出力のフローを実装上さらに意識するようになる
こういった恩恵が、業務において書くコードに対しても良質なフィードバックを持たらしてくれていると感じています。
登壇情報
imaimaは、Virtual日程の部の後半15日に参加し、以下スライド資料の内容を発表してきました。
How do we casually create an Elixir community website with Phoenix?
- トピック: Phoenix
- 対象オーディエンス: 入門者
発表内容
要約すると、
Elixir製のWebフレームワークPhoenixでシュッとwebサイトを作ってデプロイしよう!
という発表をしました。
システム構成は以下になります。
最終的にこういったテーマで登壇しようと決めたモチベーションは、以下のとおりです。
- 背景として、Phoenixフレームワークには、
mix
等による扱いやすいデプロイメントシステムが以前から備わってはいました - さらに、2021年8月26日にPhoenixの新バージョン1.6.0のRelease candidateが発表され、JSビルドツールにesbuildが導入されたこと等によって、これまでのバージョンと比較してビルドがさらに高速化しました
- Phoenix1.6.0はその後RCが取れて、9月24日に正式に1.6.0バージョンが発表されています
- 1.6系バージョンの情報は、まだ出始めたばかりのためとても少なく、自身の登壇内容テーマを「Phoenixの新バージョン1.6系プロダクションでの開発事例のひとつ」として示し、Elixirユーザーへの情報共有をしたい気持ちがありました
本発表では、コミュニティWebサイトのリリースをお題として、Phoenixのバージョン1.6.0の環境構築から実装、さらに実際に成果物を公開するまでの方法一例を紹介しています。
具体的には、すばやく実装してシュッとリリースするために、以下の流れで進めています。
- 基本構成をDockerで用意(環境構築は手早くしたい、バージョン差異エラーを招きたくない気持ち)
- スタイル構築にはTailwind CSSを適用(ユーティリティファーストの力を拝借)
- メジャーなPaaSであるHerokuにContainer Registoryでリリース
- リリース後の運用を容易にするために、CircleCIでのデプロイ自動化の仕組みを準備
工夫点
ところで、自身の発表テーマに関しては、CFPを事前に提出して運営者様側からのパブリックアナウンスもされていたとは言うものの、デプロイハンズオンに近い雰囲気の内容で終わってしまいそうかも、との懸念が自分の中ではありました。
そこで、いくつかの工夫を織り交ぜることにしました。
- プレゼンテーションが単調な説明に帰結しないよう物語テイストを混ぜてみた
- 「不思議の国のアリス」のモチーフを随所に散りばめました
- 海外エンジニアの技術登壇の様子を動画サイトやスライド共有サイト等で眺めていると、映画ネタや小説ネタが挟まれていることが多々あり、そのノリを拝借したつもりです
- オチが締まっていれば全体も締まる!と考えて、Elixir開発者やカンファレンス関係者の方々へのリスペクトが伝わることも願いつつ、熱量高めのメッセージを最後に話した
- 発表練習は十数回はまわした
- あとは、たくさんしゃべる練習をしました
- 自分の録画を見てみると、意外にハイテンションがずっと続いてメリハリにとぼしかったので、実装上の重要ポイント以外はあえてトーンダウンする等、緩急の部分を意識しました
- 最後の熱量高めのメッセージ部分は、録画→自分で見る、を何度もくりかえして、クドくならないよう・淡白にならないよう・モゴモゴしないよう、顔の表情も含めて特に練習しました
こういった自分なりの工夫が功を奏したのか分かりませんが、登壇当日には、予想以上に ”Thank you!” や “Great!” といったお声を、海外参加者の方々からもいただけたので良かったです!
お礼
CFP採択後から登壇当日に至るまで、Phoenixのバージョン変更やスライド作成時の心理的挫折ポイントなど様々な困難がありましたが、ぶじに乗り切ることができました。
Elixir勉強会でお世話になった有志の方々には、この場をお借りして御礼申し上げます。
また、社内でアドバイスや激励をいただいたチームメンバーやその他のみんなにもたいへん感謝しています。
まとめ
おかげさまで、登壇そのものへの反響を多くいただけたり、その流れで海外エンジニアの友達ができたり、いいことがいっぱいあったのでカンファレンスに参加して良かったです。
また、世界のエンジニアの方々の登壇発表を拝見し、いろいろな考え方を知ることができたのも良いことでした。Elixir言語特有の話題だけではなく、思考ルーチンや問題意識、課題解決アプローチなどに触れられたことで、自身の見識が以前よりも広がった思いです。
今後もこういった機会があれば、どんどん挑戦していきたいと考えています!