MDN翻訳ツールについて:その1

この記事はMDNとかをみんなで編集!翻訳! Advent Calendar 2018 - Adventarの 3日目の記事です。
昨日はlevena_evenasさんの[:title]でした。
明日は…登録がありませんが明後日はhmatrjpさんのMDN Adventar 12月5日分: hama の record of lifeです。

さて、去年のAdventarにて書いた雑な記事(MDNの翻訳お役立ちツールがメチャクチャ便利な件 - Uemmra3のフルスタックエンジニア?日記)で紹介した
MDN翻訳お役立ちツールがメチャメチャ便利
なので、シリーズ化してご紹介したいと思います。

README(translation/README.md at master · mozilla-japan/translation · GitHub)には

新規翻訳
● 見出しのidを英語のままにするためのname属性付与(参考)
● 自動翻訳もとい置換
◯ 見出しや互換性表などのよくある語句
◯ アルファベットと日本語の間に半角スペースを自動挿入
◯ 実装・継承するプロパティ・メソッドがないことを示す文
◯ The hogehoge interface → hogehoge インターフェイス
● /en-US/docs/ → /ja/docs/
● 翻訳中フラグをオフに、編集レビューをオンに
● タグを元記事からコピー
● 編集コメントに元記事のリビジョン番号を自動入力

とありますが、

/en-US/docs/ → /ja/docs/

を紹介します。


MDNを訳していると、他のMDN記事へのリンクが載っていることがありますが、新規翻訳時にはオリジナル版である「en-US」ロケールのものになっています。

このままにしておくと、日本語版の記事を見ているユーザーが、他の記事を読もうとしてリンクをクリックしても、英語版に飛んでしまって不親切です。
もちろん手作業で /en-US/docs/ → /ja/docs/ と変換しても良いですが、
ページ内に5個とか10個とかリンクがあるとウンザリします。

TranslationHelperをインストールしておくと、新規翻訳ではこれを自動化してくれます。
既存記事の編集時には

のように「Translation Helper」のボタンをクリックすると

このように日本語ロケールへのリンクに変わります。
便利だ!
鋭い方は「リンク先が未翻訳の場合は大丈夫なの?」と心配するかもしれませんが、そこはMDN側で自動的に英語ロケールを表示するのでOKです。


クリスマスも近づいて来ました。
MDN翻訳お役立ちツールを活用して、記事の翻訳に挑戦してみてはいかがでしょうか?

では。

Mozilla翻訳関連の勝手に5大ニュース!!

この記事はMDNとかをみんなで編集!翻訳! Advent Calendar 2018 - Adventarの 1日目の記事です。
明日はlevena_evenasさんの[:title]です。

さて、いろいろあった今年も残りあと1ヶ月です。
どうやら1年ブログをサボっていたようですが、
今年の Mozilla翻訳 界隈のニュースを勝手に発表したいと思います!
個人的な捉え方なので異論は認めます。

第5位
MDNの日本語更新が古いことをハイライトする拡張機能をリリース!
いきなり自分ごとでアレなんですが、extensionコミュニティに活気がでてきたのに刺激を受けて、
MDNの更新日が古いのをハイライトする拡張機能を作りました。
更新サイトmdn-l10n-update-checker – 🦊 Firefox (ja) 向け拡張機能を入手
ソースGitHub - Uemmra3/mdn-l10n-update-checker
これを開発したモチベーションを説明します。
MDNの機能に日本語ページと対応する英語版が更新された時に
通知できるように機能があるんですが、登録しまくってたら通知が多すぎる問題があります。
(そのページだけでなくその階層以下も登録できる)
その上に、変更通知を登録していない日本語ページをブラウジングしている時に、
それが最新の英語版よりも新しいかを確認するには
デフォルトのMDNの機能だと「編集」をクリックして差分が出るのか確かめないといけません。

それをブラウジングしている時に「編集」ボタンの付近をオレンジ色にハイライトする
(あくまで日付の比較しているだけですが)
そんな拡張機能です。
百聞は一見に如かず、一度インストールして試してみてください。
(MDN翻訳している人はもちろん、参照している人にも便利な機能と思っています)

第4位
MDNのマクロの廃止が発表される!
少なくとも日本語のローカライズコミュニティではよく使用されていたマクロ機能の廃止/縮小が発表されました。
https://discourse.mozilla.org/t/next-steps-for-kumascript/32227
要はいろんなマクロが存在していてカオスなため、整理したいということのようです。

私自身もとつぜんフランスの方が{{Yakuchu}}というマクロをすごい勢いで消し始めたのを発見して、必要性を説明したりもしました。
そのへんの議論はこちらにあります(https://github.com/mozilla-japan/translation/issues/263)

第3位
翻訳ツールに新しい貢献者が登場
去年のカレンダーでも紹介したMDNの翻訳お役立ちツールがメチャクチャ便利な件 - Uemmra3のフルスタックエンジニア?日記超絶便利なMDN翻訳ツールに、新しい貢献者が現れました!
Google グループ
のような問題に対応してくれた sutara79 さん(https://github.com/sutara79)です。
これまではこのツール作者の uranist さんと私が編集していたこのツールですが、
新たな貢献者によって別の視点でブラッシュアップしていくといいなぁ、と思っています。

第2位
OSC名古屋に翻訳ハンズオンを出展!
オープンソースカンファレンス(OSC)はいろいろな技術コミュニティが集まるイベントです。
これまでOSC東京で開催してきた翻訳ハンズオンを、OSC名古屋で初開催しました。
【名古屋と東京の二箇所開催!】【第4回!】みんなで MDN を翻訳しよう!翻訳コミュニティ月例ミートアップ! 2018年5月19日開催 - Mozilla Japan コミュニティ | Doorkeeper
東京でのmonthlyミートアップと同時開催したのですが、しょうじき事前告知がうまくいかず、名古屋の登録者はチューター陣よりも少ない2名だったので辛かったです。。
当日に宮原さんのセッションで告知したり他のブースで宣伝したりして、なんとか身のあるハンズオンとなりました。
あとはこの時にスタッフとして協力してくれた chameleonhead さんの加入も心強いと思います。

第1位
monthlyミートアップを開始!!
今年の2月から、東京のWebDINO Japanにて毎月のミートアップが始まりました。
「翻訳に興味あるけど、どうやったらいいんだろう?」「翻訳やってみたけど、細かいことがよくわからないな…」という方は、ぜひ参加してみてほしいです。
基本は現地参加ですが、オンラインでリモート参加することもできます(私は地方住みなのでリモート参加)。
DoorKeeperにてお申し込みください。
Mozilla Japan コミュニティ | Doorkeeper

クリスマスも近づいて来ました。
MDNとかをみんなで編集!翻訳! Advent Calendar 2018 - Adventarではまだまだ登録を募集しています。
ぜひ気軽に登録してみてください。

では。

今年のMozilla翻訳コミュニティ界隈を勝手に振り返る

この記事はMDNとかをみんなで編集!翻訳! Advent Calendar 2017 - Adventarの 25日目の記事です。
昨日はic_lifewoodさんのアクセシビリティ/XUL アクセシビリティリファレンス - Mozilla | MDNでした。

さて、このアドベントカレンダーもいよいよ最終コーナーとなりました。
立ち上げ人として、今年のニュースを振り返ってみたいと思います。

7月。Mozilla JapanがWebDINO Japanに変わった!
発足記念パーティとかにも行ってないのでアレですが、Mozilla Corp.とは異なっていることが明確になったのだと捉えています。
一般社団法人 WebDINO Japan — ブラウザーの先へ、ウェブの最先端を切り拓く。
Mozilla JapanはなぜWebDINOに?瀧田佐登子さんに聞くMozilla・オープンソースコミュニティ、そしてWebの未来 | HTML5Experts.jp

11月。意欲作の Firefox Quantum がリリース
とにかく爆速という触れ込みの Firefox Quantum がリリースされました。
Add-on がChrome互換の拡張機能しかサポートしなくなって、一部悲鳴も有りましたが、このサクサク感はなかなかのものです。これまで取り組んできたe10s(マルチプロセス技術)が身を結んだのでしょうか。
Chromeよ、さらば。ベストブラウザーの座は「Firefox Quantum」に交代だ:『WIRED』US版レヴュー|WIRED.jp

あとは Firefox OS が B2G OS と名を変えて、もともと私に「MDNの編集しませんか?」と誘ってくれたパンダのアイコンの人はG○○gle社に行っちゃいました。。万物は流転する。

次はコミュニティネタを行ってみようと思います。
5月。コミュニティのチャットツールがSlackになる
これも流行り廃りなのか、MLというかGoogle Groupsへの投稿がめっきり減りましたね。#general が作られたのは5/2のできごとのようです。古くからの人と最近の人とがごちゃまぜになっててなんか新鮮ではありますw Mozilla コミュニティの活動に加わりたい、情報を得たい人は入室自由ですのでドウゾ。
Slack

9月。OSC 2017 Tokyo/Fall でのハンズオン
昨年につづき2回目の開催になりました。
個人的な事情で昨年は参加できなかったのですが、チューター6名に対して参加者8?名。内容はそれなりに満足してもらったのかと思います。今後は翻訳を学びたい人、技術を学びたい人のグループ分けができると良いかもしれません。
オープンソースカンファレンス2017 Tokyo/Fall - オープンソースの文化祭!

12月。Advent Calendarが満員御礼
昨年は書き手が不足していたようですが、今年はいつメンの皆さんが頑張って繋げることができました。この勢いを次にもつなげたいですね。
https://adventar.org/calendars/2553

クリスマスも終わりました。私は地方住みなのでふだんはオンラインの繋がりですが、たまにオフラインでいろんな刺激を得るのは楽しいです。
では、また活気のあるコミュニティライフを!

MDNの翻訳お役立ちツールがメチャクチャ便利な件

この記事はMDNとかをみんなで編集!翻訳! Advent Calendar 2017 - Adventarの 23日目の記事です。
昨日はhmatrjpさんのMDN Web Docsでした。
明日はic_lifewoodさんのアクセシビリティ/XUL アクセシビリティリファレンス - Mozilla | MDNです。

まず、MDNはこれまでMozilla Developer Networkの略だったんですが、もう少し他のWeb標準全体を扱うものとして
MDN Web Docs という名前に変わっています。
MDN Web Docs について - MDN プロジェクト | MDN
ChromiumやEdgeなどの仕様をもらって、クロスブラウザー問題を軽減したいという思いがあるようです。詳しくは次の記事でも。
Mozilla、Microsoft、Googleがブラウザ横断Webドキュメントネットワーク構築で協力 - ITmedia NEWS

さて本題。
MDNの翻訳をしていると、とても便利な編集環境だ!と思う反面、めんどくさい面もあります。
良い面

  • Githubアカウントでログインしたら、ブラウザー画面ですぐに編集できる
  • 単に編集するだけでなく、編集履歴とかもMDNエディター上で見られる

悪い面

  • 英語版(en-US)がデフォルトなので、MDN内のリンクに対しても手作業で日本語(ja)に変える必要がある
  • ページを分類するタグの概念があるが、翻訳時には英語版のものを引き継いでくれない
  • 見出しにアンカーがついているが、見出しを翻訳するとアンカーも翻訳されてしまう(アンカーへのリンクは英語のまま)のでページ内リンクがうまくいかない

この悪い面(とにかくメンドイのです)は翻訳モードに入っていた思考を分断させちゃいます。なんかいちいちマウス操作で単純作業するのも悲しいです。Firefox拡張機能の仕様が変わってVimperatorのサポートがなくなった時と同じ悲しみです。
ところが、こんなメンドイ作業を自動化してくれるツールをコミュニティのunaristさんが作ってくれました!!あなたは神か!?

_人人人人人人人人人人人人人人人人人人人人人人人人人人人人人人人人_
> https://github.com/mozilla-japan/translation/tree/master/MDN <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄

これをセットアップすると(詳しくはリンク先の「インストール」にて)上に書いた悪い点がすべて解消します。
ストレスフリーな作業ができること請け合いです。騙されたと思って使ってみてください。わりと荒削りな面も残っていますが、もちろんPull Requestや要望なども受け付けています。

クリスマスも近づいて来ました。
それでは、楽しいWeb開発ライフを!

すごい広島に現地参加した

この記事はたまに広島 Advent Calendar 2016 - Adventarの 21日目の記事です。
昨日は24motzさんの「つくれば工房」で MicroPython 体験会 – nishimotzの日記でした。
明日はblew48さんの広島駅で時間が少しある場合 - 48's diaryです。

さて、ことしは広島で1週間の研修に行く機会があったので、すごい広島147()に初のリアル参加してきました。
すごい広島は水曜日に開催されています。そして自分は鳥取県で請負の仕事している(お客さんは殆んど県内)ので、こういう機会がないとなかなか行くことができません。

去年のアドカレすごい広島で覚えたこと - Uemmra3のフルスタックエンジニア?日記にも書いた通り、我馬にもいくことができました。

ただ以前Firefox OS勉強会でお世話になった胡町のコワーキングは営業をやめてました。代わりにこの日は別のコワーキングへ。地元の米子市にはネカフェや作業可能なカフェはあるのですが、やはりこういう専用スペースがあるのはいいですね。コミュニティの醸成にも役立つ気がします。リモートでコミュニケーション取るのとはまた違う雰囲気があります。
去年Firefox OS勉強会の主催スタッフ化したむじんくんは、広島でAtlassianユーザーグループを立ち上げてました。エネルギッシュ!
やりたい人がやりたいことをやる、そんな広島の人たちと、これからも刺激を与えあいながら過ごしていきたいです。

クリスマスもすぎてしまい、もうすぐ新しい年です。
来年もまだまだ挑戦していきたいですね。では。

baserCMSのワンラインインストール+起動の解説

昨日の記事(酔っ払ってからbaserCMSをインストールしてみた - Uemmra3のフルスタックエンジニア?日記)で、baserCMSをインストールできました。

ただ外谷さんがこちらで(http://bluestyle.publog.jp/archives/67963814.html)書いているように、ユーザー寄りの方や初心者の方の参加が求められています。そうした方にはチンプンカンプンなものになるかもしれません。
つまり昨日の記事でインストールできた事実は良いのですが、それだけだと不親切な気がします。なので、kaburkさんの記事(http://blog.kaburk.com/tools/oneliner_install_basercms4.html)に対して、少し解説を書くことにしました。

元々のコマンドはワンラインになっています。

git clone git@github.com:baserproject/basercms.git; ./basercms/app/Console/cake bc_manager install "http://localhost:8080/" "sqlite" "admin" "password" "webmaster@example.org" --host "localhost" --database "basercms" --data "bccolumn.default"; php -S localhost:8080 -t basercms/app/webroot

で私の場合はこれをWindows上のGit Bashで実行したのですが、UNIXライクOSのシェルの機能として、「;」で複数行のコマンドを連続させる機能を利用しています。
例えばtestというディレクトリを作って移動するのをワンライナで書くと、次のようになります。

mkdir test; cd test

ワンライナはコピペが簡単なのですが、解説するにはそれぞれのコマンド単独の方が良いと思いますので、1コマンドずつ説明しましょう。

1コマンド目

git clone git@github.com:baserproject/basercms.git;

baserCMSは、githubというインターネット上のリポジトリ(ソースコードなどの置き場)に保管されています。このコマンドでは、githubからソースコードを取得します。
なおこのリポジトリはウェブブラウザーからも見ることができます(GitHub - baserproject/basercms: baserCMS : Based Website Development Project)。

2コマンド目
2コマンド目を整理して書いてみます

./basercms/app/Console/cake bc_manager install
"http://localhost:8080/"
"sqlite"
"admin"
"password"
"webmaster@example.org"
--host "localhost"
--database "basercms"
--data "bccolumn.default";

元記事にも記載のあるこちら(コマンドインストール | baserCMS - 国産オープンソース!フリー(無料)でコンテンツ管理に強いCMS)がコマンドリファレンスです。このコメント(#より右がコメントです)を付けてみると、おぼろげながら理解が進むのではないでしょうか。

./basercms/app/Console/cake bc_manager install
"http://localhost:8080/" # サイトURL
"sqlite" # DB種類
"admin" # 管理システムログイン名
"password" # 管理システムログインパスワード
"webmaster@example.org" # 管理者メールアドレス
--host "localhost" # DBサーバホスト名
--database "basercms" # DB名
--data "bccolumn.default"; # 初期データのパターン

実際私も正確に理解しているのではないですが、DB(データベース)サーバと、管理システムをインストールしている、ということがわかります。
あと「cake」というのは、CakePHP(PHPのWebアプリケーションフレームワーク)のコマンドだと思います。詳しくはCakePHPの解説書、解説をご覧ください。

3コマンド目

php -S localhost:8080 -t basercms/app/webroot

インストールが終わったので、実行します。
PHPの簡易ヘルプを出すと、次のようになります。

$ php --help

Usage: php [options] [-f] [--] [args...]
php [options] -r [--] [args...]
php [options] [-B ] -R [-E ] [--] [args...]
php [options] [-B ] -F [-E ] [--] [args...]
php [options] -S : [-t docroot]
php [options] -- [args...]
php [options] -a

-a Run interactively
-c | Look for php.ini file in this directory
-n No php.ini file will be used
-d foo[=bar] Define INI entry foo with value 'bar'
-e Generate extended information for debugger/profiler
-f Parse and execute .
-h This help
-i PHP information
-l Syntax check only (lint)
-m Show compiled in modules
-r Run PHP without using script tags
-B Run PHP before processing input lines
-R Run PHP for every input line
-F Parse and execute for every input line
-E Run PHP after processing all input lines
-H Hide any passed arguments from external tools.
-S : Run with built-in web server.
-t Specify document root for built-in web server.
-s Output HTML syntax highlighted source.
-v Version number
-w Output source with stripped comments and whitespace.
-z Load Zend extension .

args... Arguments passed to script. Use -- args when first argument
starts with - or script is read from stdin

--ini Show configuration file names

--rf Show information about function .
--rc Show information about class .
--re Show information about extension .
--rz Show information about Zend extension .
--ri Show configuration for extension .

この

php [options] -S : [-t docroot]

がここで使っている引数ですが、

php -S localhost:8080 -t basercms/app/webroot

では、Webアプリケーションサーバーのアドレスがlocalhost、ポートが8080
でドキュメントのルート(置き場所を指定する)がbasercms/app/webroot、になっています。

ちょっと初心者向けの説明をすると、
Webアプリケーションサーバーを情報を表示・操作するお店の店員さんだとします。お店がどこにあるかを指定しているのが -S の直後の引数です。そのうち、localhostとは自分自身の場所を指し、ポートはさしずめ窓口やカウンターのようなものです。つまり、あなたがインストールしたPC自身の、8080という窓口からアクセスできるようになります。そして、トップページの情報を置いている場所はbasercms/app/webrootになります。アクセスしてきたユーザーの要求に対して、店員(Webアプリケーションサーバー)は、最初はbasercms/app/webrootという棚から情報を取って、そこにあるマニュアルに沿って(PHPプログラムを解釈して)お客さん(ユーザー)に返事をする。そんな流れでしょうか。

まとめ
1行に連結されていた3つのコマンドを順に説明しました。

  • githubからのソースコード取得(ダウンロード)
  • 取得した環境を用いたbaserCMSのインストール
  • Webサーバーの起動

というステップに分かれていました。当然ですが、次回起動するには3ステップ目だけを実行すればよいですね。

ではあなたもステキなbaserCMSライフを!ビバ!

酔っ払ってからbaserCMSをインストールしてみた

12/22 コマンド解説のリンクを追加
この記事はbaserCMS Advent Calendar 2016 - Adventarの 19日目の記事です。
昨日は…いらっしゃいませんが、14日目はkaburkさんのhttp://blog.kaburk.com/tools/oneliner_install_basercms4.htmlでした。
明日はGaryutenさんのbaserCMS4の管理画面リニューアルの進捗報告の代わりのこれまでの流れ報告 | 我流天性 がらくた屋です。

さて、baserCMSのインストールがまだ終わっていません。

kaburkさんのインストール記事を読んで、小躍りしながら着手しました。環境は以下

OS: Win7(32bit) SP1 Prof.
CPU: Core i5 3470
Memory: 4GB
Supplier: Hewlett-Packard

ふだんは Excel, Word, PowerPoint、あとはSylpheed(win)でメールチェックしたり、自社サイトをGruntでデプロイしたりするマシンです。

何が起こっているのか?Gitが動かない??

$ git clone git@github.com:baserproject/basercms.git; ./basercms/app/Console/cake bc_manager install "http://localhost:8080/" "sqlite" "admin" "password" "webm
aster@example.org" --host "localhost" --database "basercms" --data "bccolumn.default"; php -S localhost:8080 -t basercms/app/webroot

Cloning into 'basercms'...
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
sh.exe": ./basercms/app/Console/cake: No such file or directory
Directory basercms/app/webroot does not exist.

sudoが効かないので、(StackOverflow)http://stackoverflow.com/questions/22767885/msysgit-sudo-like-commandを見て、Ctrl+Shiftを押しつつ起動したりしてるけど、同様なメッセージ。

心が荒んだ時は、やっぱり笑いが必要だ。
福岡は東京にない魅力(明太子)で溢れている。株式会社キャッチアップのオフィスを訪問しました。 | 東京上野のWeb制作会社LIGを見て、落ち着きを取り戻す。
福岡の明太子もラーメンもウマいのである。

git clone だけでやってみよう!

$ git clone git@github.com:baserproject/basercms.git;

Cloning into 'basercms'...
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

Google先生はヒントをくれるハズ。
git for windows利用時のgithub接続にPermission denied (publickey)が出た時の対応 - Qiitaを見てみて、

mkdir /c/Program\ Files/Git/etc/ssh/
vi /c/Program\ Files/Git/etc/ssh/ssh_config

として、

$ git clone git@github.com:baserproject/basercms.git;

Cloning into 'basercms'...
Enter passphrase for key '/c/Users/soumu2501.DAINICHI-GIKEN/.ssh':

パスフレーズって何だったっけ?
どうもGithub Desktopをアップデートした時に設定された模様。。
目的はcloneなので、HTTPで試す。

$ git clone https://github.com/baserproject/basercms.git

Cloning into 'basercms'...
remote: Counting objects: 68191, done.
remote: Compressing objects: 100% (92/92), done.
remote: Total 68191 (delta 21), reused 0 (delta 0), pack-reused 68096
Receiving objects: 100% (68191/68191), 45.29 MiB | 1.50 MiB/s, done.
Resolving deltas: 100% (42962/42962), done.
Checking connectivity... done.
Checking out files: 100% (2904/2904), done.

アッサリと解決
そして残りの行を実行する。

$ ./basercms/app/Console/cake bc_manager install "http://localhost:8080/" "sqlite" "admin" "password" "webmaster@example.org" --host "localhost" --database "basercms" --data "bccolumn.default"; php -S localhost:8080 -t basercms/app/webroot

c:\wk_uem\baserCMS>echo "immutating Un*x"
"immutating Un*x"

c:\wk_uem\baserCMS>echo off
Welcome to baserCMS v4.0.1 Console

                                                                                                                            • -

App : app
Path: c:\wk_uem\baserCMS\basercms\app\

                                                                                                                            • -

勝った(むしろWindows環境のGitとの戦いに)

私にうってつけのインストール記事を書いてくれたkaburkさんにはただただ感謝しかありません

手元でできただけだと、他の人の参考にならないのでは?
というわけで、追加でkaburkさんのコマンドの解説をしたいと思います。
baserCMSのワンラインインストール+起動の解説 - Uemmra3のフルスタックエンジニア?日記に書いています。

クリスマスも近づいて来ました。コーポレートサイトに適したbaserCMSを使って、企業サイトをリニューアルしてみませんか?
現在4:45。私は寝ます…zzz
では。