{"action":"created","issue":{"url":"https://api.github.com/repos/gsi-cyberjapan/gsimaps/issues/74","labels_url":"https://api.github.com/repos/gsi-cyberjapan/gsimaps/issues/74/labels{/name}","comments_url":"https://api.github.com/repos/gsi-cyberjapan/gsimaps/issues/74/comments","events_url":"https://api.github.com/repos/gsi-cyberjapan/gsimaps/issues/74/events","html_url":"https://github.com/gsi-cyberjapan/gsimaps/pull/74","id":115675359,"number":74,"title":"Adds package.json and unit testing","user":{"login":"miya0001","id":309946,"avatar_url":"https://avatars.githubusercontent.com/u/309946?v=3","gravatar_id":"","url":"https://api.github.com/users/miya0001","html_url":"https://github.com/miya0001","followers_url":"https://api.github.com/users/miya0001/followers","following_url":"https://api.github.com/users/miya0001/following{/other_user}","gists_url":"https://api.github.com/users/miya0001/gists{/gist_id}","starred_url":"https://api.github.com/users/miya0001/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/miya0001/subscriptions","organizations_url":"https://api.github.com/users/miya0001/orgs","repos_url":"https://api.github.com/users/miya0001/repos","events_url":"https://api.github.com/users/miya0001/events{/privacy}","received_events_url":"https://api.github.com/users/miya0001/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":2,"created_at":"2015-11-07T16:24:58Z","updated_at":"2015-11-08T19:18:37Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/gsi-cyberjapan/gsimaps/pulls/74","html_url":"https://github.com/gsi-cyberjapan/gsimaps/pull/74","diff_url":"https://github.com/gsi-cyberjapan/gsimaps/pull/74.diff","patch_url":"https://github.com/gsi-cyberjapan/gsimaps/pull/74.patch"},"body":"今後のメンテナンス性を向上させるために以下の修正をご提案します。\r\n\r\n* `package.json`及び`gulpfile.js`の追加\r\n  * 複数のサードパーティー性のモジュールを使用していると見受けられますが、これらはダウンロードからデプロイまでを自動化することで、それらのライブラリのセキュリティフィックス等を適用しやすくなります。\r\n  * `master`ブランチがないので、このプルリクエストを適用しても不完全ですが、`master`ブランチを復活できればTravis CI等のサービスを使ってサードパーティーライブラリの入手、minify、動作確認、`gh-pages`ブランチへのpushを自動化できます。\r\n* テストの自動化\r\n  * プルリクエストを受け取った際に、地図が表示されているかどうかの確認作業を自動化できます。このプルリクエストではあくまでもサンプルですが`#map`以下に`leaflet-control-container`という要素が追加されたかどうかを確認するテストを`tests.html`で行っています。\r\n\r\n## テストの方法\r\n\r\nすべてのコマンドはgsimapディレクトリ直下で行う必要があります。\r\n\r\n```\r\n$ cd gsimaps\r\n```\r\n\r\n以下のコマンドで必要なライブラリ等をダウンロード。どのライブラリを入手すべきかは`package.json`に記述されており、常に同じコマンドで必要なライブラリが全て入手できます。\r\n\r\n```\r\n$ npm install\r\n```\r\n\r\n続けて以下のコマンドで、入手したファイルを適切なパスに配置したり、Minifyを行ったりできます。\r\n\r\n```\r\n$ npm run build\r\n```\r\n\r\nブラウザで作業中のアプリをテストしたい場合は以下のコマンドで。\r\n\r\n```\r\n$ npm start\r\n```\r\n\r\n最後にテスト\r\n\r\n```\r\n$ npm test\r\n```\r\n\r\nテスト用のコードは`tests.html`の下の方に記述してあります。\r\n\r\nテストに合格した際の出力は以下のような感じです。\r\n\r\n```\r\n$ npm test\r\n\r\n> gsimaps@1.0.0 test /Users/miyauchi/Desktop/gsimaps\r\n> ./node_modules/gulp/bin/gulp.js test\r\n\r\n[01:15:46] Using gulpfile ~/Desktop/gsimaps/gulpfile.js\r\n[01:15:46] Starting 'test'...\r\n[01:15:46] Finished 'test' after 8.29 ms\r\nTesting ../../tests.html\r\nTook 16 ms to run 1 tests. 1 passed, 0 failed.\r\n```\r\n\r\nJavaScriptにタイポを入れる等して再度テストを実行すると不合格の際の出力が見れます。\r\n\r\nこれらの作業はすべて自動化できますので、例えば、プルリクエストを受信 => クラウド上にアプリを自動的に立ち上げ => テストを自動的に実行 => テストが通らなかったプルリクエストに警告マークを表示 みたいなことが可能になります。\r\n\r\n![](https://www.evernote.com/l/ABVY_kxHGPFB97_z97rhi107ts5cflK_LKsB/image.png)\r\n\r\nオープンソースなら無料で可能なのでぜひ！\r\n\r\n変更作業が多いのでマージするのはちょっと大変かもですが、今後の参考になればということで是非。"},"comment":{"url":"https://api.github.com/repos/gsi-cyberjapan/gsimaps/issues/comments/154859164","html_url":"https://github.com/gsi-cyberjapan/gsimaps/pull/74#issuecomment-154859164","issue_url":"https://api.github.com/repos/gsi-cyberjapan/gsimaps/issues/74","id":154859164,"user":{"login":"hfu","id":18297,"avatar_url":"https://avatars.githubusercontent.com/u/18297?v=3","gravatar_id":"","url":"https://api.github.com/users/hfu","html_url":"https://github.com/hfu","followers_url":"https://api.github.com/users/hfu/followers","following_url":"https://api.github.com/users/hfu/following{/other_user}","gists_url":"https://api.github.com/users/hfu/gists{/gist_id}","starred_url":"https://api.github.com/users/hfu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hfu/subscriptions","organizations_url":"https://api.github.com/users/hfu/orgs","repos_url":"https://api.github.com/users/hfu/repos","events_url":"https://api.github.com/users/hfu/events{/privacy}","received_events_url":"https://api.github.com/users/hfu/received_events","type":"User","site_admin":false},"created_at":"2015-11-08T19:18:37Z","updated_at":"2015-11-08T19:18:37Z","body":"ありがとうございます。かなり先進的かつドラスティックなプルリクエストなので、国土地理院情報普及課としてすぐにはマージできないと思います。\r\n\r\nそのため、技術のサンドボックス的な位置付けで、先進的な技術を積極的に取り込むバージョンの gsimaps を個人的に作成してみました。https://github.com/miya0001/gsimaps/tree/add-automated-testing をベースにさせていただきました。こちらの方の取り組みもよろしくお願いします。\r\n\r\n→ https://github.com/sandmaps/sandmaps.github.io"}}