MENU

【part.1】福岡のElixirコミュニティ fukuoka.exをどんな人がやってるか聞いてきた

【part.1】福岡のElixirコミュニティ fukuoka.exをどんな人がやってるか聞いてきた

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のコミュニティ代表の人。色んなことを知ってる人のイメージです。
ゆじかわさん
fukuoka.exでElixirを使ったWEBサービスの運営ノウハウを発信する人。Pythonの人のイメージが強いです。

コミュニティ代表の「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の造りによって大きく左右されること、といった実務面での性能限界領域について痛烈な体験をしましたね。

piacereさん

 

筆者(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

 

WEBサービスの運営ノウハウを発信する「ゆじかわさん」のお話

筆者(take2)

まず自己紹介をお願いします!

– ゆじかわさん

ゆじかわです。今はカラビナテクノロジーという会社でバックエンドのエンジニアをやっています

経歴としてはカラビナテクノロジーの前は中小のSIerで電子カルテの開発や導入で地方の病院に行っていました。

その後、同じ会社で病院内の物流システムの開発や導入をやってました。

カラビナテクノロジーに入ってからはPythonを利用した開発を1年半〜2年くらい続けてやってます。

Pythonが好きということもありPyFukuoka(https://fukuoka-python.connpass.com/)というコミュニティもやってます。

2018年6月のPyCon Kyushu(https://pycon-kyushu.connpass.com/)にもスタッフとして参加する予定です。

筆者(take2)

それだけPython、Pythonしてる人がなぜfukuoka.exで活動されているんですか?

– ゆじかわさん

最初はfukuoka.ex主催のpiacereさんと出会って、Elixirの存在を知って、社内勉強会にも参加させて頂きました。

そこでElixirの入門をやったんです。

その時は、まだ業務でElixirを使うというニーズも無かったので、「へー、こんな言語があるんだぁー」位でした。

それからしばらく経った今、カラビナテクノロジーでは、新しい事業として少数で開発から運用を行う受託を行なっております。

このコンセプト自体は、ソニックガーデンさん(https://www.sonicgarden.jp/) を参考にさせて頂いております。

この事業自体は、技術的な部分は、全てこちらが決める代わりに、サービスの開発から運用まで全てこちらでやります、というものですが、そこでElixirをメインに活用しています。

筆者(take2)

そこでなぜElixirだったんですか?

ゆじかわさん

– ゆじかわさん

この時に「じゃぁ、サービスで利用する言語をどうする?」という話がメンバーの中で出たんです。

流れからすると、メンバーが全員Pythonを使っていたので、Pythonになる所だったんですが、Pythonの良い所ってデータサイエンスが得意な部分で、これまでの業務のほとんどがデータサイエンス要素の強い仕事ばかりでしたので、メンバー全員がPythonでのWebサービスで開発するとなると改めて技術のキャッチアップが必要でした。

じゃぁ、Python以外になるとどの言語でも技術のキャッチアップのスタート地点は同じだな、という所がありました。

今の受託のスタイルが、少人数で回すスタイルになっているので、生産性が低い言語を使ったり、障害がよく起きるようでは、事業が回らなくなる可能性があるので、Elixirの生産性の高さや耐障害性を期待してElixirを採用しました

現在、事業の方は今年の1月に始めて、キックオフ済みの案件は3つ、開発中の案件は2つになります。

今、開発中のものはバックエンドはElixirのフレームワークであるPhoenixを利用したAPIを開発し、フロントエンドはAngularを利用して開発をしています。

Elixirのバックエンド側は、学習コストも低くかなり早く開発を進められている印象ですね。

筆者(take2)

ElixirってRubyやPHPに比べると少しマイナーなイメージですが、ドキュメントとかの情報の整備具合ってどうなんですか?

メンバー全員がElixir初心者というと、その辺の不安が気になります。

– ゆじかわさん

ドキュメント等の情報の整備具合はまだデメリットとしてあると思います。英語に抵抗がなければ洋書を手に入れて読めば良いと思います。

私も洋書「Programing Phoenix」(https://pragprog.com/book/phoenix/programming-phoenix)を手にして勉強している状態です。

Programming Phoenix

 

ですが、そのデメリットを補うくらいには生産性は充分出ています。ダウンの少なさや耐障害性については、これから評価する部分が多いですが、海外や福岡企業であるYAMAPさんの運用実績では、1年間ダウンしなかった報告も見ているので、期待しています。

筆者(take2)

それではfukuoka.exの中での役割は?

– ゆじかわさん

Webサービスを作るということを今は仕事にしているので、その辺で溜まったWebサービス制作のノウハウを、fukuoka.exで共有する役割ですね。

実際に、小さいサービスを作ってみる経験は出て来やすいと思うのですが、「運用をした上でのノウハウ」というのは表に出にくいと思うので、きっとElixirに興味を持たれた方に役立つ内容になると思います。

あと私自身、PythonからElixir、初心者状態からプロダクト開発の両面を経験しているので、これからElixirを始められる方に、伝えられる部分が多いのかな、と思っています。

補足:ゆじかわさんの今までの登壇スライドをご紹介。

PythonライブラリをElixirで開発してみた
(https://speakerdeck.com/yujikawa/pythonraiburariwoelixirdekai-fa-sitemita))

マルチテナントアーキテクチャ x Elixir / Phoenix
https://speakerdeck.com/yujikawa/phoenix))

まとめ

以上、5人中2人のインタビュー記事でした。

お二人とも、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日)

【関連記事】

コメントを残す

メールアドレスが公開されることはありません。

カテゴリ最新記事

WEB+DB PRESS Vol.103をみんなで読む会 #0@福岡