fukuoka.ex#33+清流elixir#14 Elixirのマクロについて学ぶ会

2019/11/15(金)19:00 〜 21:30 開催
ブックマーク

イベント内容

会場に来れない方もリモートからZoomで参加可能です(清流Elixir側のページよりお申し込みください)

東海地方のElixirコミュニティ「清流elixir」とジョイントしてのイベント開催!

fukuoka.ex#33:「Elixirのマクロについて学ぶ会」

今回のfukuoka.ex#33では、東海地方のElixirコミュニティ「清流elixir」とリモートで繋ぎ、Elixirのマクロについて学ぶ会を開催します!

Elixirにはマクロというメタプログラミングの仕組みが備わっており、言語仕様の拡張が可能です。

メタプログラミング -Elixir School-

Elixir言語自体の実装や、代表的なライブラリの実装にはこのマクロが利用されており、コードリーディングをしていくにはこのマクロの挙動を理解する必要があります。

そこで今回、清流Elixirと一緒にプログラミングElixirを題材に、マクロについて議論しながら学習する会を開催します。

これから勉強していくという会ですので、

  • マクロは聞いたことあるがさっぱりわからない
  • なんとなく挙動は分かるが、利用したことはない

という状況でもOKです。ぜひお気軽にお越しください。

お申し込みについて

リモート参加の方は以下の清流Elixir側のイベントページよりお申し込みください

https://elixir-sr.connpass.com/event/153220/

福岡の会場(前回と会場が異なり、Engineer Cafeでの開催です)に来られる方は、このイベントページよりお申し込みください

開催:2019年 11月 15日 (金) 19:00〜21:30(18:50 受付開始)

場所:Engineer Cafe(最寄駅: 天神)

住所:福岡市中央区天神1丁目15番30号

※ 前回のイベント会場と異なります、ご注意ください。

タイムテーブル

時間 発表者 内容
18:50-19:00 - 開場
19:00-19:10 (全員) 軽く自己紹介 & 先にマクロについて予習
19:30-19:40 (全員) 清流Elixirさんと接続
19:40-21:20 (全員) プログラミングElixirのマクロの章を進める
-21:30 - 閉会

持ち物

  • ノートPC
  • お好きなお菓子とお飲み物
  • 書籍
    • プログラミングElixirをお持ちいただけるとスムーズに学習ができると思います
    • なくてもイベント参加は可能です

なお、ゲストWifi利用可能ですので、Pocket Wifiやテザリング端末は無くても大丈夫です

福岡Elixirコミュニティ「fukuoka.ex」とは?

「fukuoka.ex」は、大量アクセスのあるWeb・APIサーバ構築や、ビッグデータ分析/AI・機械学習向けデータ加工といった、「膨大なアクセスやデータの高速処理」と「高い開発効率」を両立できる関数型プログラミング言語「Elixir」と、そのWebアプリケーションフレームワーク「Phoenix」を福岡で広め、ワイワイと盛り上げていくコミュニティです

Elixirは、シンプルな言語仕様により、「プログラミングが初めて」という方でも比較的とっつきやすく、同時に、関数型言語にありがちな複雑さ(トリッキーな構文、数学やアカデミックに走り過ぎる、等)無しに関数型の強力さだけを抽出した、現実のアプリケーション開発を行うエンジニアに寄り添ってくれる言語です

Phoenixは、Webアプリケーションの世界では、最もメジャーな「Ruby on Rails」を作っていたメンバーによって開発された、大量アクセスと高速分散の捌きが得意なWebアプリケーションフレームワークで、Rails同等の高度なWebアプリ開発を、とても気軽に行えます(中でも、WebSocket性能は、あらゆる言語のFW中でも最速)

「fukuoka.ex」では、MeetUp(登壇会/勉強会)やプログラミング入門会、もくもく会、ハッカソン等を通じて、「Elixir/Phoenixの習得機会」と「実際のアプリケーション開発に役立つノウハウ」の提供を定期的に行うことで、福岡でのElixirプロダクション採用を増やし、Elixirに触れることで得られる「プログラミングの楽しさ」を福岡のエンジニアに体感する機会を増やすことをビジョンに掲げています

~ Elixir/Phoenixの現状について ~

Elixir/Phoenixにとって2016~2018年は、マルチコアのCPU全てをフル活用できる「Flow」「GenStage」や、GenStageを基盤とした「Dynamic Supervisor」がリリースされ、Phoenixもwebpack対応が進んだりと、Elixirならではの独自色を出しながら、「Elixir/Phoenixでプロダクト開発やSI案件開発を不自由無く行える」フェーズへと進化しています

githubに登録されているElixirライブラリも、36,000件を突破し、2年前の7,000件程度と比べ、5倍以上へと急増しました

2014~2015年付近は、Elixirも未だ未成熟で、「Erlangを覚えなければElixirは使えない」という認識が一般的でしたが、現状は、Elixir単独で充分にプロダクト開発/SI案件開発を行えています

更に2017年には、GCP(Google Cloud Platform)でのElixir正式採用、といった追い風もありました

福岡においても、Elixir/Phoenixをプロダクト開発/SI案件開発で採用されるケースが増え、他言語よりも明らかにレスポンス速度が速いWeb+DBが数日で構築できた事例や、1年以上ダウンせずに運用が回った事例など、実運用の実績も増えています(福岡以外でも、LINEやニコニコ動画、mixi、gumiでの活用事例もあります)

全世界で見れば、2014年は、200社程度しか採用していなかったのが、2016年は1,100社を超え、現在は、ゲームサーバだけに限らず、フィンランドやスウェーデン、イギリスを始めとする、金融/証券/SNS/メッセージング基盤などの分野で活用されており、世界的にも有名なSlackやDiscordでも積極的に活用されています

今は、まさにElixir/Phoenixを始めるには、もっとも美味しいタイミングと言えるでしょう

「でもElixirって、使いづらくて覚えにくい『関数型言語』でしょ?」

一般的に「関数型言語」と言えば、言語の習得が難しく、組織として選定しづらいイメージがありますが、Elixirは、言語仕様や構文がシンプルかつ簡単なので、「育成や習得の容易性」を切り捨てること無く、関数型のメリットも享受できます

関数型のメリットは、以下の通りです

  • 状態が無いことで、同じ入力を何度行っても同じ出力しか返さないので、意図しない挙動にならない
  • 変数がイミュータブル(作成後にその状態が不変)なので、マルチスレッドや並行処理で競合しない
  • プログラム構造が小さな関数群で構成され、シンプルに保たれるため、変更容易性が向上する
  • 少ないコードで、凝縮度の高い高度な処理が書ける
  • リスト設計に慣れていくと、他言語で数百行かかる複雑な処理も、数行のコードで組むことが可能になる
  • できあがったコードは、オブジェクト指向言語の1/100の量になることもあり、見た目も100倍エレガント
  • オブジェクト指向言語経験者の移行は大変(関数型全般に言える)だが、移行後は、何倍も生産性が高まる

更に、「Elixirならでは」の以下メリットも上乗せされます

  • 習得がカンタンなので、プログラミング経験が無い入門者・初級者向け
  • 関数の引数でのパターンマッチが可能で、呼出時の事前条件チェックや関数呼び分けには、快感すら感じる
  • JSONパースが得意なので、Google APIやBacklog API等、様々なWeb APIとの連携に強い
  • マルチコアCPUを簡単にフル活用できる
  • マルチクラスタ(AWS、GCP、Azure)のスケールアウトも楽々実現
  • 長期間の安定運用を実現してきた「Erlang VM」の元で動作する
  • データ変換とバイナリデータ検索に特化しているので、ファイルヘッダ解析やIoT/ドローン制御にも向いている

実際に、Elixirがどの位カンタンに習得できるかと言うと、たった3つの関数を覚えるだけ、30分~1時間もあれば、Web+DB/Web+API/Webグラフ表示まで実現できてしまいます

通常の関数型言語と一線を画す、このElixir/Phoenixのパワーを直接体感してみたい方は、「ExcelでElixirマスター」シリーズをご覧ください

fukuoka.ex Slack ワークスペース

elixir.jpワークスペースの招待URL https://t.co/jdWYtTwKIM?amp=1

※こちらからご登録をお願いします

質問等ございましたら、チャンネル#fukuoka-exでご質問よろしくお願いします!

注意事項

※ こちらのイベント情報は、外部サイトから取得した情報を掲載しています。
※ 掲載タイミングや更新頻度によっては、情報提供元ページの内容と差異が発生しますので予めご了承ください。
※ 最新情報の確認や参加申込手続き、イベントに関するお問い合わせ等は情報提供元ページにてお願いします。

関連するイベント