@thorikiriのてょりっき

@thorikiriがWebとかAndroidとかの技術ネタや本を読んだブログです

Developers Summit 2012に行ってきました 1日目

Jenkinsの川口さんも、既出でもええやないかと言ってたので自分的メモ。

16-D-1 UIのこれまでの10年とこれから @kenazuma

遅刻したので途中から聞きました。
提供者側の都合だったものが、利用者側の都合に変わってくんだぜ!ってお話です。

  • 色々マルチになる
    • スクリーン:サイズも解像度もアスペクト比
    • 入力デバイス:タッチスクリーン、音声、その他色々
    • OS・ブラウザなどなど
  • HTML5は中長期的には来るけど今すぐじゃない
    • 今は4.5と言っていい
    • パフォーマンスや開発生産性にまだ問題がある
    • Web→ネイティブではRich、ネイティブ→WebではReach、要求に合わせてRichとReachで擦り合わせる必要ある
  • じゃ、どうすんねん?
    • ipodリリースからの変化のように変化が激しいです、今後もどうなるかわからない、HTML5も爆発的によくなるかも。
    • テクノロジーを絞るのはリスクがある→じゃあどうすんの?ってのが課題
  • 今の時代ではユーザが普通に使ってて当たり前であるけれども、エンタープライズでは当たり前じゃない
    • 値段も透明化、試してから買える。
    • 短いサイクルで細やかなアップデート(サービス)が当たり前になってる。
    • つまり、値段は下げないといけないけど、アップデートは増やさないとだめ
    • グローバルだ、実際に外国産のアプリをいっぱい使ってる。
  • どうなんの?
    • 個人も組織も変わらざるをえない
  • CUIの時代のプレーヤーはマウスが出てきて入れ替わった、今はまさにそんな時代
  • NUI(ナチュラルユーザインタフェース)
    • 今頑張れる人が生き残れる
    • 音声検索とか、Kinect(商用ライセンスもある)とか
  • NintendoDSの小学5年生(?)の普及率は9割
    • タッチペン、マルチスクリーンは当たり前
    • 数年後には、私たちのユーザである
  • ユーザニーズが提供者のものを上回っている
    • これまでのプロセスを見直す
    • 何を見直す?→全て見直す
  • ペースレイヤリング
    • 変わっていくペースでレイヤ分けする
    • 切り離しておかないと、置き換え出来ない。切り離せるアーキテクチャ
  • コミュニケーション能力がより求められる
  • メッセージ
    • 自分はどのレイヤが出来る人ですか?
    • とにかく早く作る、そのために使えるものは何でも使え
    • 未来はそこにあるものではない、創りだすものだ。

Blend Book (ブレンド・ブック)

Blend Book (ブレンド・ブック)

16-D-2 非ゲーム系ソフトウェア開発者のためのゲーム開発プロジェクト入門 @pigeon6

システム系とコンテンツ系の開発の違いとUnityについて。
ゲーム開発したことない人、これからするか、1回くらいの人向け。

  • 開発プロセスが違うよ
  • システム系
    • やりたいことがはっきりしている。業務改善とか利便性とかなので、定量的判断が出来る
    • 画面設計したら並行して作れる
    • スモールスタートが可能
  • コンテンツ系
    • まずはコンテンツ企画をする
      • 技術的なことだけじゃなくて、マネタイズをどうするか、何が楽しいのかを研究して、プロトタイプを作成
      • 全体計画はプロトタイプ作った後で
    • アジャイルっぽい。他に方法はない。
    • やってみないとわからない。100体のキャラが居るから楽しい→パフォーマンス問題→10体でも面白いのか、100体が動かなくても見れるだけでいいんじゃないか?とか
    • コンセプトがブレていないかは大事
  • コンテンツは
    • やりたいことが定義出来ない、エンタテイメントは定量化出来ない
    • 出来が悪い時にリリースしたら二度と振り向いてくれない。スモールスタート出来ない
  • コンセプトワークが大事
    • ○○したら楽しくない?
    • チームで楽しさを共有
      • イメージボード、コンセプトアート、ムービーなど
    • プロトタイプ:動く企画書
      • 楽しさを言葉では説明できない。
      • Unityなら1週間でそれっぽいものを作れる
    • いかにして共有して、ズレないかブレないか
      • コンセプトは守らないと爆死する
      • ミッションステートメントをする。30秒でコンセプトを伝えられるようにしておく。
    • 初めは模倣から入るのがよい
      • 結局、面白さ、楽しさのキモがどこなのかに帰結する
    • プロトタイプ作るのは当たり前、試金石になる
      • プロトタイプ作成までは共有の予算でやる。企画が通ったら個別の予算を立てる
    • ゲームではFirst Impressionが大事
  • ゲームは料理に似ている
    • レシピを見て作れるが、ふわっとおいしいオムレツをつくるのは難しい
    • プログラムをかけるからゲームが作れるわけじゃない
    • パラメータのちょっとした違いで面白さが全然違う
  • エンジニアじゃない人が居る
    • アジャイルとかCIとかに付き合ってくれない
      • そんな人でもわかるようにしないといけない
  • Unity
    • prefabとシーンを使いこなせ
    • prefabは部品+スクリプト
      • ゲームデザイナが面白くいい感じに配置していく
    • 素材の共有はDropboxとかでやってる
  • 最後に
    • ハードウェア、グラフィックの知識のある開発者が一人は必要、はまったときのために
    • リソース生産設計大事

Unityによる3Dゲーム開発入門 ―iPhone/Android/Webで実践ゲームプログラミング

Unityによる3Dゲーム開発入門 ―iPhone/Android/Webで実践ゲームプログラミング

16-E-3 プロジェクトIchiganの目指す新しい自治体ITアーキテクチャのあり方 @HHany

大規模災害時に自治体としてどうするのか、それを考えたアーキテクチャを作ってる話
リファレンスアーキテクチャであって、実装ではない。

  • 東日本大震災のような広域大災害では、県などの自治体単体では対応出来ない
    • 姉妹都市とかで協力しましょうよ、普段から、人的交流も含めて
    • サポート、業務共存
  • 体制とモードの区別
    • 今はどんな常態化、モードがどう切り替わるのか
    • 平常時のシステムと緊急時のシステムの柔軟な移行
  • 災害時の業務、災害時の業務のためのシステム
  • 平常時の業務、平常時の業務のためのシステム
    • 災害時には、データの信頼性もセキュリティもゆるゆるにしないと成り立たない
  • アドホックに機能追加出来ないといけない
    • セキュリティとかゆるゆるとは言えども、復旧期にはもとに戻さないといけない、ログなどで追跡出来るようにしておく
  • 最後に
    • 一緒にやる人募集

16-D-4 3分ではじめるスマホアプリのビジュアル開発 高橋 智宏 氏

GUIで簡単だぜ!

  • DelphiIDEでぺたぺたはっつけると、スマホAjaxのWebアプリが出来るよ。
    • ネイティブのexeファイルが出来るから、叩けばOKだよ
  • 同じく、iOSのネイティブアプリが作れるよ
    • Win上で開発できるヨ、もちろんMacでシミュレータ動かしたいならMac必要だよ
    • CocoaAPIも呼び出せるよ
    • Xcodeにプロジェクトをコピーしてビルドするよ。Mac必要だね。

他にも色々説明してたけど、なんか製品説明とデモを延々聞かされてるようで興味が無くなったよ。

16-C-5 JavaScript 最新事情 ― 開発者なら知っておきたい次世代 JavaScript ― @dynamitter

Javascriptの歴史と今のECMAScript5と次のECMAScript6のお話。
DOMとかのそっち系の話じゃないです。

  • 歴史
    • 10日でやっつけで作った
    • MSがJScriptぶつけてきた
    • 標準化の流れがあって、ECMAに泣きついた。標準化しだすと人が集まってくるね。
    • 後方互換性無視のECMA4と後方互換性重視のECMA3.1で対立したよ
    • ECMA3.1が勝ったよ
  • ECMA5
    • IE6〜8が消えればいいね!
    • でもprototypeだから、後方互換スクリプト噛ませればいいのだよ。
      • JSONもjson2.jsで解決だよ。
      • 配列もargument.jsで解決だよ。
    • Array Extra
      • filter, every, same, reduce, reduceRight
    • Function Bind(safariでは未サポート)
      • callback関数内でのthisって何のことかわかんなくなるよね?それを解決するよ。
      • bind関数の第1引数がthisになるよ。
      • var that = thisとかしないで済むよ
      • 初期値を設定することで、引数多いヤツで省略した場合のデフォルトを定義できるヨ
    • strict mode
      • "use strict"を記述するよ
      • 未定義の変数とか、そんなSyntaxErrorを教えてくれるよ。
      • 全体でも、関数内でもOKさ
      • withとか、argument.caller/calleeは使えなくなるからね。
    • Memorization(Lazy Load)
      • hoge: function() {delete this.hoge; return this.hoge = new Large(); }
      • 一度アクセスすると、hogeにLargeが入る。アクセスしないとLargeはつくられない。パフォーマンス良い。
    • seal & freeze
      • prototypeだからオブジェクトが書き換えられちゃうけど、それを禁止出来る。
      • freezeは値の書き換えも出来ないようにする(finalみたいなもん)
  • 次世代 ECMA6 Harmony
    • より書きやすいように、大規模化してもModule化出来るように
    • サポート状況は?
    • SimpleMap
    • SimpleSet
    • WeakMap
    • ProxyからDirectProxy 実装が変わります
    • const, letが使えるようになります
      • 今のFFのconstはvarより早くなりそうだけど、遅くなることもあるからね
      • letはブロック内のへんすう
    • 分割代入(Destructuring)
      • var [a, b] = (function() { return [1, 2]; })(); で、aに1、bに2が代入みたいな。
      • 配列だけじゃなくて、オブジェクトでも出来るから、JSON形式を一発で代入出来たり出来るね
    • for ofループ
      • for inはキーで回すけど、for ofは要素で回す
    • その他
      • Iterater, Generater
      • Typed Array
      • Grobalization
  • 告知
    • 勉強会します!GPUやハードもフル活用

Firefox Hacks Rebooted ―Mozillaテクノロジ徹底活用テクニック

Firefox Hacks Rebooted ―Mozillaテクノロジ徹底活用テクニック

16-C-6 kintoneの表と裏〜大規模JavaScript開発と非構造データベース @yo_waka, @hikoma

サイボウズラボのkintone - サイボウズのビジネスアプリ作成プラットフォームを作ったときの話。
表:フロントエンド、裏:バックエンドの話です。
表側

  • 楽々フォーム画面とDB作成アプリ。
  • ドラッグ&ドロップでフォームを画面に貼りつけていく。
  • Closure LibraryとJSONで作ってます。jQueryは甘え。
  • DnDだとものすごくイベントが発生する、管理が大変、設計ちゃんとしないと死ぬ
  • クラス間通信で実現
    • DOM構造に親子関係がなくても良い
    • クラスの役割が明確になる
  • はまったところ
    • メモリリーク:イベントリスナとか、thisへの参照とかが残っちゃう
      • 地道にnullを突っ込んでいく
      • swf内でも参照を切ってく
    • 地道だけど効果ある
    • 大きい一覧画面:エンタプライズ用途だとやっぱ一覧でいっぺんに見たい要求はある
      • HTMLエディタ用のiframeが50行分あった
      • こういうのは遅延処理で解決しましょう。
      • Deferredパターンを使うと良い:コードが複雑にならない、foreachが置き換えられる
      • 全ての遅延処理が終わってから実行させられる:保存ボタンを途中で押されると困るから、最後にアクティブにする
    • モジュール数が大きい
  • 教訓
    • 大規模の時はJavascriptの設計はちゃんとしましょう

裏側

  • 自由にフォームを作れるってことは、スキーマレスです。どうしますか?
    • NoSQL?RDB?独自DB?MySQLでやりました。自社で使うことが多いから。
    • だけど、JOINとかSORTとかしないといけないよ。
  • MySQLスキーマレスする方法
    • ALTER TABLEしまくる
    • 前もって用意しておく
      • ありえない
    • データテーブルとIndexテーブルの2テーブルで解決
      • データテーブルはJSONをぶち込んで置く
      • Indexテーブルでは、どこに何があるかを保持する
      • Indexテーブルのカラム名とvalueから、データテーブルのidを把握。
    • 問題点
      • 一括更新が出来ない
      • ログとかを使って非同期でデータテーブルを更新する
    • クエリが複雑:がんばれ!

Google API Expertが解説する Closure Libraryプログラミングガイド

Google API Expertが解説する Closure Libraryプログラミングガイド

16-A-7 あの人の自分戦略を聞きたい! @t_wada, @moriyoshit, @papanda, @kuranuki, @kohsukekawa, @takahashim, @bleis, 高井氏

10分のLTとタイムキーパーとドラ娘。
@t_wada

  • 10〜12年前の達人プログラマがきっかけ
    • 常に新たな技術をあなたの知識ポートフォリオに蓄えること(うろ覚え)
    • エンジニアの人材流動が激しくなってきたので、どうするの?ってところ

プログラマが知るべき97のこと

プログラマが知るべき97のこと

高井氏

  • SIからWebへ
  • 時代を考えて、セルフブランディングしなさい
    • シンプルに時代をとらえる
      • ムーアの法則とか、少子高齢化とか
      • SIとWebは重なりあう。まだまだ未開の成長分野だ
      • パッケージ、スクラッチ、受託はなくなっていくでしょう
      • Webをインテグレーションしていく仕事になるんじゃないかな
    • 理想を管理する
      • ダイエットと同じ、コツがある
      • 体重そのものではなく、変化、傾きを管理する
      • 理想について考える。どう言う社会?どうしたら幸せに?
      • それについて自分でどういう事が出来るのか
    • セルフブランディング
      • 実力を虚飾することではありません
      • 実力を価値ある状況にすることです
      • マトリクスとコウモリ
      • マトリクスは2軸で考えて、希少なところを目指す。コウモリは二つの円の重なりあうところ

100万人が選んだ大絶賛おかず (レタスクラブMOOK)

100万人が選んだ大絶賛おかず (レタスクラブMOOK)

@bleis

  • 好きなことをみつけて結びつける
    • 好きなことじゃなければ続かない
  • 学び続ける姿勢
    • とにかくINPUTする
  • アウトプットする
    • インプットだけでは限界がある
    • アウトプットするとインプットの質が上がる、理解してないとアウトプット出来ないから
    • レスポンスがあったりする、間違いも指摘してくれる
  • アウトプットは広げる
    • ブログに書いた、終わり じゃなくて Twitterで告知するとか
    • 勉強会で発表したらブログを書くとか
    • OSS作ったら勉強会で話すとか
  • ちゃんと知ってもらうことが大事
  • 告知
    • Quick Test Switcher作ったよ! VSのアドオンです。

@takahashim

  • リスクは負わないに越したことはない。
    • 自分としてはリスク回避してきたつもり
  • 技術は目的ではなくて手段である
    • でも、技術力は大事
  • いろんなベンチャーやってきたけど、これ以上儲かるには?を考えた
  • お金が溶けていく、怖い。
    • 選択肢のひとつとして置いておくのが良いのかも
  • 1回の失敗は、次に成功することで失敗じゃなくなる!かもね
  • 良い人生を!

Rails3レシピブック 190の技

Rails3レシピブック 190の技

@kohsukekawa

  • 失敗には理由はあるが成功には理由がない
  • 情報を発信することが大事
    • Jenkinsも社内で趣味でやってた。OSSだけではなく、ブログ、勉強会
    • 「発表できるようなことは何も無いです」
      • × 誰かが1回やったことは不要
      • ○ 料理のようなもの。 高級フランス料理のシェフじゃなくも、本場じゃなくても提供出来る
    • Google+1もRetweetも発信の1つである
  • 匿名はもったいない
    • きっと繋がる
  • サービスを公開する形式も良いけど、OSSとした方が良い
  • 英語、世界の半分に届けられる
    • 出来ないともったいない
    • スペルのミスとか、文法の誤りとか気にしないよ
    • 楽しめたらいいんじゃないかな

Jenkins実践入門 ?ビルド・テスト・デプロイを自動化する技術 (WEB+DB PRESS plus)

Jenkins実践入門 ?ビルド・テスト・デプロイを自動化する技術 (WEB+DB PRESS plus)

@kuranuki

  • 大手SI → ベンチャー
  • オーナーシップ スタートアップ ビジネスモデル
    • 今は、受託+自社サービス、受託は納品のない受託
    • ライフスタイルカンパニーを目指している
    • SIのビジネスモデルを否定していた 人月モデル
    • ガラパゴスなキャリア戦略 … 稀少価値
  • オーナーシップ
    • そういう気持ち、人生のオーナーシップ
    • 会社と自分は対等である。雇用と言う契約関係にあるだけ。つまり、会社は自分にとってお金を払ってくれる客
    • 客をDISっても仕方ないじゃない 客には提案しましょうよ
    • それがないと独立しても状況は同じである
  • ビジネスモデルを考える

バグがないプログラムのつくり方 JavaとEclipseで学ぶTDDテスト駆動開発 (Be agile!)

バグがないプログラムのつくり方 JavaとEclipseで学ぶTDDテスト駆動開発 (Be agile!)

@papanda

  • 自分運用 Whyから始めよ
  • 大人数SIの限界、ジレンマ
  • サービス。。。SalesForceでの負け
  • コアとクリティカルで分析
  • 情熱プログラマー

情熱プログラマー ソフトウェア開発者の幸せな生き方

情熱プログラマー ソフトウェア開発者の幸せな生き方

@moriyoshit

  • 98 ネスケOSS化、改良できるかも
  • 00 Linux触る、ソースコードを読む習慣
    • バグのパッチを送ったら開発に誘われた
  • エンジニアの人たちから離れたので勉強会とかに行くようになった
  • 生き残れない
  • 大切なのは世界を知ること
    • 業務の世界
  • プロトコルを覚える
    • 色々、英語も、なにもかも

QA

  • 技術についていくのが厳しくなったらどうすんの?
    • 全部キャッチアップする必要はない
    • 年下の人に素直に聞けるかどうかだ
  • 稀少性でコレって言うのは>
    • やったものがたまたま希少だっただけ
    • 価値ある形でアピールすること
    • 人がやってないことを考える
    • 稀少性は相対的な物

100人のプロが選んだソフトウェア開発の名著 君のために選んだ1冊

100人のプロが選んだソフトウェア開発の名著 君のために選んだ1冊