#-

moz-scope のご紹介 (ES2015+)

この記事は MDNやFirefox OSのドキュメントをみんなで翻訳! Advent Calendar 2015 の 13 日目です。


初めまして。@hashedhyphen と申します。大学生やってます。

普段は Mozilla Security Blog を翻訳したり、MDN を利用する中で気になった記事を軽く翻訳したりしています。なお、Mozilla Security Blog 日本語版の記事は GitHub で管理しているので、過去記事の翻訳など Pull Request 送っていただけると嬉しいです。

最近知ったこと

MDN のページを AndroidFirefox で閲覧しつつ、ページを長押しすると編集画面に行けることを最近知りました。ただし、翻訳になると画面がかなり狭くなるので正直無理です。謎機能すぎる…

f:id:hashedhyphen:20151211003113j:plain

moz-scope について

MDN 記事の更新有無を確認するための CLI ツール "moz-scope" を作りました。ES2015+ で書いているため、動作させるには Node が必要です。

hashedhyphen/moz-scope - GitHub

インストールは下記のように npm で行います。

npm i -g moz-scope

コンソール(コマンドプロンプト)で moz-scope -v と入力して、バージョンが表示されればインストール成功です。

続いてホームディレクトリに mozscope.conf というファイルを作成し、更新を確認したい記事の URL を改行区切りで書きます。以下に例を示します。

https://developer.mozilla.org/ja/docs/Developer_Guide/How_to_Submit_a_Patch
https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/How_to_Submit_a_Patch
https://developer.mozilla.org/ja/docs/Mozilla_Source_Code_Directory_Structure
https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Source_Code/Directory_structure

Windows の場合、ホームディレクトリは C:\Users(ユーザ名)\ になるかと思います(または、Node の REPL 上で os.homedir() を叩いても確認できます)。

以上で初期設定は終わりです。コンソールで moz-scope と入力すれば記事の更新確認が始まります。

$ moz-scope

--  Done: 4/4

New post!

Title: How to Submit a Patch
Date: Fri Dec 04 2015 07:27:30 GMT+0900 (東京 (標準時))
Author: mantaroh
Comment: Rev.904925反映

Title: How to Submit a Patch
Date: Mon Aug 24 2015 09:46:36 GMT+0900 (東京 (標準時))
Author: jryans
Comment:

Title: Mozilla ソースコードのディレクトリ構造
Date: Sat Oct 10 2015 08:05:26 GMT+0900 (東京 (標準時))
Author: hashedhyphen
Comment: Complete translation on this article

Title: Mozilla Source Code Directory Structure
Date: Tue Oct 06 2015 22:15:46 GMT+0900 (東京 (標準時))
Author: Sheppy
Comment: Added a description for the /embedding folder

更新があれば上記のように表示され、新しい更新が何もなければ以下のように表示されます。

$ moz-scope
--  Done: 4/4

All articles are up-to-date :)

技術的なこととか

async/await + Promise.all で URL を並列リクエストしつつ、返ってきた HTML に正規表現を当てて情報を抽出しています(PhantomJS 使ってスクレイピングするまででもなかった)。現状、mozscope.conf に書いてある URL を一気にリクエストしているので、URL が 50 個ぐらいになると MDN に DoS ってしまうかもしれません(もしガチで moz-scope 使う方がいらっしゃったら issue でお知らせください…)。

実際、このツールを作ったのは async/await の実験目的だったりします。次は TypeScript の実験用に書き換えるかもしれません。

そもそも MDN に記事更新のメール通知機能あるじゃん

f:id:hashedhyphen:20151211000938p:plain

その通りでございます…。

最後に

もし moz-scope を使っていてバグを踏んだ場合、GitHub に issue を出してくださると助かります…


アドベントカレンダー 14 日目の明日は mantaru さんです。