-
Notifications
You must be signed in to change notification settings - Fork 8
Overview
WebModule はモジュールの管理とエコシステム化のためのワークフローを提供する、これまでにない新しい仕組みです。
以下の特徴を備えています。
-
どこでも動作するコードを書くための雛形を提供します
- WebModulePattern を提供しています
- モジュールの書き方で試行錯誤をしたり、迷う時間をカットできます
- WebModule のフォーマットで書かれたコードは、単体のライブラリとしても利用できます
- コンパイルしなくても動作します。ソースコードが負債化しないように考えられています
- node.js 用のコードをChromeでビジュアルにステップ実行する仕組みなども提供します。
-
Google が提供する Closure Compiler を使ってコードを最適化します
- Closure Compiler の ADVANCED_OPTIMIZATIONS モードが標準です
- リネーム、不要コードの削除、インライン化が行われ、高速で小さなコードが生成されます
- デバッグ用ビルドの他に、依存関係を解消した状態のリリース用のビルドを行えます
- コードが負債化しません
- Closure Compiler を採用している WebModule は、
将来に渡って ES6, ES7 のメリットを速やかに取り込める事がほぼ確定しています。
ES6 や ES7 の仕様に左右されがちな AltJS とはこの点が大きく異なります
- Closure Compiler を採用している WebModule は、
- Closure Compiler の ADVANCED_OPTIMIZATIONS モードが標準です
-
Node.js, Browser, WebWorkers, iPhoneシミュレータ の各環境で一斉にテストする仕組みを提供します
- テストの為の環境が備わっています
- プログラマーには、テストが可能なようにモジュールを設計することを強制します
-
コードの品質を可視化し、維持する仕組みを提供します
-
オンラインリファレンスという新しい提案をしています
- ブラウザの DevTools と、GitHub + wiki を連携させた検索システムを提案しています
- ドキュメントはオンラインに Markdown で書きます
- 誰でも参照できます。GitHub の権限を持っている人は書き換えることもできます
-
ソースコードとドキュメントを分離し、ドキュメントを拡充するための仕組みを提供します
- GitHub + wiki にドキュメントが外部化され、エコシステムが育ちやすい環境が備わっています
- 移動中の5分, 会議前の10分といった、ちょっとした隙間時間でドキュメントを記述したりチェックすることができるようになります
以下のエントリでは、これらについて、より詳細に説明します。
WebModulePattern は新しいモジュールの設計パターンです。
WebModulePatternに沿ってコードを生成することで、
Node.js, Browser, WebWorkers などのあらゆる環境で動作する部品を記述できます。
WebModule は、ClosureCompiler (Compile.js) でコンパイルを行い、
コードの短縮、難読化と、不要なコードの除去やインライン展開を行います( @keyword の除去は Minify.js の機能です )。
開発中は $ npm run build でテストを行い、
リリース時は、$ npm run build-release で依存モジュールを結合した状態でビルドします。
$ npm run test を行う事で、Node.js, Browser, WebWorkers の環境で、コンパイル前のコードと、コンパイル後のコードについてテストを行います。
本来は手動で十分にテストを行ってからコミットを行うはずですが、
壊れたコードをコミットしてしまう場合や、
テストをパスしないコードをコミットしてしまうケースもありえます。
そのような場合は、Travis-CI がエラーをメールで報告してくれます。
このように、手動テスト + 自動テストの仕組みを備えることで、安心して開発を進める事ができます。
$ npm run lint で、コードのカバレッジ(静的解析)を行い、解析結果とこれまでの履歴をグラフで表示します。
コードの複雑度を測定し、問題のある箇所を指摘します。将来問題が起きそうな箇所も表示します。
Help.js を読み込んだ状態のブラウザで DevTools を開き、ブラウザのコンソールで 関数名.help や Help("関数名") とタイプすることで、
オンラインリファレンスページへのリンクを表示します。
また同時に、関数を文字列として表示し、引数や戻り値の型情報をクイックに確認することができます。
> MyExample.help
function MyExample(value) { // @arg Number: the value.
this._value = value;
}
GitHub repository:
https://github.com/uupaa/MyExample.js
GitHub wiki page:
https://github.com/uupaa/MyExample.js/wiki/MyExample
Google.search( MyExample ):
http://www.google.com/search?lr=lang_ja&ie=UTF-8&oe=UTF-8&q=MyExample
オンラインリファレンスにより、ソースコードの記述とドキュメントの記述タイミングを分離し、ドキュメントを拡充するための仕組みを提供します。
WebModulePattern をベースにしたモジュールは、とある理由 で JavaDoc スタイルのコメントシステムを推奨していません。
ソースコード内には詳細にコメントを書かず、残すべき情報は、GitHub/wiki に記述するようにします。
詳しくは、https://github.com/uupaa/Help.js/wiki/Help を参照してください。
このように開発に必要な環境を一式提供することで、 コーディング作業がワークフロー化され、部品化が促進されます。


