0831 node学園lt
TRANSCRIPT
![Page 1: 0831 node学園lt](https://reader030.vdocuments.mx/reader030/viewer/2022021416/5883d1951a28abb7308b6a17/html5/thumbnails/1.jpg)
NodeでmBaaSのSDKを 書いてみた
Kazuya Fukumoto
![Page 2: 0831 node学園lt](https://reader030.vdocuments.mx/reader030/viewer/2022021416/5883d1951a28abb7308b6a17/html5/thumbnails/2.jpg)
Kazuya Fukumoto • ニフティ株式会社
• 2年目(配属8ヶ月)
• GitHub : fuku2015
• Qiita : heppoko_dev
自己紹介
JavaScript初心者(2015/4時点)
![Page 3: 0831 node学園lt](https://reader030.vdocuments.mx/reader030/viewer/2022021416/5883d1951a28abb7308b6a17/html5/thumbnails/3.jpg)
• ニフティクラウド mobile backend JS SDK ver.2.0
• https://github.com/NIFTYCloud-mbaas/ncmb_js
書いたもの mbaas github
![Page 4: 0831 node学園lt](https://reader030.vdocuments.mx/reader030/viewer/2022021416/5883d1951a28abb7308b6a17/html5/thumbnails/4.jpg)
• SDK開発で用いた開発手法・環境
• GitHub活用、コードレビュー
• CI環境(自動ビルド・自動テスト、Coverage)
• OSS化
今日お話しする内容
そういう環境に新人が 放り込まれるとどうなるか
![Page 5: 0831 node学園lt](https://reader030.vdocuments.mx/reader030/viewer/2022021416/5883d1951a28abb7308b6a17/html5/thumbnails/5.jpg)
• スマホアプリ開発に必要なサーバサイドの機能を提供するクラウドサービス
(mBaaS)とは
RESTful APIで連携
Android, iOS, JavaScript, Unity SDKを提供
![Page 6: 0831 node学園lt](https://reader030.vdocuments.mx/reader030/viewer/2022021416/5883d1951a28abb7308b6a17/html5/thumbnails/6.jpg)
• 非OSS
• サーバ連携非対応
• 変なテスト
JavaScript SDK Before(1.0) After(2.0)
• OSS化
•サーバ連携
• CI環境整備
+
![Page 7: 0831 node学園lt](https://reader030.vdocuments.mx/reader030/viewer/2022021416/5883d1951a28abb7308b6a17/html5/thumbnails/7.jpg)
開発手法
・README 駆動開発 ・GitHub Flow
![Page 8: 0831 node学園lt](https://reader030.vdocuments.mx/reader030/viewer/2022021416/5883d1951a28abb7308b6a17/html5/thumbnails/8.jpg)
• インターフェース・使い方を先に決める
• http://deeeet.com/writing/2014/07/31/readme/
README 駆動開発
![Page 9: 0831 node学園lt](https://reader030.vdocuments.mx/reader030/viewer/2022021416/5883d1951a28abb7308b6a17/html5/thumbnails/9.jpg)
GitHub Flow
master
feature
checkout
Remote repository Developer
Reviewer
commit
Local repository
pull
push
p-r
merge comment
![Page 10: 0831 node学園lt](https://reader030.vdocuments.mx/reader030/viewer/2022021416/5883d1951a28abb7308b6a17/html5/thumbnails/10.jpg)
• CI環境:drone.io→Travis CI
• 自動ビルド:npm script
• スタブ:stubcell
• テストコード:mocha+chai
• Coverage計測: istanbul
開発環境
$ npm test だけで
クリーンビルド・自動テスト・Coverage計測
![Page 11: 0831 node学園lt](https://reader030.vdocuments.mx/reader030/viewer/2022021416/5883d1951a28abb7308b6a17/html5/thumbnails/11.jpg)
ビルド環境
test $npm test
push
API request response
stubcell
istanbul
result
Coverage files
result
![Page 12: 0831 node学園lt](https://reader030.vdocuments.mx/reader030/viewer/2022021416/5883d1951a28abb7308b6a17/html5/thumbnails/12.jpg)
コードサンプル
![Page 13: 0831 node学園lt](https://reader030.vdocuments.mx/reader030/viewer/2022021416/5883d1951a28abb7308b6a17/html5/thumbnails/13.jpg)
自動ビルド・テスト
![Page 14: 0831 node学園lt](https://reader030.vdocuments.mx/reader030/viewer/2022021416/5883d1951a28abb7308b6a17/html5/thumbnails/14.jpg)
Coverage計測
![Page 15: 0831 node学園lt](https://reader030.vdocuments.mx/reader030/viewer/2022021416/5883d1951a28abb7308b6a17/html5/thumbnails/15.jpg)
なんかイケてる! (小並感)
![Page 16: 0831 node学園lt](https://reader030.vdocuments.mx/reader030/viewer/2022021416/5883d1951a28abb7308b6a17/html5/thumbnails/16.jpg)
©鳥山 明
![Page 17: 0831 node学園lt](https://reader030.vdocuments.mx/reader030/viewer/2022021416/5883d1951a28abb7308b6a17/html5/thumbnails/17.jpg)
裏の目的
若手のスキルアップ
![Page 18: 0831 node学園lt](https://reader030.vdocuments.mx/reader030/viewer/2022021416/5883d1951a28abb7308b6a17/html5/thumbnails/18.jpg)
若手 is 誰?
![Page 19: 0831 node学園lt](https://reader030.vdocuments.mx/reader030/viewer/2022021416/5883d1951a28abb7308b6a17/html5/thumbnails/19.jpg)
若手 is 俺!
![Page 20: 0831 node学園lt](https://reader030.vdocuments.mx/reader030/viewer/2022021416/5883d1951a28abb7308b6a17/html5/thumbnails/20.jpg)
• 3人
• 相互レビュー
• スクラム開発
理想と現実
当初予定 実際
•気づいたら1人
•開発リーダーとひたすらラリー
•片っ端から書くべし
JavaScript初心者(再掲)
![Page 21: 0831 node学園lt](https://reader030.vdocuments.mx/reader030/viewer/2022021416/5883d1951a28abb7308b6a17/html5/thumbnails/21.jpg)
ルール追加
![Page 22: 0831 node学園lt](https://reader030.vdocuments.mx/reader030/viewer/2022021416/5883d1951a28abb7308b6a17/html5/thumbnails/22.jpg)
"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](https://reader030.vdocuments.mx/reader030/viewer/2022021416/5883d1951a28abb7308b6a17/html5/thumbnails/23.jpg)
テストが落ちる=レビューされない
レビューされない=マージされない
マージされない=進まない
![Page 24: 0831 node学園lt](https://reader030.vdocuments.mx/reader030/viewer/2022021416/5883d1951a28abb7308b6a17/html5/thumbnails/24.jpg)
俺たちは
テストを書くことを
http://matome.naver.jp/odai/2135499634331433101
※mocha部分入れると1万行書いた
![Page 25: 0831 node学園lt](https://reader030.vdocuments.mx/reader030/viewer/2022021416/5883d1951a28abb7308b6a17/html5/thumbnails/25.jpg)
この状態で 4ヶ月走らせます
![Page 26: 0831 node学園lt](https://reader030.vdocuments.mx/reader030/viewer/2022021416/5883d1951a28abb7308b6a17/html5/thumbnails/26.jpg)
完成したものがこちらです
• LICENSE・CONTRIBUTING追記
• バッチつける
• Travis CI
• coveralls
• code climate
• UMD対応
8/17 ver2.0.0-pre 公開
![Page 27: 0831 node学園lt](https://reader030.vdocuments.mx/reader030/viewer/2022021416/5883d1951a28abb7308b6a17/html5/thumbnails/27.jpg)
code climate –静的解析-
※結果が悪かったら消すつもりでした
![Page 28: 0831 node学園lt](https://reader030.vdocuments.mx/reader030/viewer/2022021416/5883d1951a28abb7308b6a17/html5/thumbnails/28.jpg)
• mocha+chaiを流用可能
monacaでテスト
![Page 29: 0831 node学園lt](https://reader030.vdocuments.mx/reader030/viewer/2022021416/5883d1951a28abb7308b6a17/html5/thumbnails/29.jpg)
• 工数:3人月強
• LOC:2000程度
• Coverage:92.5%
進捗状況
• monaca・ブラウザテストも粗方完了
•細かい修正・エンハンス中
• ドキュメント整備が完了し次第正式公開予定
![Page 30: 0831 node学園lt](https://reader030.vdocuments.mx/reader030/viewer/2022021416/5883d1951a28abb7308b6a17/html5/thumbnails/30.jpg)
• Node・JSの基本的なコードを調べずに書ける
• Git・GitHubを思い通りに扱える
• コードの質について考える習慣がついた
• 人のコードを読めるようになった
• CIの考え方・ツールの使い方を覚えた
できるようになったこと
![Page 31: 0831 node学園lt](https://reader030.vdocuments.mx/reader030/viewer/2022021416/5883d1951a28abb7308b6a17/html5/thumbnails/31.jpg)
まとめ
CI環境作って新人を放り込むと、 4ヶ月で品質を意識したコードを 書けるようになって出てくる
![Page 32: 0831 node学園lt](https://reader030.vdocuments.mx/reader030/viewer/2022021416/5883d1951a28abb7308b6a17/html5/thumbnails/32.jpg)
ね、簡単でしょ?
http://d.hatena.ne.jp/rikuo/20080401
![Page 33: 0831 node学園lt](https://reader030.vdocuments.mx/reader030/viewer/2022021416/5883d1951a28abb7308b6a17/html5/thumbnails/33.jpg)
• ニフティクラウド mobile backend JS SDK ver.2.0
• https://github.com/NIFTYCloud-mbaas/ncmb_js
というわけで
触ってみてください! p-r待ってます!
mbaas github
![Page 34: 0831 node学園lt](https://reader030.vdocuments.mx/reader030/viewer/2022021416/5883d1951a28abb7308b6a17/html5/thumbnails/34.jpg)
• mobile backend JSSDK 2.0-pre でクイックスタート(ブラウザ編) • http://qiita.com/heppoko_dev/items/2accde66add37c77db76
Qiita書きました qiita heppoko_dev
![Page 35: 0831 node学園lt](https://reader030.vdocuments.mx/reader030/viewer/2022021416/5883d1951a28abb7308b6a17/html5/thumbnails/35.jpg)
会社の宣伝
![Page 36: 0831 node学園lt](https://reader030.vdocuments.mx/reader030/viewer/2022021416/5883d1951a28abb7308b6a17/html5/thumbnails/36.jpg)
IoTはじめました
![Page 37: 0831 node学園lt](https://reader030.vdocuments.mx/reader030/viewer/2022021416/5883d1951a28abb7308b6a17/html5/thumbnails/37.jpg)
IoTやりたい方 CI環境に放り込まれたい方
We are hiring!