JavaScriptエンジニア向け!
スマートフォンで動くブラウザゲームの作り方
79枚なので、しらいしさんより早く終る予定です(^o^)/
ワークフロー 編
ただ、今回はJavaScriptエンジニア向けなので、JavaScriptエンジニア向けに話したいと思います
突然ですが
チケット管理はJSerがおすすめ
理由
- JSerはプロジェクトの最初より後半が忙しい
- チケットは大抵JSerへ一番最後に回ってくる
- サーバサイドとマークアップの繋ぎこみが多い
つまり
- JSerはプロジェクトの最初より後半が忙しい
- 最初にタスク管理の流れを作って後半別の人へ引き継ぐ
- チケットは大抵JSerへ一番最後に回ってくる
- サーバサイドとマークアップの繋ぎこみが多い
具体的な流れ
ワークフロー
- ディレクタがタスクリストを作る
- 作業者全員で見積もり
- エンジニアがチケット化する
- 1日に一回タスクリストをアップデートする
- 2週間に一度これを繰り返す
ワークフロー
- ディレクタがタスクリストを作る
- 作業者全員で見積もり
- エンジニアがチケット化する
- 1日に一回タスクリストをアップデートする
- 2週間に一度これを繰り返す
各項目に関して解説します
ディレクタがタスクリストを作る
- ディレクタはSpreadsheetsを元にタスク(ユーザストーリー)リストを作る
- タスクには「大項目」、「中項目」、「詳細」、「重要度」を設定
- タスク1個は2日程度で終るもの
- 重要度は4~5段階くらい
- 重要度1段階にタスク10個くらい
- 2週間でどの重要度までを目標にするか決める
作業者全員で見積もり
- 2点式の「見積もりポーカー」で時間を出す
(説明が容易なのでストーリーポイントは使っていません)
- 見積もり時間はすべて加算して計算
- 作業人数によって優先度を決める
(関連する作業者が多い場合優先度が高い)
- チケット化に必要な簡単な設計も行う
(チケットに含めて欲しい情報の洗い出し)
- 一番重要度の高いタスクのみチケットを切る
(基本的には10個前後)
- 見積時に決めた優先度、実装に必要な情報を記述
(画面仕様、URL、テンプレートファイル名等、必要な情報はすべてチケットに書く)
- チケット完了後の対応もチケットに書く
(「チケットを終了してください」、「nnに関して追記してxxさんへ回してください」等)
1日に一回タスクリストをアップデートする
- Spreadsheetsの各項目に関して情報を更新
(このへん自動化したい。。。)
- 一番高い重要度のタスクがはけてきたら次の重要度のタスクをチケット化する
- ディレクタがタスクリストを変更したい場合このタイミングで変更
(あまり大きく変更しないようにしてます)
「エンジニアが主導できて」、「簡単に導入できること」を主眼にしています
QA
- 大変じゃないですか?
- 見積もり時間は正確ですか?
- どのくらい時間がかかりますか?
- 注意点は?
QA
- 大変じゃないですか?
- 見積もり時間は正確ですか?
- 不正確ですが、毎回同じだけ不正確なので2,3回繰り返せば目安になります
- どのくらい時間がかかりますか?
- 見積もりが2,3時間、チケット化で2,3時間、更新が10分程度です
- 注意点は?
- クオリティの担保と、中長期的なスケジュールとの兼ね合いは別途対応が必要です
ワークフロー編 完
実装詳細 編
実装詳細 編 目次
- フレームワーク
- 開発ツール
- 単体テスト
- 使用、検証した外部ライブラリ
- 採用しなかったもの
- アニメーションツール
- はまりどころ
- その他
フレームワーク
- jQuery+自作(内容は大体jQueryMobileと同じ)
- $('a').live('click')での画面遷移制御
- location.hashでのパーマネントリンク
- テンプレートエンジン、dispatcher
$('a').live('click')での画面遷移制御
- $(document).delegate('a', 'click')とか
$(document).on('click', 'a')と同じ
- a[href]を$.getして、内容を
$('#contener').html()する
- JSの初期化が不要になる
(スマホでjQuery読み込むと+500ms。初期化だけでも+300ms)
- 画面遷移にエフェクトを付けられる
- ログアウト、サーバエラーには注意
テンプレートエンジン、dispatcher
- サーバサイドとクライアントサイドでテンプレートを分けたくなかったのでJSでテンプレート処理
- クライアントサイドでテンプレート使えるといろいろ便利
- 過去に3回くらい作ってたので流用
- dispatcherで、サーバレスポンス、ページ描画をイベント化
- Backbone.Routerのようなもの
実装詳細 編
- フレームワーク
- 開発ツール
- 単体テスト
- 使用、検証した外部ライブラリ
- 採用しなかったもの
- アニメーションツール
- はまりどころ
- その他
実装詳細 編
- フレームワーク
- 開発ツール
- 単体テスト
- 使用、検証した外部ライブラリ
- 採用しなかったもの
- アニメーションツール
- はまりどころ
- その他
単体テスト
- 自作したライブラリ単位ではざっくりテストを記述
- エンバグ防止を目的としたのでテストはかなり浅い
- 基本的には機能追加時とバグ発見時にテストを追加
- ツールはQUnitを使用
- ただ、最近はJsTestDriverの使用を検討してます
実装詳細 編
- フレームワーク
- 開発ツール
- 単体テスト
- 使用、検証した外部ライブラリ
- 採用しなかったもの
- アニメーションツール
- はまりどころ
- その他
使用、検証した外部ライブラリ
- jQuery
- iscroll.js
- jquery.flickable.js
- flipsnap.js
- jquery.mockjax.js
- underscore.js
一通りコードは読んで使用してますが、固定フッタ(擬似iframe)をうまくやるのは結構大変。。。
実装詳細 編
- フレームワーク
- 開発ツール
- 単体テスト
- 使用、検証した外部ライブラリ
- 採用しなかったもの
- アニメーションツール
- はまりどころ
- その他
採用しなかったもの
- jQueryMobile
- Backborn.js
- Zepto.js
- CoffeeScript
- Require.js, LAB.js
採用しなかったもの
- jQueryMobile
- Backborn.js
- Zepto.js
- CoffeeScript
- Require.js, LAB.js