Developers Summit 2013 に参加してきた!【1日目】

とりあえず、備忘録としてメモを貼り付けておきます。
あとでインデントとか整理します!

テーマ「Action!」<<3つの世界:エンタープライズ、ソーシャル/ゲーム、スタートアップ>>
エンタープライズ ソーシャル スタートアップ

玉川憲
三谷慶一郎
伊藤直也
孫泰蔵

エンタープライズ
・大資本
・高品質
・高品質可用性
・高コスト

ソーシャル
・新技術

スタートアップ


漠然と抱いていた常識を
変化に目を閉ざすな
未来を後回しにしない


『自己紹介』
三谷慶一郎
NTTデータ経営研究所
伊藤直也
ココログはてなGREE
孫泰蔵
スタートアップ
ベンチャーの立ち上げ

エンタープライズ
エンタープライズの今までとこれから
今まで
・省力化、自動化
・信頼性、安全性を重視

重要インフラには利用され続ける
グローバルな開発が始まる

民間IT投資の伸びが異常
80年代
投資⬆
効果⬆

2000年代
投資➡
効果少し

日本は省力化、自動化は上手い
2000年代以降は違う
バックエンドからフロントエンドへ
給与システムから、営業システムへ


これから
付加価値を創出する
新サービス
迅速性
ユーザとともに構想する「デザイン型人材」
言語化されていない課題の発見
広義のアジャイルのような考え方


【ソーシャル】
二つのB2Cサービス
既存のビジネスをITで提供する
ITそのもので価値提供をする

Google➡Web2.0➡FaceBook➡PostPC

開発のトレンド

現状の課題
アプリストアの飽和
Webの大衆化

スマートフォンによるインターネットユーザーが爆発的に増えている

エンタープライズとの合流が必須になってくる
コンシュマライゼーション

Instaggram
700万人のユーザーを4人でまわしていた

オバマの選挙集金サイト

これから
建前のないベストプラクティス


【スタートアップ】
アメリカよりも投資額も起業件数もちがう

日経平均株価は10年下落
でも、57%の企業は増加している

誰でもスタートアップできる時代

 起業➡大衆化➡M&A
 ベンチャー生態系


 パネルディスカッション
 ウルトラエコシステム

 グローバル化の影響は?
 最初から英語で開発する
 ➡言語に依存しないUXになる
 ➡暗黙の共有がなくなる<>
1993年2月24日 開発開始
Hello world を出そうとする
すべてをオブジェクトとして捉えるため、芋蔓式にやることが増えた
半年後にやっとHello Worldがだせた

1995年12月0.95
だいたい盆かクリスマス前にリリースしている

2.0にふさわしいのかと自問自答して、ストッパーが自分の中でかかってしまう
RubyConf2001で2.0について言及していた
・新VMとか
YARV
・新GC
1.7で世代別GCを実装を諦める
bitmap Marking
・ネイティブスレッド
1.8はグリーンスレッド
1.9からネイティブスレッド GIL(Giant Interrpreter Lock)を実装
➡まだまだマルチコア対応ではない
JRubyはスレッドセーブ
・埋込API
互換性重視のため不採用

コア実装の置き換えを重視

現代の2.0
RubyConf2003
・キーワード引数
・新ハッシュリテラル
・メソッドコンビネーション
セレクターネームスペース


新機能
・キーワード引数
名前付きオプショナル引数
記述性が高い
順序不定
記憶想起

APIの柔軟性
読みやすさ
書きやすさ

・メソッドコンビネーション
既存クラスの装飾
➡既存のメソッド、クラスを書き換えることができる
alias method chain
➡名前衝突、名前管理が必要
CommonLisp Object Systemから引用した機能
beforeフック
afterフック
フック
純化メソッドコンビネーションを実装
Module#prepend
includeは後ろに追加
prependは前に追加する
名前重複問題解決

既存クラスの拡張
メソッドの追加
メソッドのラップ

既存の機能
オープンクラス
クラス再定義
mathn、jcode
実際の問題
➡スコープの問題、誤動作を引き起こす
スコープ限定のオープンクラス
Refinements
➡まだ実験的実装

Selector namespase
メッセージの多重化
挙動が難しい

ローカルリバインディングは不採用

プロファイル

Enumerablle#Lazy
遅延評価
遅延(Lazy)を求めるものは
怠惰(Lazy)であるw

デフォルトでUTF8

高速化


今後は?
言語としてはほぼ完成
性能改善
適用分野の拡大
マルチコア
アクター?<>
Simo Kinnunenさん
サイバーエージェント
ccufonを作った

コミュニティアプリのアドバイス

なぜ?
フロントエンドエンジニアへのアドバイスは多すぎる

基本
スマホアプリ
ブラウザアプリ
ホーム画面に追加したアプリ
ネイティブアプリ
Occtaneベンチマークソフト
iOSのネイティブは遅い

イベントデレゲーション
新しい技術ではない
正しく使われていないこともある
HEADで使うとページ読み込みが遅くても
レスポンスが早く感じられる
二つの選択がある
HEADで必要なものをロードして、domreadyを使わない
すべてjsで作る
ただし、ゲームならローディング画面があってもよい


CSSの3Dアクセラレーション
挙動が遅くなる

Androidはちょっと3Dに弱いからちゃんとテストしないといけない


レスオンシブ・タッチ
clickはtouhendより約300ms遅い
ただし
スクロール、ズームで誤動作する可能性がある
touchstartの座標を使って判断する
@sorccu

Gunther Brunnerさん
HTML5 の描画処理
バトルスロットというアプリ開発
スマホブラウザ自体のバグも多い
DOM
jQueryで実装する
CSS3
OpenGLが使える
GPUを使うと速度向上
ただし、マジックブラックボックス
CSS3 FILTER
iOSのみ
CSS3 CUSTOM FILTERS
Adobe CSS3 FILTER LAB
CANVAS
自由度は高いが、自分でやることも増える
WEBGL
これから来る技術

ライブラリ

表現力はブラウザによる
ブラウザはゲーム機と同じ
SafariPS2
Androidスーファミ
Corome ➡ 64 から PS3<<現場で役立つUX>>
仙波さん
Architect、Designeer、UX Engineer

はじめに
productには必要なこと
ennterpriseでも必要になってくる

UXとは?
ニールセン・ノーマンの定義
1 ニーズを満たすこと
2 所有、使用する楽しさ、優雅さなど

Enterrprise UX
1. 見た目のデザイン
素人が作ったように見えるサイトは信頼性が低い
レイアウト
整列と余白

一貫性
メリハリ

デザインのパターンを使うといい感じになる
ポスターなら、真ん中にタイトルやメインイメージ

アプリケーションは?
基本的には一緒

2. 行動のデザイン
ユーザーの行動を観察する

行動をデザインするには?
コンテキストを考える
どういうユーザー?
どういう状況?
何をする?
ストーリーがある

これまでは機能をモデリングしていた
これからは行動をモデリング
➡家具のショッピングサイト

コンテキストに応じて変える
PCなら100%の機能
モバイルなら30%で十分

どう感じるかを自分で体験する
試行錯誤を繰り返しながら作る


3. 現場への適用
経営的な視点からの実行リスト
これまで

これから
UXの必要性を認識
開発者、お客様、デザイナー、経営陣、ユーザー
アジャイルと相性が良い
UXの担当者を設置

ユーザビリティテスト<<サスティナブルなSIを実現する開発基盤のあり方>>
SIオワコン?

SIerの内部での世代間のギャップがある
マネジメントと技術のどちらかを重視してしまう

ITサービスの米国化
内製化の促進
クラウドの活用
技術の標準化
オフショアの促進

でも、米国ほど進まない 労働環境の違いのため
でも、SIは続く

ITは益々重要になる
顧客を通じて社会と繋がれる。それがSIの良さ

これからのSI
プティック型SI (専門分野に特化したSI)
↔デパート型の逆
もっと顧客よりのサービスをしたい
➡価値あるITサービスを提供し続ける

サスティナブルなSI
➡なくなったら困る人を増やす

サスティナブルでないSI
➡価値がなくても作る
➡自分の成果物にだけ興味を持つ

どうしたらサスティナブルなITサービスを提供できる?
➡ソフトウェア開発の視点+ITサービスの提供
SERVQUAL
有形性、信頼性、保証性、応答性、共感性

開発環境の改善
JIRAで顧客とのコミュニケーションツールにしていた
Git
➡分散開発が増えた
CI
➡リリースサイクルの高速化
SSO
➡導入するときの管理コストを減らす

デモムービー

まとめ<<こわくない関数型言語>>

関数型言語ってこわい?
中野さん
OCaml
関数型の基準は?
関数型が値でわたせっる?
参照透過性がある?
形推論がある?
関数型はプログラミングスタイルの一つ

そもそも関数とは?
数学的な関数の定義

入出力の集合
言語に関係なく実現できる

関数の何がいいの?
モジュール化しやすい
再利用性の向上
最新の研究の恩恵が受けられる


こわくないSML#
上野さん
SML#
関数型言語を実用的な言語にしたい!
C言語との高い互換性

こわくないScala
for Java Programers
水島さん

関数型の概念を理解する必要がある?
少しずつ考え方を変えよう
タイプ数が少ないJavaになることを恐れない
ループ➡再帰再帰高階関数
implicitなんとかを使う必要がある?
読む時になってから勉強すればいい
使えると超便利
関数型なコードを書かないと叩かれる?
普通に教えてくれる
言葉遣いが端的になることはある