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

0831 node学園lt

Jan 22, 2017

Download

Internet

Kazuya Fukumoto
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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!