fukuoka.ex#26: Nervesトレーニング in福岡

日程: 2019/07/06(土) 09:30 〜 17:30

会場: GeekStudio 福岡県福岡市中央区舞鶴1-9-3(天神朝日プラザ1204号室)

主催: fukuoka.ex

ハッシュタグ :#fukuokaex
募集内容

Nervesトレーニング: 無料

先着順
9/10

fukuoka.ex#26: Nervesトレーニング in福岡

今回のfukuoka.ex#26はこれまでのMeetupやもくもく会とは異なり、fukuoka.exのIoT芸人こと takasehidekiによるNervesのハンズオンを開催いたします

NervesはIoTボード上で動作する最小構成のLinuxブートローダ+Elixir実行環境+各種デバドラのパッケージセットで、Lonestar ElixirConf 2019でも複数のセッションがあり、Elixir × IoTの文脈で最も活発なプロジェクトです

Nerves

そんなNervesに関するトレーニング “Device to the Cloud with Nerves and NervesHub” の教材を takasehideki が開発者であるJustinとFrankから譲り受け、全国各地で広めているのがこのトレーニングです
(このトレーニングに関する発表資料はコチラ)

ElixirでIoTやるのに最もアツいNervesを学習するにはこれ以上ないコンテンツとなっております

Nerves Training

開催:2019年 7月 6日 (土) 10:00〜18:00(9:45 受付開始)

場所:GeekStudio

住所:福岡市中央区舞鶴一丁目9-3 1204号室

タイムテーブル

  • 進行は目安で、柔軟に変更します。また適宜休憩を挟みます。
  • 会の終了後、希望者による懇親会(会場外)を考えています。当日アナウンスいたします。
時間内容
09:15-09:30開場(受付開始)、懇親会費徴収
09:30-09:45概要紹介
09:45-10:30Elixir.Circutisによる外部デバイスの制御
10:30-12:00NervesによるIoT開発の基礎
12:00-13:00昼食休憩
13:00-14:30NervesHubによるデプロイ
14:30-15:30Scenic連携によるUI操作
15:30-17:00Phoenix Channels連携によるゲーム開発
17:00-17:30バッファ・いろいろ議論

参加条件

  • 簡単なターミナル操作ができる方(基本的にCUI/IEx進行です)
    • 全くのプログラミング初心者はご遠慮ください。
    • Elixir/Phoenix開発 または 組込みプログラミングのどちらかは分かっていたほうが楽しいです。
  • 英語の資料でもひるまない方
    • 説明はもちろん日本語です^^;
    • 英語資料にある程度は日本語で補足を追加していく予定です
  • (あると嬉しい) ガジェット好きなココロをお持ちの方 or OSS活動に貢献したい!の気概をお持ちの方

持ち物

  • macOSまたはUbuntuのノートPC
    • root権限、ssh接続機能、USBポート1口が必要です
    • ごめんなさいWindowsはWSL込みで非対応です,,,
      dual bootまたはVMでUbuntu(18.04推奨)を用意してください。
  • microUSB – USBケーブル
    • USB-CなノートPCの方は変換アダプタもお持ちください
    • 通信機能と給電機能の両方があるものをご用意ください(百均などのものだと、片方しか無いことがあります)

事前準備

参考情報

Nerves co-authorであるJustin Schneck氏が日本にやってきます!

https://swest.toppers.jp/keynote/

  • SWEST21: 第21回組込みシステム技術に関するサマーワークショップ
  • 日時:9月5日(木)-6(金)
  • 場所:下呂温泉水明館

こちらもぜひ参加を検討してください!!

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

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

image.png

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

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

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

「でも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マスター」シリーズをご覧ください

エントリー先

https://fukuokaex.connpass.com/event/133408/