【part.1】福岡のElixirコミュニティ fukuoka.exをどんな人がやってるか聞いてきた
先日、福岡で精力的に活動をしているコミュニティfukuoka.exの中の人に、なぜElixirを推してるのか、どういうスタンスで活動しているのかという話を聞いてきました。
きっかけ的には、fukuoka.exに参加した際、「コミュニティ紹介もブログでしたら」という話をもらい、自分もコミュニティ運営(FukuokaゆるっとIT交流会)を主催する身としては気になったので、乗っかってきました。。
ちなみに記事に落とし込んだら、すごい量になったので3回くらいに分けてメイン運営者5名から聞いたお話をお送りしたいと思います。
fukuoka.exとは?
「fukuoka.ex」は、大量アクセスのあるWeb・APIサーバ構築や、ビッグデータ分析/AI・機械学習向けデータ加工といった、「膨大なアクセスやデータの高速処理」と「高い開発効率」を両立できる関数型プログラミング言語「Elixir」と、そのWebアプリケーションフレームワーク「Phoenix」を福岡で広め、ワイワイと盛り上げていくコミュニティです。
引用:fukuoka.ex ~福岡Elixirコミュニティ~
とのことです。
要は「大量アクセスに対応できて、開発効率が良いから今後Elixir流行るし、盛り上げようぜ」という感じらしいっす。
ちなみにElixirはErlangVM上で動く、2012年に登場した関数型のプログラミング言語です。
今回話をしてくれた方々
piacereさん
fukuoka.exのコミュニティ代表の人。色んなことを知ってる人のイメージです。
|
コミュニティ代表の「piacereさん」のお話
筆者(take2)
まず自己紹介をお願いします!
– piacereさん
fukuoka.exのコミュニティ代表をしているpiacereです。
私は、株式会社TechJINでCTOとして、Elixir/Phoenixでマーケティングデータを分析するデータサイエンスプロダクト開発をしています。
また、fukuoka.ex以外にも、「福岡 理学部」や「福岡×人工知能x…」といったコミュニティ代表もしています。
ちなみに、ハンドル名の「piacere(ピアチエーレ)」は、イタリア語で「喜び」という意味です。
筆者(take2)
いつ頃からプログラミング始めたんですか?
– piacereさん
プログラミングは、小学4年から始め、今年で36年目になります。
始めた頃は、BASICでゲームを作っていましたが、当時流行りのシューティングゲームを作る頃には、性能を求めて機械語で組んでいました。
大学では、3年の頭に就職先が決まっていたので、さほど授業に行かず、VMとOS、コンパイラの開発を友達としていました。
大学を卒業した後、東証一部上場企業でシステム開発と営業、あとリバースエンジニアリング(笑)を担当したり、ベンチャー企業でプロダクト開発事業立上げを担当しました。
その後、独立して受注開発と自社製品販売をしたり、スマホのビルトインアプリのインフラを開発・運用する超大規模案件を経験した後、福岡に移住し、今のポジションに落ち着きました。
筆者(take2)
Elixirに興味を持ったきっかけは何でしょう?
– piacereさん
Elixirに興味を持ったきっかけは、このスマホインフラ案件での経験が影響しています。ユーザーの母数が1,500万人と巨大で、平均10,000TPS/最大80,000TPSの需要に対し、レスポンス0.3秒以内という非常にタイトなSLAで、そのシステムのパフォーマンスに責任を負う立場でした。
[補足]
TPS(Transaction Per Sec):秒間のトランザクション数のこと
SLA(Service Level Agreement):ユーザーと合意しちゃった要件のこと
Javaを利用していたのですが、案件の規模的に、生半可なパフォーマンスチューニングやクラスタ追加では追いつかず、その中でJavaVMの限界を感じました。
2日ヒートラン(連続性テスト)を耐久させる要件がありましたが、1日半以上、持たないことが判明し、Java Mission Controlの「Flight Recorder」を利用して、ヒープダンプをチェックしてはコードやSQLを組み直す等をしました。
現行運用通りに「1日1回再起動する仕組みです」とトップが言ってくれれば良かったんですが、「2日間もちます」と牧歌的に言っちゃったせいで、2015年のゴールデンウィークは一切休み無しで、この対応に追われました。
この案件を通じて、プログラミング言語次第では、マルチコアCPUの性能を容易に引き出せないことや、メモリ利用限界がGCやVMの造りによって大きく左右されること、といった実務面での性能限界領域について痛烈な体験をしましたね。
筆者(take2)
そういう経験もあり、Elixir推しになったわけですね。
– piacereさん
そうですね。元々、Erlang自体は20年前位から知っていて、Elixirはこのスマホ案件の直後くらいに知りました。
Elixirは、GCがVM単位ではなく、プロセス単位なので、プロセスを落とせばメモリがちゃんとOSに返されるクリーンな実装や、プロセスそのものが軽量で大量アクセスにも高い耐久を発揮する、という安定性があります。
また、何か問題があっても、プロセスを再起動することで対処する耐障害性の設計思想が気に入りました。
まさに前述のような80,000TPSをさばく必要があるプロジェクトに適しているプログラミング言語と直観しました。
そこから、大量アクセスの検証をし、同スペックのHWであれば、JavaVMよりも明らかにCPU利用やメモリ利用のメリットを享受できる事が判り、「これで行こう」と思いました。
少ない記述量で高機能な処理が書ける関数型のメリットと、関数型言語の中でも、Rubyに近い構文で入門者にフレンドリーな点も、チームを率いる立場として、メンバー育成の観点からも好ましかったです。
その後、Elixirが、HWを変えること無く、性能アップできる「マルチコア対応」が容易に可能と分かり、益々、魅力を感じました。
これまで、100種類くらいのプログラミング言語を触りましたが、「もう一生Elixirでいい」と思うほど、多くのメリットを感じています。
筆者(take2)
性能面でElixirを選ばれたというのが強いですか?
– piacereさん
そこが最も強いですね。
先ほどお話した、安定性の部分や、メモリやGCが汚くなってもクリアして綺麗な状態に戻せる、という設計思想にも強く惹かれました。
他の言語では、例外処理をしていても、よほどミッションクリティカルなサービスでない限り、プロセスの再起動までは設計が及ばないのですが、Elixirは、元々プロセスを再起動する設計を意識する言語になっています。
Elixirと、その元となったErlangには、「落として綺麗にする」という文化があり、その明快な耐障害設計がとても良いなと思います。
私は、性能と運用を重視するというのが、プロダクト開発とSI案件において最も重要と考えていて、「言語の書き方」のような表面的な特性以上に、性能と運用を重視した言語を常に選択しています。
筆者(take2)
そういった経験を踏まえて、fukuoka.exではどういった役割を?
– piacereさん
コミュニティ代表として、Elixirプロダクション採用の観点で、性能面・運用面をプッシュした「MeetUpイベント」を企画しています(https://fukuokaex.connpass.com/)。
また、ElixirやPhoenixの門戸を広げるために「もくもく会」も行っています。
あとは、ElixirでSIをする際に役立つライブラリを作り、OSSで公開する、という役割を担当しています。
業務でも、よくライブラリやフレームワーク、ユーティリティを作る役回りが多いので、自分の強みを最大限活かせる領域だと考えています。
それと、Elixirを知らない方にも、OSSでキラーアプリを作り、人を呼び寄せる役割という立ち回りも、しっくりきています。
今も昔も、マーケティングの仕事が多いので、「マーケターとして人を集める」特性と、「みんなが使うOSSを開発する」をミックスした展開をしていきたいですね。
また、初心者層や、目新しいものに興味があるプログラマに、もっとElixirに興味を持ってもらえるコンテンツ提供も積極的に推進していきたいです。
補足:piacereさんの今までの登壇スライドをご紹介。
Elixir入門「第1回:パターンマッチ&パイプでJSONパースアプリをサクっと書いてみる」
(https://www.slideshare.net/piacere_ex/elixir1json-81100124)
Elixir入門「第3回:Phoenix 1.3で高速webアプリ & REST APIアプリをサクッと書いてみる」
(https://www.slideshare.net/piacere_ex/elixir3phoenix-13web-rest-api-81219622)
まとめ
以上、インタビュー記事でした。
Elixirの性能面や生産性に惚れ込んで使われてる印象ですね。
記事公開日の翌日に「【人気につき増枠】fukuoka.ex#8(福岡Elixir会):2018年 春のElixir入学式」がカラビナテクノロジーで開催されますので、興味を持たれた方は参加されてはいかがでしょうか?
イベントページ:https://fukuokaex.connpass.com/event/85038/
p.s.
4/27(金)からfukuoka.exコアメンバー+有志で、「季節外れのElixir or Phoenix Advent Calendar」をスタートされるそうです。
Elixir入門者/プログラミング未経験者向けの優しいコンテンツから、
今のElixirには無いマニアックな研究ネタまで、毎日配信予定とのことでした。
「みなさんから『いいね』をたくさんもらえたら、他のカレンダーでの続編もするよー」だそうですw
https://qiita.com/advent-calendar/2017/elixir-or-phoenix
(取材日:2018年3月30日)
【関連記事】
【part.2】福岡のElixirコミュニティ fukuoka.exをどんな人がやってるか聞いてきた
2018.04.19
|
【part.3】福岡のElixirコミュニティ fukuoka.exをどんな人がやってるか聞いてきた
2018.05.02
|