エンジニアになりたい

立派なエンジニアに憧れるへっぽこエンジニアのメモ書き

LL Diver レポート

日時:8月23日
場所:日本科学未来館

聞いたセッションは以下

  1. Angular.jsをメインに開発した note にてついて
  2. それでもNode.jsをやる
  3. GMOペパボのエンジニア新人研修
  4. mozaic.fm 出張版: TypeScript and Dart
  5. アプリケーションのIPv6対応のススメ
  6. サイバー戦争 2014年から未来へ
  7. LL短歌

Angular.jsをメインに開発した note にてついて

開発環境

  • RoR + angular

注目すべき点

SEO対策

  • Phantom JS で Angularをレンダリングする荒技を検討 -> 断念
  • サーバーサイドで返すように修正

Future of JS

  • HTML/JS分離の時代から、HTML + JSの部品の時代へ
  • Googleさんの時代
    • Polymer -> 部品化、再利用性の向上
    • Dart -> JSのパフォーマンス向上
    • HTTP2.0(SPDY) -> セキュア、つなぎっぱ
    • Wear -> どこでも、どのデバイスでも

スライドURL

http://www.slideshare.net/takamario/20140823-ll-divertakamaruangularnote

それでもNode.jsをやる

歴史的な話

  • C10K問題 2001年ころ
    • 1万台のクライアントが一度に接続したらサーバが死ぬ
    • アパッチ:接続のたびにスレッド、プロセス立ち上げ
    • シンプルなhttpリクエストなら1台のサーバで10kもさばかないが
      ロングポーリングでコネクションをつなぎっぱなしとかだと問題が起きる
    • Nginxの出現でイベントループが流行り出す
    • Ruby等の言語でもイベントループも出るが採用されだす
    • しかしRuby等にはIOの同期処理があり、イベントループが台無し
  • V8 2008年ころ
    • これまでのjs処理: 構文解析 -> 実行 = 遅い
    • V8: 動的にマシン語に変換 -> 実行 = めっちゃ早い
  • Node開発者が必要としていたもの
    • C10Kを解決するイベントループ
    • 高速な非同期I/Oとそれを強制可能な言語
    • 早い処理系

Node.jsとは

  • 非同期ライブラリとインベントループモデル で動く高速かつ省リソーなJavaScript実行環境
  • WebSocket,SSEのようにコネクションを張りっぱなしにするものと親和性が高い
  • 何にでも向くわけではない

TJがGOに移った理由

  • 分散環境でたくさんのサーバと協調する仕組みにNodeが向かなかった.
  • Webアプリを作るなら使用し続ける

スライドURL

https://speakerdeck.com/yosuke_furukawa/soredemonode-dot-jswoyaru

GMOペパボのエンジニア新人研修

研修を行う意味

  • ビジョンにどうやって到達するか
  • 経営資源: 人、物、金
  • ひとを育てる

エンジニアキャリア

  • チーフエンジニア
  • アドバンスエンジニア
  • シニアエンジニア
  • 一般エンジニア
  • 新人

新卒採用

  • 社会への入り口
  • 新卒を採用する企業は適切なスキルを身につけるように導く社会的責任を負っている

研修方針

  • 問題はさておき、まずは理想的な開発について教える

スキルの内訳

  • 知識スキル
    • エンジニア一般に期待される知識
    • 現場固有の知識
  • 行動スキル
    • 社会人一般
    • 会社固有

知識スキル

  • Webアプリ開発の基礎
    • Railsチュートリアル(原書)
    • 先輩エンジニアによる支援
      • 読書会
      • 現座ので得た知見
    • Puppetを使って構築
    • 開発スタイルの習慣
  • デザイナとの協同

行動スキル

  • みんなと仲良くするこkと
  • ファンを増やすこと
  • アウトプットすること

学習モデル

  • 前提
    • 学習転移モデル
      • 確立した知識
    • 経験学習モデル
      • 経験で学ぶ
  • 徒弟制: アプレンティスシップ
    1. モデリング
    2. コーチン
    3. スキャフォルディング
    4. フェーディング
  • 正当的周辺参加
    • 仕事の中での学び
    • 共同体への参加
  • トロイの木馬
    • 現場に送り込み、いい習慣・プラクティスを広げていく
    • 現場に新しい風を吹き込む
  • 式年遷宮
    • 20年ごとに作り替える
    • 定期的に繰り返すことで伝承する

まとめ

  • 経営のビジョンの元にある
  • キャリアプランを支援する
  • 知識スキル、行動スキル
  • 知識の伝達と経験による学習をミックス
  • 会社という共同体 へうまく巻き込む

QA

  • 新人側がやる気をだすことが大事。エンジニアスペシフィック。
  • 教える側が楽しそうにする,雰囲気作り

スライドURL

http://blog.kentarok.org/entry/2014/08/23/145417

altJS 出張版 #mozaicfm

参考URL

mozaic.fm http://mozaic.fm/
わかめさんのQiita http://qiita.com/vvakame/items/ae198ac3589f569d043b

安藤さん Dart

  • dartは大規模開発向け
  • C#,Javaに書き方は似ている
  • Typescriptは現実で、Dartは夢
  • サーバ側で動くDart VM
  • クライアント、サーバどちらも同じ言語で書けるのが理想。それを目指している。
  • androidDartで書ける
  • エコシステムがいい
  • Dartが吐くJSを読まなければならなくなったら負け。
  • Dartが死ねば、Dartとともに滅びる
  • Dartは既存のものを一から作り直す。Angular Dartとか。
  • Dart VMの開発者はV8の開発者。パフォーマンスではDartが勝つ。
  • Real Worldではまだ使用できない
  • coffeescriptは過去

わかめさん Typescript

  • おかしな変更を加えるとコンパイラが検知するのでリファクタリングしやすい
  • 型があるから使っている
  • 結局JSの勉強が必要なため、もし型が無ければ使う理由はあまりない。
  • Typescriptが吐いたJSは読めるのでTypescriptが死んでも生き残れる
  • ES6,7で機能が充実して型ももちはじめたらTypescriptはいらなくなるかも
  • ただし、型定義ファイルで既存のライブラリにも型を定義できるような仕様はESに入らないのでは無いか
  • 既存のライブラリに型をつけられる。
  • 型定義ファイルをみればどんなAPIかわかる。ドキュメントとしての型定義ファイル。
  • ESのスーパーセットのため余計なものはいれない -> ESに追従できる
  • JSにできないことはできない。Dartはできる。
  • coffeescriptというかRuby的な書き方が好きではない

アプリケーションのIPv6対応のススメ

サイバー戦争2014年から未来へ

Stuxnet以降の最新ウイルス BadBIOS

  • インターネットにつながっていないところへ攻撃
  • マイクとスピーカを使って超音波で攻撃

MITで学んだこと

  • ICチップの中にバッグドアがあったりする
  • Smart Phoneの充電器からウィルス

サイバー攻撃

QA

  • Q: 日本では攻撃に関して学びにくいが海外では

LL短歌