アプリ開発を効率化する 方法あれこれ
-
Upload
atsushi-mizoue -
Category
Documents
-
view
27.622 -
download
0
description
Transcript of アプリ開発を効率化する 方法あれこれ
アプリ開発を効率化する
方法あれこれ
面白法人カヤック HTMLファイ部溝上篤司
アプリ開発を効率化する
方法あれこれ
面白法人カヤック HTMLファイ部溝上篤司
アプリ開発に限らない
本日のアジェンダ
・良い名前、つけてますか?
・テスト、書いてますか?
・自動化、してますか?
・ツール、作ってますか?
の4本です。
自己紹介
Facebook : Atsushi MizoueTwitter : asion_m
・Vimが大好きで社内で
布教&プラグイン作成なんかやってます・JavaScriptも大好きで最近仕事ではほとんどJSしか書いてません。
・麦酒が血液です。
自己紹介
部署名は冗談のようですが
本当です。
自己紹介
部署名は冗談のようですが
本当です。
※この部署名になってからHTML5の案件が激増したそうです
さて
本題です。
本題
良い名前、
つけてますか?
良い名前、つけてますか?
例えば
HTMLファイ部
良い名前、つけてますか?
どこからどう読んでもHTML5の制作を行う部署です。本当に(ry
良い名前、つけてますか?
では次の変数は
何をしてるか想像できるでしょうか?
良い名前、つけてますか?
では次の変数は
何をしてるか想像できるでしょうか?
var mvCnt;
良い名前、つけてますか?
想像される答え
良い名前、つけてますか?
想像される答え
・カウントアップ?・てかそもそもmvって何?・一体なんのカウントなんだ・・・
良い名前、つけてますか?
想像される答え
・カウントアップ?・てかそもそもmvって何?・一体なんのカウントなんだ・・・
前後のプログラムを見ないとわからん!
良い名前、つけてますか?
正解は
良い名前、つけてますか?
正解は
オブジェクトの移動(Move)を管理する
Controllerのインスタンスでした。
良い名前、つけてますか?
正解は
オブジェクトの移動(Move)を管理する
Controllerのインスタンスでした。
※制作者:過去の自分
良い名前、つけてますか?
正解は
オブジェクトの移動(Move)を管理する
Controllerのインスタンスでした。
※制作者:過去の自分
爆発すればいいのに
良い名前、つけてますか?
ちなみに
良い名前、つけてますか?
ちなみに
無駄にした時間は1時間でした。
良い名前、つけてますか?
今考えたような事
よくありませんか?
良い名前、つけてますか?
良い名前をつけておけば
考えたり、調べるのに使った時間は
必要なかったはず。
良い名前、つけてますか?
良い名前をつけておけば
考えたり、調べるのに使った時間は
必要なかったはず。
例えば
var moveCtrl;
わかりやすい名前は効率化の第一歩
良い名前をつければ
調べる時間が減る。
わかりやすい名前は効率化の第一歩
個人的な経験ですが、
わかりやすい名前は効率化の第一歩
個人的な経験ですが、
Webアプリは所謂普通のWebサイトより
更新頻度が高い。
わかりやすい名前は効率化の第一歩
故に
わかりやすい名前は効率化の第一歩
ただでさえ読む時間が長いプログラムを読む時間が
更に長くなる。
わかりやすい名前は効率化の第一歩
=
わかりやすい名前は効率化の第一歩
キーを打つコストより理解にかかる時間のコストのほうが高くなる
わかりやすい名前は効率化の第一歩
キーを打つコストより理解にかかる時間のコストのほうが高くなる
※いくら名前が長くなろうが補完で大体なんとかなりますよね?
わかりやすい名前は効率化の第一歩
例
良い名前、つけてますか?
✕ var sp = new Sprite();◯ var sprite = new Sprite();
✕ var av = new Avatar();◯ var avatar = new Avatar();
✕ var ext = new ExternalInterface();◯ var external = new ExternalInterface();
良い名前、つけてますか?
省略形を
なるべく使わない。
※よく使われる省略形でもちょっと考えてみる。
さて
では次。
テスト駆動開発
テスト、
書いてますか?
テスト駆動開発
「JavaScriptでテスト?」
テスト駆動開発
「JavaScriptでテスト?」
「テスト書くの面倒臭くない?」
テスト駆動開発
「JavaScriptでテスト?」
「テスト書くの面倒臭くない?」
「”シンプル”だからテストはいいや」
テスト駆動開発
「JavaScriptでテスト?」
「テスト書くの面倒臭くない?」
「”シンプル”だからテストはいいや」
「テストって
何書いていいかわからない」
テスト駆動開発
「JavaScriptでテスト?」
「テスト書くの面倒臭くない?」
「”シンプル”だからテストはいいや」
「テストって
何書いていいかわからない」
「後で書くよ後で」
テスト駆動開発
死亡フラグです。
テスト駆動開発
テスト駆動開発(TDD)は
効率化の手法です。
TDDは効率化の手法
・JavaScriptこそテストを書かないと
やってられない
TDDは効率化の手法
・JavaScriptこそテストを書かないと
やってられない
・テストを書かないほうが面倒臭い
TDDは効率化の手法
・JavaScriptこそテストを書かないと
やってられない
・テストを書かないほうが面倒臭い
・本当にシンプルですか?
TDDは効率化の手法
・JavaScriptこそテストを書かないと
やってられない
・テストを書かないほうが面倒臭い
・本当にシンプルですか?
・テストを書けないことは大抵書かない方が良い
TDDは効率化の手法
・JavaScriptこそテストを書かないと
やってられない
・テストを書かないほうが面倒臭い
・本当にシンプルですか?
・テストを書けないことは大抵書かない方が良い
・本当に後から書いたことありま
すか?
TDDは効率化の手法
JavaScriptこそテストを書かないとやってられない
TDDは効率化の手法
JavaScriptこそテストを書かないとやってられない
・実行環境を限定することが(まず)出来ない
TDDは効率化の手法
JavaScriptこそテストを書かないとやってられない
・実行環境を限定することが(まず)出来ない・ブラウザを限定することも(大抵)出来ない
TDDは効率化の手法
JavaScriptこそテストを書かないとやってられない
・実行環境を限定することが(まず)出来ない・ブラウザを限定することも(大抵)出来ない・例え限定出来たとしても
TDDは効率化の手法
JavaScriptこそテストを書かないとやってられない
・実行環境を限定することが(まず)出来ない・ブラウザを限定することも(大抵)出来ない・例え限定出来たとしても
全対象に手作業でチェックする・・・だと・・・
TDDは効率化の手法
JavaScriptこそテストを書かないとやってられない
・実行環境を限定することが(まず)出来ない・ブラウザを限定することも(大抵)出来ない・例え限定出来たとしても
全対象に手作業でチェックする・・・だと・・・
死亡フラグ
TDDは効率化の手法
・テスト書かないほうが面倒臭い
JavaScriptの実行環境は(ほぼ)ブラウザ。
TDDは効率化の手法
・テスト書かないほうが面倒臭い
JavaScriptの実行環境は(ほぼ)ブラウザ。
つまりアップデートのたびに何らかの方法で動作チェックをしなければならない。
TDDは効率化の手法
・テスト書かないほうが面倒臭い
JavaScriptの実行環境は(ほぼ)ブラウザ。
つまりアップデートのたびに何らかの方法で動作チェックをしなければならない。
死亡フラグ
TDDは効率化の手法
・本当にシンプルですか?
なぜシンプルだと思ったのでしょうか。
TDDは効率化の手法
・本当にシンプルですか?
なぜシンプルだと思ったのでしょうか。誰かに「シンプルだから〜」と言われた場合、
TDDは効率化の手法
・本当にシンプルですか?
なぜシンプルだと思ったのでしょうか。誰かに「シンプルだから〜」と言われた場合、
まず間違いなく
シンプルではない。
TDDは効率化の手法
・本当にシンプルですか?
なぜシンプルだと思ったのでしょうか。誰かに「シンプルだから〜」と言われた場合、
まず間違いなく
シンプルではない。(少なくともプログラムは)
TDDは効率化の手法
・本当にシンプルですか?
なぜシンプルだと思ったのでしょうか。誰かに「シンプルだから〜」と言われた場合、
まず間違いなく
シンプルではない。(少なくともプログラムは)
死亡フラグ
TDDは効率化の手法
・テストを書けないことは書かない方が良い
何のテストを書けばいいかわからないということは
TDDは効率化の手法
・テストを書けないことは書かない方が良い
何のテストを書けばいいかわからないということは
今から何をするか
よくわかってない
TDDは効率化の手法
・テストを書けないことは書かない方が良い
何のテストを書けばいいかわからないということは
今から何をするか
よくわかってない
死亡フラグ
TDDは効率化の手法
・本当に後で書いたことありますか?
後から書くテストは非常に書きにくいです。
TDDは効率化の手法
・本当に後で書いたことありますか?
後から書くテストは非常に書きにくいです。なぜなら
TDDは効率化の手法
・本当に後で書いたことありますか?
後から書くテストは非常に書きにくいです。なぜなら
・やる気がでない
TDDは効率化の手法
・本当に後で書いたことありますか?
後から書くテストは非常に書きにくいです。なぜなら
・やる気がでない
・そもそもテストが書きにくい
TDDは効率化の手法
・本当に後で書いたことありますか?
後から書くテストは非常に書きにくいです。なぜなら
・やる気がでない
・そもそもテストが書きにくい
・「動いてるからいいや」
TDDは効率化の手法
・本当に後で書いたことありますか?
後から書くテストは非常に書きにくいです。なぜなら
・やる気がでない
・そもそもテストが書きにくい
・「動いてるからいいや」
死亡フラグ
TDDは効率化の手法
TDDは数々の死亡フラグを
回避する手段を与えてくれます。
TDDは効率化の手法
TDDは数々の死亡フラグを
回避する手段を与えてくれます。
例:Q.「このメソッドの使い方がわからん」
TDDは効率化の手法
TDDは数々の死亡フラグを
回避する手段を与えてくれます。
例:Q.「このメソッドの使い方がわからん」
A.「テスト見ろ」
TDDは効率化の手法
が、しかし
TDDは効率化の手法
コード全てに対してテストを書くのは
結構非効率です。
TDDは効率化の手法
テストを書かなくてもいいもの
TDDは効率化の手法
テストを書かなくてもいいもの
・ロールオーバみたいに使い古されてる・jQueryなどの一般的なライブラリ・既にテストが書かれているもの・アクセサーなど超簡単なもの
TDDは効率化の手法
テストを書かなくてもいいもの
しかし書いた方がいい、
と思えば書いた方がいい。
※例えば「怪しい・・・」
と思った箇所だけ書く等
TDDは効率化の手法
個人的なおすすめ
TDDは効率化の手法
個人的なおすすめ
Jasminehttp://pivotal.github.com/jasmine/
TDDは効率化の手法
Jasmineは
TDDは効率化の手法
Jasmineは
・読みやすい・お手軽・必要な物が揃ってるです。
TDDは効率化の手法
Jasmineは
・読みやすい・お手軽・必要な物が揃ってるです。
※あくまで個人の感想です
※用法容量を守ってお使いください。
TDDは効率化の手法
実際にやってみる
実際にやってみる
http://www.youtube.com/watch?v=iD4SgRFGltw
さて
お分かりいただけたでしょうか。
自動化、
してますか?
自動化、してますか?
・js作成時にテンプレートを適用
・js保存時にgjslintを実行
・js上でコマンド実行で
テストのテンプレートを作成
etc...
自動化、してますか?
自動化出来ることは
徹底的に自動化
する。
自動化、してますか?
自分のやり方から最適な「自動化」を考える
・保存してミニファイ
→ 保存したらミニファイ
・html書いてcss書く
→ htmlからcssのスケルトンをつくる
・jsファイル作ってテスト用ファイルもつくる
→ jsからテストテンプレートを作る
などなど
自動化、してますか?
http://www.youtube.com/watch?v=uxHv7nwYFko&feature=youtu.be
では
ツールの作り時はいつなのか。
ツール、作ってますか?
「なんかこれ前もやったな・・・」
「面倒臭いな・・・」
「誰かにやって欲しい・・・」
などなど
ツール、作ってますか?
「でも作る時間ないし・・・」
ツール、作ってますか?
個人的なおすすめの方法
ツール、作ってますか?
個人的なおすすめの方法
1日30分〜1時間くらい
ツール作成に当てる。
ツール、作ってますか?
Q.「仕事の時間なのに・・・?」
ツール、作ってますか?
A.画面を見られても
プログラム書いてる
ようにしか見えないので大丈夫(ry
ツール、作ってますか?
その他の解決方法
・作ったものを共有する
・意見を取り入れ徐々に汎用的にする
・息抜きにつくる(どうせ30分
などなど
ツール、作ってますか?
今使った30分の元が
将来取れる想定なら
何も迷う必要はない。
まとめ
・命名はすっごい大事
・テスト書くプログラマは良いプログラマ
・自動化するとめっちゃ楽
・ツール作ると楽しいよ!
自動化ツール
制作した自動化ツール色々(ほぼvimhttps://github.com/AtsushiM
ご清聴ありがとうございました!