Forkwell Press

エンジニアの生き様をウォッチするメディア

「純粋に、プログラミングの楽しさを伝えたい」森正和・山崎進・宮村紅葉(fukuoka.ex)~Community lovers by Forkwell

f:id:paxigirl:20181205111754p:plain
※左から順に、山崎進氏・森正和氏・宮村紅葉氏

Forkwell Pressでは「成長し続けるエンジニアを支援する」というスローガンの元、エンジニアが運営しているコミュニティをご紹介する企画を実施しています!コミュニティ運営の原点や想い、今後の展望などをインタビューし記事化することを通して、コミュニティのさらなる発展に貢献していきます。

今回は、分散/並列処理とデータ変換に強みを持つプログラミング言語「Elixir」と、そのWebフレームワーク「Phoenix」を福岡で広めて盛り上げていくコミュニティ「fukuoka.ex」の運営者である、森正和さん・山崎進さん・宮村紅葉さんに取材しました。

fukuoka.exは、Elixirエンジニアを増やす方向に舵を切ったばかりです

――まず、fukuoka.exコミュニティ設立の背景を伺えたらと思います。

【森】 設立自体は2017年6月です。元々は、私の前職で「社内Elixir勉強会」の形でスタートしたものです。当時、Elixir/Phoenixのいろいろなスライドや資料を作っていたので、「これ、福岡にある他の会社のエンジニアも興味があるんじゃないか」と思って、外に展開してみたのがコミュニティの始まりでした。

当時、東京ではすでに「tokyo.ex」が、国内最大のElixirコミュニティとして立ち上がっていた状況で、私自身、エンジニアコミュニティを発足するのは初めてだったため、「勝手にfukuoka.exとか名乗っていいのかな?」という思いもちょっとありました。

でも、当時一緒に働いていたエンジニアたちが、「.exとか言語の略称でコミュニティ立ち上げて、発信すれば、既存コミュニティの人たちが声をかけてくるよ」と背中を押してくれて。それで、発足することにしました。

【山崎】 森さんは、コミュニティが立ち上がった頃にTwitterも始めたんですよね。

【森】 そうですね。Elixirは、その頃まだ「流行している」というほどではなく、福岡で始めるにしても、人が集まるかは、何とも言えない段階でした。

なので、まずはQiitaでコラムを書き始め、Elixirをやってそうな方をフォローしながら、書いたコラムをTwitterで広めていきました。そこをとっかかりにconnpassでイベント開催を告知しつつ、参加者を集めていきました。

f:id:paxigirl:20181205112043p:plain

――山崎さんと宮村さんはいつごろからfukuoka.exに参加されたのですか?

【山崎】 僕は2018年2月です。

【宮村】 僕は、2018年の7月ですね。

――宮村さんはかなり最近に入られたんですね。それまでfukuoka.exは、主に森さんが運営されていたのですか?

【森】 立ち上げ当時は、私と、社内勉強会時代から一緒にやっている同僚の吉村さん(ハンドル名:つちろー)の2名で始めました。つちろーさんとは、その後も、「fukuoka.exアドバイザーズ」というコアメンバーとして、今も一緒に活動しています。

【山崎】 僕も、fukuoka.exアドバイザーズなのですが、その中では、最後発になります。いわゆる「四天王の中では最弱」みたいな扱いです(笑)。

Elixirのシステムプログラミングとか言語処理プログラミングはやっているんですけど、Phoenixはやり始めたのが最近です。そういう意味で、最弱なのは間違いないです(笑)。

【森】 いえいえ、最強の部類です(笑)。現在は、私含めて計4名が、fukuoka.exアドバイザーズとして活動している状況です。私とつちろーさんで始めた4ヶ月後、MeetUp第3回の「Elixirプログラミング入門会」でコーチ役として参加いただいた上野さん(ハンドル名:enぺだーし)がジョインしました。

そして2018年になって山崎さん(ハンドル名:ZACKY)が入り、「fukuoka.exキャスト」というサポーターメンバーも続々と参戦し、組織体制としての運営が強化され、イベントも活発になりました。

現在のイベントは、「もくもく会」を毎月開催し、MeetUpを隔月のペースで開催するようになり、参加者の人数もかなり増えました。一時は、1回のMeetUpで60名以上まで参加者が増え、開催できる会場が限られるくらいでした。

「fukuoka.exキャスト」も、現在、24名まで増えており、運営メンバー向けSlackなんかも、かなり盛り上がっています。専門分野もレベル感も様々ですが、イベント運営やコラム執筆をしたり、人によっては、アドバイザーズと共に研究分野にも参加しています。

―― connpassのメンバーも、210名(2018年11月現在)まで増えましたね。

【森】 はい、大体半年くらいで、メンバー登録が200名を超えました。

つい先日、16回目のイベントを開催したのですが、この回では、これまでの登壇・LT中心のスタイルから大きくリニューアルし、「座談会」と「モブプログラミング」主体の実践的なMeetUpへと全面改修しました。

同時に、京都で発足した「kyoto.ex」とリモートでつないでLTをやったり、都心の方ももくもく会に参加できるようにするなど、遠隔地を繋ぐ取り組みも始めています。

こうした取り組みを通じて、実践的なElixirコードを書けるエンジニアを増やす方向に、コミュニティの舵を切ったばかりですね。

f:id:paxigirl:20181205112137p:plain

「集まった人達とElixirで何かやっていこう」という流れが始まっています

【山崎】 段階でいうと、fukuoka.exは「エピソード2:仲間」が終わったところですね(笑)。現在は、次のエピソードを始めています。

オープンソースをどんどん作り、コミッターを育成しつつ、新たにElixirを始める方を増やしていく段階ですね。その中で、Elixirをガンガン書けて、コアとなるような人を見つけていこうというイメージです。

【森】 エピソード3のテーマは、「躍動」ですね。

エピソード2までは、コアメンバー中心で福岡でのイベント開催と先端研究を行ってきましたが、ここからは、都心の方のリモート参加や、福岡に移住する方も募っています。

「Elixirをやりに福岡へ来て下さい」と(笑)。

今までアクセスできていなかったエンジニアも含め、集まった人達とElixirで何かやっていこう、という新しい流れが始まっています。

この舵切りの背景には、2020~2023年付近から、事業会社/IT企業の両方で「データ爆発」が起きるのではないかという予測があります。そのカウンターとして、Elixirによるソフトウェア面のアップグレードにより、真正面から対応していく必要があると想定しています。

【山崎】 最近のPCの進化は、頭打ちになっている部分があります。動作周波数は、ここ何年か、ほとんど増えていません。でもコア数は増えているんですよね。

Elixirは、言語の設計上、そういう状況に向いているんです。コア数を増やしただけ、性能が上がっていくんですね。

Elixirは、誰もが知っているメジャーなサービスで使われてるけど、あまり知られていないので、fukuoka.exから広めていきたい

【森】 メモリのアクセスに関しても、イミュータブルなので、メモリ更新が最小限で、キャッシュが使いやすくなり、性能向上する面があります。マルチコア化しても、メモリ更新が頻発するのであれば、せっかくの並列処理も、メモリアクセスで待たされ、性能を出しきれません。

【山崎】 メモリの中身を変えることは効率が落ちること。メモリ内容を変えないなら各コアごとにコピーを置け、そのコピーで計算すればいいわけです。そうなると、お互いに通信し合う必要がないため、速度が格段に上がります。

【森】 Elixirはもともとの思想や仕組みが、根本的に他の言語と違うんです。少ないコンピュータリソースで、高い負荷に耐えられる。

Elixirを導入して、サーバ台数が1~2桁減った、なんてケースを、しょっちゅう見かけます。逆に言えば、現在、クラウドで無数に動いているクラスタやCPUは、遊んでいるか、言語の性能が悪くて詰まっている、とも言えます。

そこを開放してあげるだけで、HWを1~2桁減らす、もしくは、既存HWのまま、性能を1~2桁上昇させることも可能ということです。

また、Elixirは、今までのプログラミングに慣れている方から見ると、一見特殊な書き方に見えるかもしれませんが、慣れてくると、Elixirの方が簡潔で、書きやすく、メンテナンスもしやすかったりするんですよね。

【山崎】 ループ(繰り返し)ってあるじゃないですか。普通の言語だと、iみたいな変数をおいて配列に順番にアクセスする書き方をします。

f:id:paxigirl:20181205112236p:plain

でも、Elixirは、そういう書き方をしないんです。ひとつひとつの配列に対して「こういう関数を適用してください」という書き方をします。慣れるまでは、「iみたいなカウンターがない」と戸惑うところはあります。

【森】 Elixirは、言語のカテゴリとしては「関数型言語」なのですが、実際のところは、「データ変換言語」「分散・並列言語」と表現した方が、実態に即しているでしょうね。

私は、現業でデータクレンジングやデータ集約、AI・MLを扱うことが多いので、Elixirを「データサイエンス」の文脈で捉えており、データを扱う上での生産性の高さやメンテナンスのしやすさ、マルチコア活用含めた性能面でかなり評価していますね。

あと、通常のSI案件でも活用しています。他社では、ゲームやメッセージング等の大量アクセスの文脈でも語られていますね。

元々は、電話交換機のための利用が発祥なので、大量の小さい処理をする領域に向いているんです。なので、最近の時代に求められているドメインとの親和性が高いんですよ。

ちなみにElixirは、誰もが知っている、多くの方が使っているサービスのようなメジャーなところでも使われているんですけど、インフラ的な側面が強いせいか、それとも情報発信が少ないせいか、あまり知られていないのが残念です。

fukuoka.exでは、そういう情報も発信して、広めていきたいなぁって思っているんですよね。

入門者や学生が入りやすくなるよう、20代に運営を任せています

――裾野を広げていく動きにはどういうものがありますか?

【森】 Elixirに入門したばかりの方が集まりやすい仕組みを整えています。たとえば、もくもく会では、入門者枠を設けたり、MeetUpでは「ツイッターで実況する枠」といった、ライトな参加枠を作ったり。経験者が入門者に教えられるような仕組みも作っています。経験者も、人に教えて初めて理解できることはありますから、これは双方にとっていいことなんですよね。

【宮村】 fukuoka.exに入ってみて、初心者に優しいコミュニティだな、と思いました。最近は学生でも意欲を持った人が多いのですが、なかなか現場から教えてもらえる機会はないので。トップでやっている人が、初心者に教えてくれるというのはすごいことです。

僕も関数型言語は初めてで面食らったところがあって。ループがない、for文もない、どうしようと(笑)。なので、初心者向けコンテンツが充実しているのはありがたかったです。

Elixirを勉強してみて「すごく直感的な言語だな」という印象を受けました。

たとえば、余計な入力値チェックがない。他の言語だと、いちいち引数が正しいかどうかチェックが必要になるんですが、Elixirだと「このパターンにマッチしたらこの関数や処理を起動する」という仕組みなのである程度入力値を省略できます。これは関数型言語の特徴ですね。

また、小さく確実に動くものを連結させていくやり方なので、テストしやすく変更に強いという利点があります。ここはシェルスクリプトの思想に近いですね。このように実際にやってみると、いろんな気づきがあります。

f:id:paxigirl:20181205112317p:plain

――宮村さんのような若い人が入ってきても、スムーズに馴染めるよう、いろいろ手を打たれているんですね。

【森】 そうですね。若者への対応という点では、「世代交代」を強く意識しています。現在、20代の方に、運営の中心を徐々に任せ始めています。私やZACKYさんとかは40代といい年齢なので(笑)、後継者を作っていくことはfukuoka.ex発足時から、ずっと考えていました。

実際、後継者問題は、いろいろなコミュニティで起きているようですね。福岡でうまくいっているコミュニティは、世代交代がちゃんとできています。

私たち年長者は、どちらかというと、実務やプロダクト、経験値で戦っていく。福岡のコミュニティという枠を超えて、世界と渡り合っていこうと思っています。

【山崎】 私は大学の研究でElixirに取り組んでいるのですが、すでに世界のトップレベルでやっていることが見えてきている状況です。

たとえば、Elixirが並列処理において優位性がある、簡単に並列処理できるという発表をしたり。

今、研究しているのは、コア数のケタ違いなGPUを駆動することです。Elixirだと、すごく単純な変換でGPUを駆動できます。Pythonで駆動するよりも3倍以上速くなる、というデータも取れています。こうした研究から、機械学習やライブラリの高速化につなげていくことを目指しています。

※Lonestar ElixirConf 2019 での Hastega (Elixir で GPU 駆動) を発表

世界でもまだ、こうしたElixirの研究成果は出ていないですね。そもそもElixirの研究者が少ないということもあり、すぐに世界最先端に触れられます。隔月開催のMeetUpでは、こうした方面の仲間を募ったりもしています。

「いかに第一線のプログラマであり続けるか?」を考え、新しいパラダイムのための「学び直し」をElixirから得る

――現代のエンジニアに対して考えていることを教えてください。

【山崎】 大学の立場から感じていることですが、今は「学び直し」が必要な時代です。一回学んだものをリセットし、新しいパラダイムを習得しないといけません。

プログラミングにおいても、今までのオブジェクト指向から脱却し、新しい言語を学び直さないとついてこられない時代が迫っているんじゃないかなと。そこに対して、Elixirはひとつの解になると思っています。

【森】 Elixirだけで解決できない領域が、現在、確かにありますが、私たちは、Elixirが大好きなので、「Elixirに今、無いものはElixirでできるよう実装しちゃえばいい、何でもElixirで片付けたい」という考えでやっているところもあります。

これは、オープンソースの文化に近いノリで、そのあたりは、fukuoka.exが異色なコミュニティになっているというか、特殊なところかもしれません。

【山崎】 実例を挙げると、Elixirでドローンを飛ばそうとか(笑)。

【森】 そうそう、ドローンを飛ばしてセンサーネットワークを構築しよう、とか(笑)。京大の助教である高瀬さんという方も、fukuoka.exキャストとして、Elixir+IoTの登壇をMeetUpでやっていますしね。

【宮村】 IT業界は、学生から見ると、全ての人がプログラムを書くように見えるのですが、実際はプログラムを書く領域は、そこまで多くない、というように、学生からは実情が分かりにくいと感じます。そのため、学生での立場でコミュニティに属してIT業界の実情を知ることができるのは、すごく有益だと思っています。

【森】 プログラマとして、この業界に入っても、10年経ったら仕事がマネジメント寄りに変化して、プログラマを続けられなくなる…なんて実情もあります。そういう、中にいないと面食らうものはあるので、そうしたところも伝えた上で、「いかに第一線のプログラマであり続けるか?」みたいなところも伝えていけたらと思います。

f:id:paxigirl:20181205112450p:plain

――最後に、コミュニティについてのPRをお願いします。

【宮村】 学生には「エンジニアの勉強会って間違ったこと言ったら怒られそう」というイメージがどうしてもあるんです。でも、実際には学生の参加を快く受け入れてくれるし、特にfukuoka.exではそれが顕著だと思います。

「第二の大学」くらいの気軽な気持ちで顔を出してみると、いろいろな気づきがあります。ぜひ来てみてください。

【山崎】 Elixirは純粋に楽しい言語です。この先10年くらいは、Elixir中心にいろんなものが作れるんじゃないかと思います。他の似た傾向の言語と比べて良い部分もたくさんありますしね。

関数型言語はとっつきにくいイメージがあると思いますが、全然そんなことはないと伝えたいです。

【森】 fukuoka.exは、Elixirを学ぶことを通じて、「プログラミングの楽しさ」を純粋に共有するコミュニティだと思っています。

ですので、Elixirがどんなものか分からない方であっても、プログラミングが好きな人は、必ず楽しめるコミュニティだと言う自信があります。

プログラマーとしての将来や仕事に悩んでいる人も多いと思うんですが、そうした方にも来ていただければと思っています。そんな方々の話を聞いたり、相談に乗ったり、何か助けを与えられるような「道標」のような存在になれたらいいですね。 f:id:forkwell:20181207163916p:plain

<了>

ライター:澤山大輔


Forkwell Portfolioは、エンジニア向けのポートフォリオサービスです。 Gitリポジトリを解析して、あなたのアウトプットをグラフィカルに可視化します。

Forkwell Portfolioのご登録はこちら!

20180925152538