【勉強会メモ】関西Node学園 梅田キャンパス 2時限目
- 日時:2018/07/05(木) 19:00 〜 21:30
- 場所:さくらインターネット株式会社 大阪本社
Swagger - OAS 3.0
@_mikakane さん
APIドキュメントの生成
OAS a.k.a Swagger
OpenAPI 3.0
Swaggerの運用
- Yamlとかでエントリポイントごとに書いてマージ
- バックエンドで書くなら最終的にJSONさえホストしてもらえればOK
- 共通化・自動化できるところは頑張る
- Componentsを利用してスキーマ定義は再利用可能
API仕様書を作る
- swagger-ui-distで簡単にSwagger仕様書を配信できる
- ドキュメントを作る→ドキュメントを使う
Swaggerの諸問題
- 読み物としてのドキュメントは陳腐化する
- DB定義書と同じ問題
- 読むドキュメントから使うドキュメントへ
- 実装との乖離をすばやく気づけるように
Swagger-client
Swagger-ui
まとめ
- フロント開発にAPIの管理はとても重要
- Swaggerでより効率な開発サイクルを
AWS Lambda上のnodejsの単体テストした
@papettoTV さん
案件概要
- AWSを使ったIoTシステム構築
- センサーデータが常時アップロード
- データ保存加工
- 保存データの検索
テスト方針
- カバレージ目標
- 品質要件によってかわる
- 今回は80%
テスト対象アプリ
- Lambda上で動作
- Node.js 6.10(開発当時)
- Promise
- 他のLambdaやS3,DymnamoDBなどにリクエストを投げる
主なファイル構成
index.js
…Lambda関数上の実行対象test/index.test.js
…テスト用ファイル
Tips
- exportsで関数定義
- 定義する関数はexports.xxの形で宣言
- ×
const functionA = function(){}
- ○
exports.functionA = functionA
- ×
- 外部(テスト用ファイル)から呼び出せる
- 定義する関数はexports.xxの形で宣言
- exit0
nyc --reporter=html --reporter=text mocha || exit0
- 多分バットノウハウ
- callback内で評価
return callback();
- lambda側で期待する終了処理ではない
- timeout error
nyc --reporter=html --timeout 5000
- →解決せず
レポーティング
npm run test-report
- 単体テスト結果:unittest-reporthtml
スプレッド構文いろいろ
@mochiya98 さん
発表資料: スプレッド構文いろいろ - Google スライド
スプレッド構文
実際にどういうところで使うのか
r=[...a]
- 配列の浅いコピーを作る
Array.prototype.slice.call(a)
と似た結果が得られる- 厳密にはIteratableでなければいけない
- 内部の処理が違う
for(x of hoge)
みたいなのが...hoge
r=[...a, ...b]
a.concat(b)
と似た効果
r={...a, ...b}
- aとbを統合する(同一プロパティはbで上書き)
- 浅いコピーを作りながらプロパティを追加/上書きする
r=[..."msg"]
"String".split("")
と同じではない
r=[...undefined], r=[...null]
- エラーになる
r={...undefined}, r={...njll}
- エラーにならない
※参考
私の OSS 道について
- 2010〜日本に
- OSSの開発にたずさわる
OSSしない理由
- 恥ずかしさの恐れ
- 時間の問題
- 英語
- 非友好的なコミュニティ
- 財政的に防御できない
OSSする理由
- 勉強する
- 社長が言ったから
- OSSせず悪い経験(社内で作っているコードはすれられた)*
- 会社をやめれるように*
- 破産の場合に継続する方法
- より大きな利益のために*
- 他人のエンパワーメント
- 感謝の気持ち
- セフルプロモーション
- コードを将来にも使えるように*
- OSSのライブラリのクォリティが悪いから
- OSSしない理由がないから
- アイデアのフィードバックがほしいから
(*個人的に重要なもの)
おすすめ記事
Node.jsとOSS
- Node.jsはLINUX Foundationの1つのプロジェクト
Node.js向けUNIX哲学の3つのこと
- プログラムが1つのことをうまくやるように
- 効率よりも移植しやすさを選べ
- 効率と移植性を高めるためのシェルスクリプトを利用せよ
3つのプロジェクト方法
- Monolith/Cathedral-style:stdlib,jQuery
- Bazaar-style:Node.js
- Cathedral-core,Bazzaar-community:reactなど
私のOSS道について
- 小モジュールが好き
- できれば生JS必要であればTypeScript
- モジュールができるならすぐ公開
好きなツールより、すでにあるツールが良い
コミュニケーションを簡単にする
- Code of Conduct
- Issue Templates
- PRなレビュー必要
私のOSS心
- Issue + PRはお客さんではありません。興味があるなら直します
- ユーザーにコントリビューターになってもらうように頑張っています
- つまらないときにビジネスを考えています
- いつでも改善できます
- 進捗をコミュニティーとシェアします
まとめ