0831 node学園lt

37
NodeでmBaaSのSDKを 書いてみた Kazuya Fukumoto

Transcript of 0831 node学園lt

Page 1: 0831 node学園lt

NodeでmBaaSのSDKを 書いてみた

Kazuya Fukumoto

Page 2: 0831 node学園lt

Kazuya Fukumoto • ニフティ株式会社

• 2年目(配属8ヶ月)

• GitHub : fuku2015

• Qiita : heppoko_dev

自己紹介

JavaScript初心者(2015/4時点)

Page 3: 0831 node学園lt

• ニフティクラウド mobile backend JS SDK ver.2.0

• https://github.com/NIFTYCloud-mbaas/ncmb_js

書いたもの mbaas github

Page 4: 0831 node学園lt

• SDK開発で用いた開発手法・環境

• GitHub活用、コードレビュー

• CI環境(自動ビルド・自動テスト、Coverage)

• OSS化

今日お話しする内容

そういう環境に新人が 放り込まれるとどうなるか

Page 5: 0831 node学園lt

• スマホアプリ開発に必要なサーバサイドの機能を提供するクラウドサービス

(mBaaS)とは

RESTful APIで連携

Android, iOS, JavaScript, Unity SDKを提供

Page 6: 0831 node学園lt

• 非OSS

• サーバ連携非対応

• 変なテスト

JavaScript SDK Before(1.0) After(2.0)

• OSS化

•サーバ連携

• CI環境整備

Page 7: 0831 node学園lt

開発手法

・README 駆動開発 ・GitHub Flow

Page 8: 0831 node学園lt

• インターフェース・使い方を先に決める

• http://deeeet.com/writing/2014/07/31/readme/

README 駆動開発

Page 9: 0831 node学園lt

GitHub Flow

master

feature

checkout

Remote repository Developer

Reviewer

commit

Local repository

pull

push

p-r

merge comment

Page 10: 0831 node学園lt

• CI環境:drone.io→Travis CI

• 自動ビルド:npm script

• スタブ:stubcell

• テストコード:mocha+chai

• Coverage計測: istanbul

開発環境

$ npm test だけで

クリーンビルド・自動テスト・Coverage計測

Page 11: 0831 node学園lt

ビルド環境

test $npm test

push

API request response

stubcell

istanbul

result

Coverage files

result

Page 12: 0831 node学園lt

コードサンプル

Page 13: 0831 node学園lt

自動ビルド・テスト

Page 14: 0831 node学園lt

Coverage計測

Page 15: 0831 node学園lt

なんかイケてる! (小並感)

Page 16: 0831 node学園lt

©鳥山 明

Page 17: 0831 node学園lt

裏の目的

若手のスキルアップ

Page 18: 0831 node学園lt

若手 is 誰?

Page 19: 0831 node学園lt

若手 is 俺!

Page 20: 0831 node学園lt

• 3人

• 相互レビュー

• スクラム開発

理想と現実

当初予定 実際

•気づいたら1人

•開発リーダーとひたすらラリー

•片っ端から書くべし

JavaScript初心者(再掲)

Page 21: 0831 node学園lt

ルール追加

Page 22: 0831 node学園lt

"test":

"nohup npm run stub:start & sleep 5

&& NODE_ENV=test mocha -R list test/**_test.js

&& npm run cov:80

&& npm run stub:stop“

,"cov:80": "npm run coverage 2>&1 | grep Lines | perl -nle 'my ($l, $c, $p, @d) = split(/[¥¥s%]+/); exit(($p > 80) == 0)'"

Coverage80%を切ると

強制的にテストが落ちる

Page 23: 0831 node学園lt

テストが落ちる=レビューされない

レビューされない=マージされない

マージされない=進まない

Page 24: 0831 node学園lt

俺たちは

テストを書くことを

http://matome.naver.jp/odai/2135499634331433101

※mocha部分入れると1万行書いた

Page 25: 0831 node学園lt

この状態で 4ヶ月走らせます

Page 26: 0831 node学園lt

完成したものがこちらです

• LICENSE・CONTRIBUTING追記

• バッチつける

• Travis CI

• coveralls

• code climate

• UMD対応

8/17 ver2.0.0-pre 公開

Page 27: 0831 node学園lt

code climate –静的解析-

※結果が悪かったら消すつもりでした

Page 28: 0831 node学園lt

• mocha+chaiを流用可能

monacaでテスト

Page 29: 0831 node学園lt

• 工数:3人月強

• LOC:2000程度

• Coverage:92.5%

進捗状況

• monaca・ブラウザテストも粗方完了

•細かい修正・エンハンス中

• ドキュメント整備が完了し次第正式公開予定

Page 30: 0831 node学園lt

• Node・JSの基本的なコードを調べずに書ける

• Git・GitHubを思い通りに扱える

• コードの質について考える習慣がついた

• 人のコードを読めるようになった

• CIの考え方・ツールの使い方を覚えた

できるようになったこと

Page 31: 0831 node学園lt

まとめ

CI環境作って新人を放り込むと、 4ヶ月で品質を意識したコードを 書けるようになって出てくる

Page 32: 0831 node学園lt

ね、簡単でしょ?

http://d.hatena.ne.jp/rikuo/20080401

Page 33: 0831 node学園lt

• ニフティクラウド mobile backend JS SDK ver.2.0

• https://github.com/NIFTYCloud-mbaas/ncmb_js

というわけで

触ってみてください! p-r待ってます!

mbaas github

Page 34: 0831 node学園lt

• mobile backend JSSDK 2.0-pre でクイックスタート(ブラウザ編) • http://qiita.com/heppoko_dev/items/2accde66add37c77db76

Qiita書きました qiita heppoko_dev

Page 35: 0831 node学園lt

会社の宣伝

Page 36: 0831 node学園lt

IoTはじめました

Page 37: 0831 node学園lt

IoTやりたい方 CI環境に放り込まれたい方

We are hiring!