Developers Summit 2012 (1日目)

毎年行ってるデブサミに今年も行って来ました。 手前味噌ながら撮った写真やメモを載せていきます。 #WikiのアレになってるヤツはそのうちちゃんとHTML化します…w   ちなみに、自分のブログだと↓な感じ。もう何年もずっと行ってる。 ・2005("デスクとベッドの間"。くぅー。) ・2006(肝心のまとめは別HTMLっぽいけど、どっかいっちゃった的な…) ・2007(この歳ははてなダイアリーに書いたんだなw) ・2008(転職後) ・2009(このページの半分くらいから) ・2010(もう最近やね) ・2011(去年〜)

  ■【16-C-1】HTML5の今と未来 ~HTML5との正しいつきあい方~ 羽田野 太巳 氏   この講演は聴けてよかった。↓のような感じで未来に希望が持てたというか。   ・これからはブラウザがネイティブになる。  今までOSレベルでやってたような事がブラウザから出来る。   ・HTML、JavaScriptCSSといったウェブの技術で  あんなことやこんなことも出来るようになる。     **HTML -実は今まであまり進化してこなかった --今まではルビ(振り仮名)すらふれなかった --HTML5になってようやく<ruby> とか出来るように

**HTML5 -膨大なAPIの集まり。数百ページの本でもごく一部しか網羅できない。

**ウェブとは -元々はドキュメントだった。アプリケーションじゃない。 -JSはドキュメントのための小道具的位置づけ。 -失われた10年 --W3CのHTML4の勧告は1999年。XHTML1.0は2000年。

**プラグインがウェブを牽引 -RIA -ウェブの進化はプラグインの進化

**HTML5 -FlashとかSilverlightとかで出来ることがWeb標準で出来るようになった -こういう標準は一気に広まるのではなくて、少しずつ。

**Apple -Flash禁止 -リッチコンテンツHTML5で作らないといけない --いやがおうにも取り組まなければならない

**Adobe -モバイル向けFlash開発を終了 -AndroidではFlash動くけど --Google Chrome For AndroidFlash非搭載。

**IE10 -Silverlightすら動かない(自社で作ったものなのに)

**もはやWebではHTML5しか選択肢がない

**imode(1999年 Docomo) -ケータイにブラウザ。革新的。Webをケータイに。 -2011年世界であらゆるデバイスがウェブ化

**HTML5API -マルチメディア、2D/3Dグラフィックス -スレッド、ストレージ、デバイス連携(加速度センサーとか) --本来はOSレベルでやりくりしてた -つまりWebブラウザが基盤になる、ということ。 -ウェブページではない。あくまでもアプリケーション。

**APIによって以下のような事が出来る -スレッド WebWorker -ファイル/ディレクトリ FileAPI、FileWriter -グラフィックス Canvas -オフライン Application Cache -双方向リアルタイム通信 WebSocket -カメラ/マイク MediaCapture/WebRTC -GPS Geolocation API -ジャイロスコープ/加速度センサ DeviceOrientation Event -バッテリ BatteryStatusAPI -ネットワーク接続情報 The Network Information API --まだこなれてないけどね

**マルチデバイス -ビデオオンデマンド --Hulu, Netflix ---パソコン、スマホXBoxプレステ3、テレビ -Buy Once, Read Everywhere -Pay Once, Play Anywhere -書籍もゲームも海外では当たり前になってきてる

**アプリ経済 -数十万人の雇用を生み出している

**企業 -端末を企業が配布するのではなく -社員個人デバイスで社内システムにアクセス -Bring Your Own Device -会社の端末より自分の端末の方が。。。 -会社が買うと5年10年使おうとする。時代に合わない。 -企業のMISは世界中で頭を抱えている

**ネイティブアプリ -Java,Objective-C,.Net,,,現状の課題 -HTML5でWriteOnce,RunAnywhere --経営層が注目してるとこ -ウェブというテクノロジがOSと同じような基盤へ。

**基盤のシフト -OSからブラウザ -プログラミング言語JavaScript

**IPAの技術者試験 -C,Java,Perlだったけど、今年からPerlが落ちてECMAScript(JS)が採用された --世の中変わってきてる

**まだそこまでいってない -PhoneGapやTitanium --シンプルなものであればコレでOK

**OperaWidgets -普通のアプリはウェブベースのテクノロジ -インストーラー的な感じで配布 -Operaがランタイム

**Chrome OS -ネイティブアプリという概念がない -ブラウザがネイティブ -年賀状以外は大体OKなはず --オンラインプリントサービスもあるけどね

**Windows8 -レトロスタイルのアプリはHTML5で作れる -ウェブをランタイムに

**組み込み機器の進化 -iPhoneデュアルコアチップ -タブレットスマホクアッドコアの時代

**Netflixの利用端末 -CE(家電) Devices:70%、PC&Mac:30%

**業務用端末 -専用カスタマイズは凄い高い -汎用端末+アプリでOK -レジとかにも。

**SmartTV(サムソン) -テレビはスマホが巨大になったようなもの -タッチパネルではなくリモコン使う -テレビもアプリ化していく

**OperaTVStore -HTML5がテレビの世界でも基盤に

**ACCESS -テレビ向けHTML5ブラウザ

**デジタルサイネージ -看板のデジタル化、オンデマンド化 -汎用端末でいいじゃない。

**鏡がタブレットに? -歯磨きしながらニュースみれたり -CORNING(スマホタブレットのガラス) --あらゆるものがディスプレイ化

**Internet of Things -ネットワーク基盤は日本はイケてる -けど、端末があまりなかった --ユビキタスを実感できなかった -Web of Thingsへ

**未来 -アスカネットの空中ディスプレイ -サムソンのガラスがタッチパネルディスプレイ。ブラインドも出来る

**放送と通信の連携 -Web andTV -Lime -HbbTV

**App基盤 -Windows8 Metro-Style -Chrome OS -Boot2Cecko -WebOS -WAC -ネイティブという概念がない

もうウェブはウェブだけに閉じない。ネイティブ化。 我々が持ってるスキルは新たな世界へのチャレンジ。 プレゼンはWindows8のIE10で。リモコンはサファリで。WebSocket。加速度センサーで。     ■【16-C-2】大規模化するピグライフを支えるインフラ ~MongoDBとChefについて~   サイバーエージェントさんのインフラがイケイケな感じなのを 知ることが出来て、スゲーなー!って印象を受けました。     ピグライフの話 -ピグのキャラクターを利用したガーデニングゲーム -三週間で100人。今は300万以上 -20万同時接続 -クライアントはFlash -サーバはNode.jsとMongoDB -静的コンテンツはNginx

**なぜMongoDB? -node.jsと相性よい -サクッとスキーマ変更

MongoDBの構成 -mongodをシャーディング -mongos(APサーバのローカル)からmongoc(シャーディング情報保持)に問合せ -RepolicaSets --アプリのコストは軽くスケーラビリティを担保 -今は140台運用。 -mongocはスケーラビリティない。 -mongodは定期的にディスク書出しするので性能必要。 --メモリはあればあるだけ乗るから潤沢に。 -index --exlpainでbtreeを確認出来たりできる -バックアップ --fsyncコマンドでレプリケーション止めて取得 -グローバルロック --ガッツリ固まる。けど、今後コレクションロックが出てくる予定。 -チャンクの偏り --データ量かオブジェクト数で自動分割 --2.0からオートバランスが頭良くなってる -新しいプロダクトなのでバグを踏むことも多い --段々安定化してきてる -シャーディングやレプリカセットと柔軟なデータ構造はナイス   CAさんのインフラ -サーバ構築:来週までにサーバー30台とか。 -イベントに合わせて数十台追加とか。

**そこでChef -Rubyで出来てるソフトウエア。DSLでホゲホゲ出来てナイス。

**なぜChef? -数十台、数百台ってなると、、 -スピーディーにやらないと、、 -人為的なミスとか怖い、、 -シェルじゃだめなの? --ディストリビューション差分の吸収とか

**Chefの構成 -Node、Role、Cookbook

Chef使ってみて -レシピの記述は直感的でナイス -シェフサーバーのセットアップは面倒だけどパッケージでイケる。 -実際に動かさないで確認だけってのができない(今のところ) -SEO的に厳しい。SquidでRecepeとかガチのイカ料理のページとか出てくるw -PXEとキックスタートと併せて使って電源をいれたらある程度な状態に出来てる! -もちろんEC2でもレシピは使える -Scriptリソースは使わない。 --独自でなんかやると後から痛い目にあう ---例えばxxってファイルがある時ーって条件とか追加すると ---次回流す時、そのファイル消してから流すような事しなきゃいけないから ---何度でも自動で流せる時だけ使う -environmentってのが出てきた。 --開発環境とか本番環境ってのが指定出来る     ■【16-B-4】アジャイル開発の10年と今後を語ろう。 平鍋 健児 氏   この話はハンパ無かったなぁ。今回のデブサミで自分の中でベスト講演   XP白本の紹介 -ちゃんとしたシステム作るってなんだ? --プログラマなら誰もが思ってたこと -リリースしたらお客さんとシャンパンのボトルをあけなさい!の記述にぶったまげた。 -KentBeckお前は俺か!って思うくらい思ってる事が書いてあった。 -第二版はKentBeckは奥さんと一緒に書いた。ナイスエピソード -平鍋さんのマインドマップから --尊重が5つ目の価値に加わった -価値、原則、実践 --他の本でも見る構造

**リファクタリングの紹介 -翻訳した人たちと話してると、、 --なんか印税ドンドン入ってくるんだよねぇ~。まだ売れてるんだそう。 -XP本の中でも紹介されてて、この本の中でもXP本を紹介してる。 --循環参照

**達人プログラマー -新しい言語を毎年一つーとか。 -その後にこの本の著者がRuby本出したよね。

**平鍋さんのマインドマップ -書籍とかWebサイトとか。 -アレみたいな…。

**リーンて何だ -無駄をなくす -トヨタ生産方式。 --車を誰かがほしいって言ったら作る --欲しいって言わない限り作らない -価値の流れをみえるように細く早く流す -現場が一緒にやる -在庫の量を絞る --ドキュメント化されてないとか、要求が出きってないとか。 --要求があるものだけ作る

**ソフトウエアかんばん -ウォーターフォールでも有効だし、1週間っていう単位は工程に限らず区切れるだろう -プロジェクトファシリテーション --かなりウケた。2004~2006年は相当いろんなところで講演した --アジャイルだけでないところでも。

**アジャイルディベロップメント -スクラムからもうちょいXPに回帰

**アジャイルサムライ -大阪で基調講演があるらしい -会場も読んだ人多数 -現場感があるからウケるんだろう。

**今ホットな本 -David AndersenのKanban -Eric RiesのThe Lean Startup --Tim O'Reilly他著名な人が前書き書いてる --Build->Measure->Learn

**100人のプロが選んだソフトウエア開発の名著

**どのアジャイル手法?2011のsurvey。 -スクラムが半分 -スクラムとXPのハイブリッド -9%はカスタムハイブリッド

**これから、、 -プロセスっていう考え方や方法論が薄れてくる --プラクティスをどう集めて適応するか --方法論よりも文脈 -スクラム --開発のプラクティスは持ってないからハイブリッドになる -Kanban --今やってるやり方を付箋紙に書いてから。 --今やってる事を見える化してから。 -アリスタコバーン。End of methodology -薄いフレームワークに足していく --現場が乗ってこない --現場参加型じゃないとだめ。トヨタ生産方式的にも。 --改善のアイデアなんてやってみなきゃわからない --重たいメソドロジをもってるようなところはダメかもね

**日本から、何かだそう! -イノベーションスプリント --ジェフと野中さん ---考えた人が現場の最後までやる。スクラムそのもの。 -やる事と考える事をわけてはいけない --やらないと分からない事が多い。 --知的体育会系。Intellectual Muscle。スゲー英語w -マーケティング部門と開発部門とーとかってステークホルダがたくさん --優先順位が決まらない --野中先生のアイデア: んー、合宿しなさい ---1日で形式的な話は終わる ---2日にお前は誰でどういう意図で動いて ---3日でスムーズに決まるだろう。 ---温泉がある方がいいw -PDCAっていうけども… --"P"って?

永平寺 -修行システム。750年続いている -修せざれば現れず --Without Practice, No Emergence -やる事と考える事が分けられるか?分けられない。     ■【16-A-5】node.jsテクノロジースタック for ソーシャルアプリケーション Robert J. Gould 氏 / 久富木 隆一 氏   GREEさんのNode.jsの話。 ガッツリ正面からちゃんと取り組んでるんだなぁって印象を受けました。     Robertさん -普通に日本語。10年くらい住んでるらしい -Node.jsのスタックを作ってる

**久富木さん -GREEの前はWebブラウザの開発をしていた

**Node.js -会場の大部分の人が使ってる -V8上のJS(JITコンパイル)はそこらへんのスクリプト言語よりも早いらしい

**Githubで人気No.1はJavaScript -2番目はRuby。続いてPython,Shell,Java,PHP,,,

**イベント駆動のノンブロッキングI/O -大量データのリアルタイム処理に向いてる -C10K対応。同時接続がパないときにOSのネイティブなとこを使える

**GREEのNode.js -Strict Mode -クライアントとサーバでコードを共用(node-browserify) -long-stack-traces -非同期のコード書いてもちゃんとエラーがハンドリングできるように拡張 -Githubエンタープライズで社内リポジトリ管理

**Mobile -モバイルデバイスAndroid,Safari,WindowsくらいなのでHTML5でやりやすい -Socket.io --JSONのオブジェクトを簡単にやりくりできる --WebSocketがサポートされてなければAjaxでやりくりしてくれる -電車の中とかしょっぱいネットワーク状況にどう対処する? --WebStorage ---静的コンテンツ系はローカルで保持

**Node.jsの注意点 -まだ若い。バグってる時は自分が悪いかNodeが悪いか…的な所がある。 -なんかあった時は自分達で調べる。Node.jsのソースも読む。 -CPUリソースをシングルスレッドでーみたいのは弱いからキャッシュとか。 -レンダリングとかはクライアント側で。JSONだけWebSocketでクライアントに。

**Clusterモジュール -簡単にfork出来る

**Redis -キャッシュ&プロセス間通信に採用 -KVSってだけじゃない。 --String --List --Set(共通の友達ーとか、おすすめーとか) --Hash(セッションデータとか) --Ranking(友達の中で一番xxとか) --PubSub -MySQLで上記をやろうとすると結構大変 -WebSocketとRedisのPubSubシステムを融合 --どっからでも同じようなインタフェースになるからおいしい

**DBに負荷をかけない -モデルで型情報や制約チェックをあらかじめやっておく

**MySQL -RedisもMongoDB(考えてる)も、ほんとに困った時に大丈夫かわからないから -大事なマスターデータは今のところ全てMySQLにとっといてる

**レガシーコードとRestAPI -透過的なAPI。 -裏がRedisでもRDBMSでもMongoDBでもなんでもいいように。

**Seq -GREEでかなり拡張している -アホみたいなアクセスでスタックオーバーフローとか起こるから。 -トップレベルのエラー投げないように拡張して狭い範囲でハンドリングできるように

まとめ -大量データのワークロードには向いてる -PubSubバックエンドで水平スケーリング -レガシーコードはRestAPIでラッピング -DSL,DSL,DSL -ロゴが6角形なのがGREEとNode.jsは共通しているw     ■【16-A-6】いまどきのi18nのはなし 藤本 真樹 氏   今年のデブサミで一番勉強になったのはこのセッションだったかなと思います。 やってる仕事とリンクしてるっていうか。世界に出てこうとするとぶつかる壁。     会場への質問 -ICUって知ってる人? --3人くらい -UnicodeにあるNFCってしってる人? --3人くらい --#NFKCだったら使った事あったんですけどね…

**Why i18n? -アプリ作ったら多くの人に使って欲しい。 -世界中で使ってもらえるようにするために。

**ガラケーからスマホへ -世界中で利用できる。

**GREEのレガシー -EUC_JPとかw

**世界的にみて -日本の方が凄いんじゃ?って思う事も多い -全然戦えると思う

**UTF-8 -NFC/NFD/NFKC/NFKD -絵文字 --コレをどう扱うかは答えが出てない

**"あ"に濁点とかは? -NFCだったら分裂、NFDだったらガッチャンコ。

**問題 -サロゲートペアでたまに4バイトになるとか -イロイロあるけどライブラリのデファクトスタンダード化 --ICUでいいよね --unicode.orgってのがあって~。CLDR(Common Locale Data Repository)

**標準 -RFC5646 - 言語タグ --language-script-region --language ISO639 --script ISO15924 --region IS3166 --中国はznとか

**gettext -そんなに簡単じゃない -WordOrder --言語によって"prefer %s to %s"は"%sより%sの方が好き" ---順番逆じゃね?ってのはICUによって解決

**数字 -JPN 12,345,678.901 -CHINA 12.345.678,901 -CANADA 特徴的

**日付 -国によってだいぶ違う

**レイアウト -言語によって幅が変わる -幅とか全然違う。特定のフレームワークとかない -キッチリ幅決めたレイアウトとかどうするの?

**画像の文字は? -Facebookは全言語のLikeボタンがある。 --画像に文字入れるのはやめといた方が…

**JavaScriptが悩ましい -XSSがおきやすい -Googleクロージャー?Gettextみたいなヤツ。 -クライアント側でメッセージカタログ全ダウンロードとか無い -サーバサイドでJSを作ってクライアントに? --クライアント側のキャッシュとかどうする?

**Bi-Di -アラビア語は右から左に。 -世界で4億人。世界で5位。 -無視出来ない。 -カヤックのアプリがクエートでとかいうニュース --アレ英語だよね?英語でいいんじゃね?

**通貨価値の違い -どうアプリを提供していくか? -為替リスクとかも考えないと -どこからのアクセス? --IP?クレジットカード? --完全じゃない

**フォーマット -複数形(1diskと2disksとか)=>ICUで解決出来る

**タイムゾーン -誕生日とか。いつ?JSTUTC? -国によっては一日丸まる終わるタイミングってとこもある。 -MySQLでData型で保存すると、それどこ?みたいになったりするから気をつけろ。

**カルチャー -動物とかファンタジー系とかNGみたいなとこもある。 -国別のFeature Flagみたいので対応することが多い

**法律的なこと -成人。18だったり、20だったり、21だったり -個人情報。EUとか厳しい -コンテンツの審査は国ごとに異なる

**ベーシックなこと -MessageFormat with ICU --Incremental Resource Update -UTF-8 --MySQLならutf8mb4(utf8ではない) --charcter-set-server=utf8mb4 -TimezoneはUTC --MySQLならDateよりDatetime --表示はClientでJSで調整。Google Closureにナイスなライブラリ。

**レガシーはどうする? -一個一個やってくしかない。 -テンプレートはフィルターとかかけるくらいでOKだったり。 -DBに大量のujisとか。 --Alterするのがベストだけど。。 -RDBMS --Incremental Update --アプリとの間にフィルターかましてやれば、、 -最終手段、、 --EUCで使われてないバイトを突っ込んで判別に使ったり --UTF-7?? --KVSは? ---悩ましい…。Prefixみたいのつける感じで。。

パーフェクトじゃないけど無いより全然マシみたいには出来る -1言語を2言語にするのは大変だけど、 -2言語を3言語にするのはそんなに大変じゃない     ■【16-A-7】あの人の自分戦略を聞きたい!   LT的な感じ。 Linkedinの経歴に沿ってとかって流れにしてくれたら もっと盛り上がったんじゃないかな?とか思いました。     高井さん -SIerからCookpad

**bleisさん -プログラミングはじめて10年くらい -シンプルなのが好き --gitなんてオブジェクト4つしかない。 --関数型言語は捉えようによってはめっちゃシンプル。 -本を読む。勉強会にいく。 -インプットだけじゃだめ。アクトプットする。 -アウトプットすればインプットの量が増えて質もあがる。 -ブログ書いたらツイートする。発表したらブログに書く。

**高橋さん -達人出版会 -Web屋から電子書籍屋へ -平社員から代表取締役 -技術は目的ではなく手段 -なかなかビジネスがうまくいかない。 -預金残高はどんどん減っていく。 -恐怖。おすすめできない。。

**川口さん -自分から情報を発信していく -小さいプロジェクトをオープンにしてたらアメリカから声がかかった。 -ジェンキンスは趣味でやってたら今は仕事になってる -せっかく情報発信するなら実名で。 -ソースも公開しないとレバレッジがきかない。人間同士の繋がりとか。 -英語。何かやった時には英語で。スペルや文法のミスなんて気にしない。 -会場はかなりジェンキンスユーザーと知ってる人が多い

**倉貫さん -SonicGarden --プログラマを一生の仕事に。IPOとか狙ってない。 -環境を活かす。どんどん社外活動を。 -自分の舵は自分できる。 -会社と自分を対等に。 --会社は給料をくれるお客様。 --言われた仕事をするんじゃなくて提案していく。 --辞めるとか、独立するなら、まずは会社に提案してみる

**市谷さん -自分の主観で見え方が変わってくる -パンダが上野に帰った

**小泉さん -ソース読んでフィードバックしてたらPHPのコミッタに -過学習と局所解 -複数の見方重要。いろんな人と話す。

 

デブサミ10周年記念本買ったら缶バッジ付いてきた! andこれ系のイベントでお約束のO'REILLYガチャガチャやったよ。   晩飯は目黒駅前の天一で食いました〜   にしても、前の会社でスゲーお世話になった1個上の先輩に会えたり、 自分の中では外せないイベントです。