メモしました。風邪を引いてビアバッシュ行けなかった。
エンジニアリングの物語り 人に語るに値するカルチャー Pete Sodering 氏
企業文化を作り上げるために物語が一番手っ取り早いという話を例を上げて解説。物語が企業の実際の歴史だとすると、文化を意図的に作り上げる事は出来ないのでは無いかという気がした。
- 企業文化とは? 意見の差異を解決したり、問題を解決する能力。
- 多様性とか、コードの重視とか、OSS のサポートととか、リモートワークの推奨とか、卓球台とか、犬とか、、、
- 企業文化には犠牲にする物がある。トレードオフを伝えるには「物語」が一番良い。
- 本の紹介 『Sapiens - a Brief History of Humankind』 : Yuval Noah Harari
Twilio (Telephony) の例
- Twilio の CEO はプログラマ。エンジニアは Twilio が好き。
- ASK YOUR DEVELOPER キャンペーン。Enterprise に売り込む際に、開発者に聞けと宣伝した。
Google の例
- Autonomy : Google はマネージャが嫌い
- 2002 年にマネージャをほとんど消した。 -> 無茶苦茶になり失敗。必要最低限のマネージャを設けたが今でも少ない。
- 20% ルール : 一週間のうち一日は好きな事をする。Gmail、Ad sense など様々なサービスを生み出した。
- Trade-off : Alphabet 再編 (この話はよくわからなかった)
Facebook の例
- リリース列車: コードを入れると内部リリースされる仕組み。
- Facebook の新入社員は入社二日目にリリース列車にコードを投げなければならない。
- Trade-off : Facebook が大きくなりすぎて、CEO 自ら MOVE FAST WITH STABLE INFRA と方針転換。
Etsy の例 (自分の作品の売ります買いますサイト)
- 開発者は責任を持つ。QA に気軽にコードを投げてはならない。
- 開発チェックリストを元に、新しいコードの影響を確認してからリリースする。
Netflix の例
- 2008 年コードが肥大化してシステムが3日ダウンした事をきっかけに Microservices を導入
- 30 の別々のチームが各モジュールを管理。安定性が格段に挙がった。-> Conway's Law (アーキテクチャは組織の鏡)
Pivital Labs の例
- XP とペアプログラミングを導入。初心者もベテランも学び合う。
- 自社内で教育出来るので、社員引き抜き競争に無縁。 Code as Craft
ポスト ムーア時代のコンピューティング 佐藤一郎氏
ここ5年くらいでハードはもう速くならないのでソフトで何とかしましょうという話。私の好きな話題。日本の高齢化と同じく、本当に影響が出て混乱が始まるのが楽しみ。
- 現在 20nm - 14nm プロセス
- 微細化のスピードが落ちている。Intel は 3 年で二倍に修正
- 半導体製造技術の限界 5nm 程度までは可能だとされている。
- 電力的な限界: 計算量あたりの消費電力は下げ止まり
- 新しい技術は Blockchain だけ。
- 今遅いソフトはずっと遅いまま。
- 計算量あたりのクラウド利用量は下げ止まり
- 最新コンピュータを買っても性能が上がらない。
- ユーザの関心は運用ハードウェアを長く使うかになる。
- ポストムーア時代の改善策はまだ分からない。カンブリア紀
- メニーコア
- メモリバスの輻輳のため、16 - 32 コアが限界では?
- マルチスレッドプログラミングは難しい
- 大量メモリ
- 不輝発生メモリ(NvRAM)
- 専用ハードウェア GPU
- サーバの数を増やしてカバー
- Rack-Scale (CPU 同士やメモリ同士をまとめて高速ネットワークで結ぶ)
- AI 処理向けチップ
- ソフトウェア技術者に求められること
- 余計なトランジスタを使わない
DNA が考える自動運転技術を利用したサービス 木村秀夫氏
ロボットタクシー株式会社(DeNA)車を電話に例えると、ようやく端末がネットに繋がった時代。
DeNA の自動運転事業
- ロボットシャトル: 私道での移動サービス (20 km 程度の低速で巡回) フランス製車両 LIGIER を利用
DNA は車を作ったり自動運転技術を作らない。
- モビリティサービスプロバイダー
- クラウド、ユーザ、オペレータ、車両の管理
- 技術: まだまだ無理 -> 限定エリア。サービス範囲を限定する。
- 法規制: 運転手の存在を前提している。-> 法規制の動きはある(2020 年までに法規制すると首相が名言)。限定地域からスタート。
- 社会受容性: 精神的ハードル -> ひたすら実証実験。
2020 マイルストーン
自動運転車両をスマホで呼び出す。
- 神奈川県藤沢市湘南ライフタウン, 仙台、伊勢志摩等で実証実験やデモを行った。
自動運転技術
- センサー -> 状況判断 -> 行動計画 -> 制御実行
サービス技術
- 目新しい事は特にしていない。普通のアプリケーション。
- 「普通の」インターネットサービス技術が活用出来る。
今後の課題
- セキュリティ/冗長性/
- サービスの質向上: 高齢の方が使うので電話対応必須では?
大人エンジニアにも役立つ IoT プロト環境としてのビジュアルプログラミング言語 Scratch 石原淳也氏
デモが沢山あって大変楽しかった。
- Scratch 2〇〇 series
- Scratch2Sphero : ラジコンのおもちゃを動かす
- Scatch2MCPI : Minecraft Pi
- Scratch2Romo : iPhone をガンタンクのように動かす。
- Scratch2MiP : 倒立二輪ロボの制御
Scratch2MiP の仕組み
- Scratch 1.4 に備わった Remote Sensor Protocol で 42001 ポートを開ける
- Scratch2MiP (node プログラム) で MiP と通信
- MiP ロボットを送る。
Scratch2 ではRemote Sensor Protocol の代わりに ScratchX を使う。
- ScratchX とは拡張可能 Scratch (beta 版)
- その他タブから、github pages 上の javascript コードを読み込んでブロックを拡張する。
- ScratchX だと、既存のブロックを拡張出来る (日本語ブロックが使える)
ScratchX x Arduino : センサScratch2HTML : Arduino と組み合わせると、センサの音を Website 上で公開出来る。
オブジェクト・関数型プログラミングからオブジェクト・関数型分析設計へ 浅海智晴氏
関数型言語好きな人が実用性を一生懸命アピールする発表で勉強になった。
関数型プログラミングの技術革新
- 型クラス : 代数的構造 (Monoid, Monad)
- モナド : I/O 処理
- Reactive Streams : 大規模データ、イベント駆動、ストリーミング
- 次の技術革新 -> 証明プログラミング
背景(Needs)
- 大規模データ処理
- リアクティブ Reactive Manifesto http://www.reactivemanifesto.org
- 数学/計算機科学の理論が基盤技術に: 大規模データ処理、確立統計、人工知能
Reactive Streams
- http://www.reactive-streams.org
- FP のメリットを享受しながら I/O 処理を記述
FP まとめ
OOP と FP のミスマッチ
Serverless Architecture 伊藤直也氏
デモとかに最適では?まさかこれから関数型言語フィーバーするのではという希望を感じた。大好きなリアクティブモデルがこんなに日の当たる存在になって目頭が熱くなりました。
- サーバレスアーキテクチャとは?
- FaaS Function as a Service を使ったシステム
- ステートレスな FaaS がリアクティブ、Microservices、コレオグラフィへと導く (???)
- 運用が楽でスケールして安い
- サーバレス -> Shared Nothing -> 必要なときだけ計算 -> イベント駆動
- Reactive, Microservices, オーケストレーションからコレオグラフィ (???)
サーバレスアーキテクチャ
- 常駐プロセス的な「サーバ」が無い。Function as a Service (FaaS) を前提にする。
- FaaS の例: AWS Lambda
- HTTP Request、S3 アップロード、Kinesis ストリーム (ログ)、Email、
module.exports.hello = (event, context) => { context.succeed({message: "hello, " + event.query.username }) } $ serverless deploy
- Lambda function はサーバレスで実行される。
- コンテナで実行される。
- 実行時に作成されて、終了時に破棄される。
- 常駐プロセスではない、CGI に近いモデル (モダン CGI)
- Lambda function はステートレス
- スケールしたかったらもっと起動すれば良い
- AWS Lambda はスケールするし安い
- 計算したぶんしか費用がかからない。一桁二桁違う。
- サーバレスアーキテクチャとは
- FaaS を利用した設計
例: 書類選考 -> Slack に push
CGI との違い
- 並行性能に難がある。
- メモリフットプリントが大きい。
- C10K 問題
- イベント駆動モデル (node.js)
- select() / epoll()
- メモリフットプリントが小さく、高い並行処理。
- 可用性に何がある。落ちる時は全部落ちる。
- AWS Lambda
- 起動が十分に高速なら、都度実行が良い
- 小さな関数の組み合わせ
- FaaS は自然と Microservices になる
オーケストレーション vs コレオグラフィ
- オーケストレーション: 舞台の指揮者が指示。
- コレオグラフィ: ダンサーへの振り付け。舞台に指揮者はいない。
- 「スターバックスは2フェーズコミットを使わない」
- レジの店員は注文の印を付けてキューに送る。
- 間違った飲み物を作ったら、払い戻しでは無く飲み物を捨てて作り直す。
- コレオグラフィは疎結合でスケーラブル
- 一方で同期呼び出しの方が単純で、適切に機能しているかが分かりやすい
- Microservices を指向するならコレオグラフィ
HTML5 / フロントエンド開発最前線 白石俊平氏
- 一例として、http://techfeed.io の宣伝
- 2016年2月 Firefox OS 開発終了
- 2018年 Google Chrome アプリ終了
- HTML5 の検索トレンドは現象している。
- Extensible Web: Extensible Web Manifest (2014)
- 2010 年ごろまでユースケース主導で API が増えた。
- 抽象度が高すぎるため、ユースケースにハマらないケースでは使いにくい。折角作った API が使われていない。
- 低レベルの API を組み合わせて使う。
- 盛り上がりに欠ける。
- W3C と WHATWG で分裂している。
Web の利点
- Secure
- Linkable : DeepLink アプリの深い所にリンク出来る。
- Indexable : App Indexing アプリを直接起動出来る。・
- Composable
- Ephemeral
- クロスプラットフォーム iOS, Android, サーバ node.js 色々使える。
- Javascript は世界で最も人気のある言語
- まだまだ進歩がやまない。
- AMP Accelarated Mobile Pages : 外部キャッシュ、高速レンダリングを前提とした制約付き Web page
新しい Javascript
- Javascript Module
- 実装が追いついてないので、モジュールハンドラで、import / export を js コードに変換出来る。
- 非同意処理 Promise, async / await
「ステージ」の考え方で、新しい機能がどんどん追加され標準化されていゆく。
コンポーネント指向開発
- アプリを部品で分割して扱う
- SPA Single Page Application : HTML 一枚で Javascript で全部書き換える。
- SPA では、CSS の ID やクラス名が衝突する。
- 追加要求 ブックマーク対応とか (URL ルーティング)
- Web Component