アプリ開発を効率化する 方法あれこれ

105
アプリ開発を効率化する 方法あれこれ 面白法人カヤック HTMLファイ部 溝上篤司

description

アプリ開発以外にも適用できる効率化についてあれこれいってます。

Transcript of アプリ開発を効率化する 方法あれこれ

Page 1: アプリ開発を効率化する 方法あれこれ

アプリ開発を効率化する

方法あれこれ

面白法人カヤック HTMLファイ部溝上篤司

Page 2: アプリ開発を効率化する 方法あれこれ

アプリ開発を効率化する

方法あれこれ

面白法人カヤック HTMLファイ部溝上篤司

アプリ開発に限らない

Page 3: アプリ開発を効率化する 方法あれこれ

本日のアジェンダ

・良い名前、つけてますか?

・テスト、書いてますか?

・自動化、してますか?

・ツール、作ってますか?

の4本です。

Page 4: アプリ開発を効率化する 方法あれこれ

自己紹介

Facebook : Atsushi MizoueTwitter : asion_m

・Vimが大好きで社内で

布教&プラグイン作成なんかやってます・JavaScriptも大好きで最近仕事ではほとんどJSしか書いてません。

・麦酒が血液です。

Page 5: アプリ開発を効率化する 方法あれこれ

自己紹介

部署名は冗談のようですが

本当です。

Page 6: アプリ開発を効率化する 方法あれこれ

自己紹介

部署名は冗談のようですが

本当です。

※この部署名になってからHTML5の案件が激増したそうです

Page 7: アプリ開発を効率化する 方法あれこれ

さて

本題です。

Page 8: アプリ開発を効率化する 方法あれこれ

本題

良い名前、

つけてますか?

Page 9: アプリ開発を効率化する 方法あれこれ

良い名前、つけてますか?

例えば

HTMLファイ部

Page 10: アプリ開発を効率化する 方法あれこれ

良い名前、つけてますか?

どこからどう読んでもHTML5の制作を行う部署です。本当に(ry

Page 11: アプリ開発を効率化する 方法あれこれ

良い名前、つけてますか?

では次の変数は

何をしてるか想像できるでしょうか?

Page 12: アプリ開発を効率化する 方法あれこれ

良い名前、つけてますか?

では次の変数は

何をしてるか想像できるでしょうか?

var mvCnt;

Page 13: アプリ開発を効率化する 方法あれこれ

良い名前、つけてますか?

想像される答え

Page 14: アプリ開発を効率化する 方法あれこれ

良い名前、つけてますか?

想像される答え

・カウントアップ?・てかそもそもmvって何?・一体なんのカウントなんだ・・・

Page 15: アプリ開発を効率化する 方法あれこれ

良い名前、つけてますか?

想像される答え

・カウントアップ?・てかそもそもmvって何?・一体なんのカウントなんだ・・・

前後のプログラムを見ないとわからん!

Page 16: アプリ開発を効率化する 方法あれこれ

良い名前、つけてますか?

正解は

Page 17: アプリ開発を効率化する 方法あれこれ

良い名前、つけてますか?

正解は

オブジェクトの移動(Move)を管理する

Controllerのインスタンスでした。

Page 18: アプリ開発を効率化する 方法あれこれ

良い名前、つけてますか?

正解は

オブジェクトの移動(Move)を管理する

Controllerのインスタンスでした。

※制作者:過去の自分

Page 19: アプリ開発を効率化する 方法あれこれ

良い名前、つけてますか?

正解は

オブジェクトの移動(Move)を管理する

Controllerのインスタンスでした。

※制作者:過去の自分

爆発すればいいのに

Page 20: アプリ開発を効率化する 方法あれこれ

良い名前、つけてますか?

ちなみに

Page 21: アプリ開発を効率化する 方法あれこれ

良い名前、つけてますか?

ちなみに

無駄にした時間は1時間でした。

Page 22: アプリ開発を効率化する 方法あれこれ

良い名前、つけてますか?

今考えたような事

よくありませんか?

Page 23: アプリ開発を効率化する 方法あれこれ

良い名前、つけてますか?

良い名前をつけておけば

考えたり、調べるのに使った時間は

必要なかったはず。

Page 24: アプリ開発を効率化する 方法あれこれ

良い名前、つけてますか?

良い名前をつけておけば

考えたり、調べるのに使った時間は

必要なかったはず。

例えば

var moveCtrl;

Page 25: アプリ開発を効率化する 方法あれこれ

わかりやすい名前は効率化の第一歩

良い名前をつければ

調べる時間が減る。

Page 26: アプリ開発を効率化する 方法あれこれ

わかりやすい名前は効率化の第一歩

個人的な経験ですが、

Page 27: アプリ開発を効率化する 方法あれこれ

わかりやすい名前は効率化の第一歩

個人的な経験ですが、

Webアプリは所謂普通のWebサイトより

更新頻度が高い。

Page 28: アプリ開発を効率化する 方法あれこれ

わかりやすい名前は効率化の第一歩

故に

Page 29: アプリ開発を効率化する 方法あれこれ

わかりやすい名前は効率化の第一歩

ただでさえ読む時間が長いプログラムを読む時間が

更に長くなる。

Page 30: アプリ開発を効率化する 方法あれこれ

わかりやすい名前は効率化の第一歩

Page 31: アプリ開発を効率化する 方法あれこれ

わかりやすい名前は効率化の第一歩

キーを打つコストより理解にかかる時間のコストのほうが高くなる

Page 32: アプリ開発を効率化する 方法あれこれ

わかりやすい名前は効率化の第一歩

キーを打つコストより理解にかかる時間のコストのほうが高くなる

※いくら名前が長くなろうが補完で大体なんとかなりますよね?

Page 33: アプリ開発を効率化する 方法あれこれ

わかりやすい名前は効率化の第一歩

Page 34: アプリ開発を効率化する 方法あれこれ

良い名前、つけてますか?

✕ var sp = new Sprite();◯ var sprite = new Sprite();

✕ var av = new Avatar();◯ var avatar = new Avatar();

✕ var ext = new ExternalInterface();◯ var external = new ExternalInterface();

Page 35: アプリ開発を効率化する 方法あれこれ

良い名前、つけてますか?

省略形を

なるべく使わない。

※よく使われる省略形でもちょっと考えてみる。

Page 36: アプリ開発を効率化する 方法あれこれ

さて

では次。

Page 37: アプリ開発を効率化する 方法あれこれ

テスト駆動開発

テスト、

書いてますか?

Page 38: アプリ開発を効率化する 方法あれこれ

テスト駆動開発

「JavaScriptでテスト?」

Page 39: アプリ開発を効率化する 方法あれこれ

テスト駆動開発

「JavaScriptでテスト?」

「テスト書くの面倒臭くない?」

Page 40: アプリ開発を効率化する 方法あれこれ

テスト駆動開発

「JavaScriptでテスト?」

「テスト書くの面倒臭くない?」

「”シンプル”だからテストはいいや」

Page 41: アプリ開発を効率化する 方法あれこれ

テスト駆動開発

「JavaScriptでテスト?」

「テスト書くの面倒臭くない?」

「”シンプル”だからテストはいいや」

「テストって

何書いていいかわからない」

Page 42: アプリ開発を効率化する 方法あれこれ

テスト駆動開発

「JavaScriptでテスト?」

「テスト書くの面倒臭くない?」

「”シンプル”だからテストはいいや」

「テストって

何書いていいかわからない」

「後で書くよ後で」

Page 43: アプリ開発を効率化する 方法あれこれ

テスト駆動開発

死亡フラグです。

Page 44: アプリ開発を効率化する 方法あれこれ

テスト駆動開発

テスト駆動開発(TDD)は

効率化の手法です。

Page 45: アプリ開発を効率化する 方法あれこれ

TDDは効率化の手法

・JavaScriptこそテストを書かないと

やってられない

Page 46: アプリ開発を効率化する 方法あれこれ

TDDは効率化の手法

・JavaScriptこそテストを書かないと

やってられない

・テストを書かないほうが面倒臭い

Page 47: アプリ開発を効率化する 方法あれこれ

TDDは効率化の手法

・JavaScriptこそテストを書かないと

やってられない

・テストを書かないほうが面倒臭い

・本当にシンプルですか?

Page 48: アプリ開発を効率化する 方法あれこれ

TDDは効率化の手法

・JavaScriptこそテストを書かないと

やってられない

・テストを書かないほうが面倒臭い

・本当にシンプルですか?

・テストを書けないことは大抵書かない方が良い

Page 49: アプリ開発を効率化する 方法あれこれ

TDDは効率化の手法

・JavaScriptこそテストを書かないと

やってられない

・テストを書かないほうが面倒臭い

・本当にシンプルですか?

・テストを書けないことは大抵書かない方が良い

・本当に後から書いたことありま

すか?

Page 50: アプリ開発を効率化する 方法あれこれ

TDDは効率化の手法

JavaScriptこそテストを書かないとやってられない

Page 51: アプリ開発を効率化する 方法あれこれ

TDDは効率化の手法

JavaScriptこそテストを書かないとやってられない

・実行環境を限定することが(まず)出来ない

Page 52: アプリ開発を効率化する 方法あれこれ

TDDは効率化の手法

JavaScriptこそテストを書かないとやってられない

・実行環境を限定することが(まず)出来ない・ブラウザを限定することも(大抵)出来ない

Page 53: アプリ開発を効率化する 方法あれこれ

TDDは効率化の手法

JavaScriptこそテストを書かないとやってられない

・実行環境を限定することが(まず)出来ない・ブラウザを限定することも(大抵)出来ない・例え限定出来たとしても

Page 54: アプリ開発を効率化する 方法あれこれ

TDDは効率化の手法

JavaScriptこそテストを書かないとやってられない

・実行環境を限定することが(まず)出来ない・ブラウザを限定することも(大抵)出来ない・例え限定出来たとしても

全対象に手作業でチェックする・・・だと・・・

Page 55: アプリ開発を効率化する 方法あれこれ

TDDは効率化の手法

JavaScriptこそテストを書かないとやってられない

・実行環境を限定することが(まず)出来ない・ブラウザを限定することも(大抵)出来ない・例え限定出来たとしても

全対象に手作業でチェックする・・・だと・・・

死亡フラグ

Page 56: アプリ開発を効率化する 方法あれこれ

TDDは効率化の手法

・テスト書かないほうが面倒臭い

JavaScriptの実行環境は(ほぼ)ブラウザ。

Page 57: アプリ開発を効率化する 方法あれこれ

TDDは効率化の手法

・テスト書かないほうが面倒臭い

JavaScriptの実行環境は(ほぼ)ブラウザ。

つまりアップデートのたびに何らかの方法で動作チェックをしなければならない。

Page 58: アプリ開発を効率化する 方法あれこれ

TDDは効率化の手法

・テスト書かないほうが面倒臭い

JavaScriptの実行環境は(ほぼ)ブラウザ。

つまりアップデートのたびに何らかの方法で動作チェックをしなければならない。

死亡フラグ

Page 59: アプリ開発を効率化する 方法あれこれ

TDDは効率化の手法

・本当にシンプルですか?

なぜシンプルだと思ったのでしょうか。

Page 60: アプリ開発を効率化する 方法あれこれ

TDDは効率化の手法

・本当にシンプルですか?

なぜシンプルだと思ったのでしょうか。誰かに「シンプルだから〜」と言われた場合、

Page 61: アプリ開発を効率化する 方法あれこれ

TDDは効率化の手法

・本当にシンプルですか?

なぜシンプルだと思ったのでしょうか。誰かに「シンプルだから〜」と言われた場合、

まず間違いなく

シンプルではない。

Page 62: アプリ開発を効率化する 方法あれこれ

TDDは効率化の手法

・本当にシンプルですか?

なぜシンプルだと思ったのでしょうか。誰かに「シンプルだから〜」と言われた場合、

まず間違いなく

シンプルではない。(少なくともプログラムは)

Page 63: アプリ開発を効率化する 方法あれこれ

TDDは効率化の手法

・本当にシンプルですか?

なぜシンプルだと思ったのでしょうか。誰かに「シンプルだから〜」と言われた場合、

まず間違いなく

シンプルではない。(少なくともプログラムは)

死亡フラグ

Page 64: アプリ開発を効率化する 方法あれこれ

TDDは効率化の手法

・テストを書けないことは書かない方が良い

何のテストを書けばいいかわからないということは

Page 65: アプリ開発を効率化する 方法あれこれ

TDDは効率化の手法

・テストを書けないことは書かない方が良い

何のテストを書けばいいかわからないということは

今から何をするか

よくわかってない

Page 66: アプリ開発を効率化する 方法あれこれ

TDDは効率化の手法

・テストを書けないことは書かない方が良い

何のテストを書けばいいかわからないということは

今から何をするか

よくわかってない

死亡フラグ

Page 67: アプリ開発を効率化する 方法あれこれ

TDDは効率化の手法

・本当に後で書いたことありますか?

後から書くテストは非常に書きにくいです。

Page 68: アプリ開発を効率化する 方法あれこれ

TDDは効率化の手法

・本当に後で書いたことありますか?

後から書くテストは非常に書きにくいです。なぜなら

Page 69: アプリ開発を効率化する 方法あれこれ

TDDは効率化の手法

・本当に後で書いたことありますか?

後から書くテストは非常に書きにくいです。なぜなら

・やる気がでない

Page 70: アプリ開発を効率化する 方法あれこれ

TDDは効率化の手法

・本当に後で書いたことありますか?

後から書くテストは非常に書きにくいです。なぜなら

・やる気がでない

・そもそもテストが書きにくい

Page 71: アプリ開発を効率化する 方法あれこれ

TDDは効率化の手法

・本当に後で書いたことありますか?

後から書くテストは非常に書きにくいです。なぜなら

・やる気がでない

・そもそもテストが書きにくい

・「動いてるからいいや」

Page 72: アプリ開発を効率化する 方法あれこれ

TDDは効率化の手法

・本当に後で書いたことありますか?

後から書くテストは非常に書きにくいです。なぜなら

・やる気がでない

・そもそもテストが書きにくい

・「動いてるからいいや」

死亡フラグ

Page 73: アプリ開発を効率化する 方法あれこれ

TDDは効率化の手法

TDDは数々の死亡フラグを

回避する手段を与えてくれます。

Page 74: アプリ開発を効率化する 方法あれこれ

TDDは効率化の手法

TDDは数々の死亡フラグを

回避する手段を与えてくれます。

例:Q.「このメソッドの使い方がわからん」

Page 75: アプリ開発を効率化する 方法あれこれ

TDDは効率化の手法

TDDは数々の死亡フラグを

回避する手段を与えてくれます。

例:Q.「このメソッドの使い方がわからん」

A.「テスト見ろ」

Page 76: アプリ開発を効率化する 方法あれこれ

TDDは効率化の手法

が、しかし

Page 77: アプリ開発を効率化する 方法あれこれ

TDDは効率化の手法

コード全てに対してテストを書くのは

結構非効率です。

Page 78: アプリ開発を効率化する 方法あれこれ

TDDは効率化の手法

テストを書かなくてもいいもの

Page 79: アプリ開発を効率化する 方法あれこれ

TDDは効率化の手法

テストを書かなくてもいいもの

・ロールオーバみたいに使い古されてる・jQueryなどの一般的なライブラリ・既にテストが書かれているもの・アクセサーなど超簡単なもの

Page 80: アプリ開発を効率化する 方法あれこれ

TDDは効率化の手法

テストを書かなくてもいいもの

しかし書いた方がいい、

と思えば書いた方がいい。

※例えば「怪しい・・・」

と思った箇所だけ書く等

Page 81: アプリ開発を効率化する 方法あれこれ

TDDは効率化の手法

個人的なおすすめ

Page 82: アプリ開発を効率化する 方法あれこれ

TDDは効率化の手法

個人的なおすすめ

Jasminehttp://pivotal.github.com/jasmine/

Page 83: アプリ開発を効率化する 方法あれこれ

TDDは効率化の手法

Jasmineは

Page 84: アプリ開発を効率化する 方法あれこれ

TDDは効率化の手法

Jasmineは

・読みやすい・お手軽・必要な物が揃ってるです。

Page 85: アプリ開発を効率化する 方法あれこれ

TDDは効率化の手法

Jasmineは

・読みやすい・お手軽・必要な物が揃ってるです。

※あくまで個人の感想です

※用法容量を守ってお使いください。

Page 86: アプリ開発を効率化する 方法あれこれ

TDDは効率化の手法

実際にやってみる

Page 87: アプリ開発を効率化する 方法あれこれ

実際にやってみる

http://www.youtube.com/watch?v=iD4SgRFGltw

Page 88: アプリ開発を効率化する 方法あれこれ

さて

お分かりいただけたでしょうか。

Page 89: アプリ開発を効率化する 方法あれこれ

自動化、

してますか?

Page 90: アプリ開発を効率化する 方法あれこれ

自動化、してますか?

・js作成時にテンプレートを適用

・js保存時にgjslintを実行

・js上でコマンド実行で

テストのテンプレートを作成

etc...

Page 91: アプリ開発を効率化する 方法あれこれ

自動化、してますか?

自動化出来ることは

徹底的に自動化

する。

Page 92: アプリ開発を効率化する 方法あれこれ

自動化、してますか?

自分のやり方から最適な「自動化」を考える

・保存してミニファイ

 → 保存したらミニファイ

・html書いてcss書く

 → htmlからcssのスケルトンをつくる

・jsファイル作ってテスト用ファイルもつくる

 → jsからテストテンプレートを作る

などなど

Page 93: アプリ開発を効率化する 方法あれこれ

自動化、してますか?

http://www.youtube.com/watch?v=uxHv7nwYFko&feature=youtu.be

Page 94: アプリ開発を効率化する 方法あれこれ

では

ツールの作り時はいつなのか。

Page 95: アプリ開発を効率化する 方法あれこれ

ツール、作ってますか?

「なんかこれ前もやったな・・・」

「面倒臭いな・・・」

「誰かにやって欲しい・・・」

などなど

Page 96: アプリ開発を効率化する 方法あれこれ

ツール、作ってますか?

「でも作る時間ないし・・・」

Page 97: アプリ開発を効率化する 方法あれこれ

ツール、作ってますか?

個人的なおすすめの方法

Page 98: アプリ開発を効率化する 方法あれこれ

ツール、作ってますか?

個人的なおすすめの方法

1日30分〜1時間くらい

ツール作成に当てる。

Page 99: アプリ開発を効率化する 方法あれこれ

ツール、作ってますか?

Q.「仕事の時間なのに・・・?」

Page 100: アプリ開発を効率化する 方法あれこれ

ツール、作ってますか?

A.画面を見られても

プログラム書いてる

ようにしか見えないので大丈夫(ry

Page 101: アプリ開発を効率化する 方法あれこれ

ツール、作ってますか?

その他の解決方法

・作ったものを共有する

・意見を取り入れ徐々に汎用的にする

・息抜きにつくる(どうせ30分

などなど

Page 102: アプリ開発を効率化する 方法あれこれ

ツール、作ってますか?

今使った30分の元が

将来取れる想定なら

何も迷う必要はない。

Page 103: アプリ開発を効率化する 方法あれこれ

まとめ

・命名はすっごい大事

・テスト書くプログラマは良いプログラマ

・自動化するとめっちゃ楽

・ツール作ると楽しいよ!

Page 104: アプリ開発を効率化する 方法あれこれ

自動化ツール

制作した自動化ツール色々(ほぼvimhttps://github.com/AtsushiM

Page 105: アプリ開発を効率化する 方法あれこれ

ご清聴ありがとうございました!