職業プログラマの休日出勤

職業プログラマによる日曜自宅プログラミングや思考実験の成果たち。リアル休日出勤が発生すると更新が滞りがちになる。記事の内容は個人の意見であり、所属している(いた)組織の意見ではない。

多言語・翻訳ナイトに参加してきました

多言語・翻訳ナイト Vol.3 に参加してきました。

polyglots.doorkeeper.jp

どうやって勉強会の存在を知ったのか

近畿地区の勉強会情報を収集して配信してくれているbot @atnd_kinki の配信で知りました。

自分と多言語

過去には日英韓の3ヶ国語対応のWebアプリを開発・運営していました。韓国語は翻訳者のご協力を頂きながらの対応でしたが。
現在でも日英2言語対応しているアプリは自分で翻訳して実装、運営までやっています。
本格的に多言語対応をやっておられる方からみればヒヨっ子みたいなもんですが、多言語対応には関係がありますし、興味もあります。

多言語関連で自分が最近興味を持っていたのは、こんな話題です。

  • 自分が知らない言語への翻訳の運用ノウハウ(翻訳者さんへ翻訳を依頼するためのノウハウ)
  • コンテンツ(ブログ記事など)の翻訳を実施した際の、コンテンツ管理ノウハウ

こういう話も聞けたらいいなー、と考えながら参加しました。もちろん聞くことができてますし、それ以上の知見が得られました。

お聞きした話(抜粋)

  • 行政が出す文書の翻訳の難しさ
    • 更新が滞る問題
    • 偉い人たちが自動翻訳で満足してしまう問題
    • 災害などの緊急情報の伝達の難しさ
    • 2020年のオリンピックに向けた課題
  • ビジネス向けのオンライン翻訳サービス YarakuZen の話
    • 訳語の統一に気を使いながら翻訳をするときに、とても便利そう
  • 翻訳業務のクラウドソーシング Conyac の話
    • チームを組んでもらって大人数で翻訳みたいなことも可能らしい。すごい。
  • WordPress の多言語化用プラグイン Bogo の話
    • RDBのデータ管理に関する話も飛び出してきて、かなり興味深い話だった。
  • ロケール/言語と国旗の問題
  • 日本語の難しさ:統計的アプローチが取りづらい

さいごに

主催の多言語団の皆様、参加された皆様、会場の JUSO Coworking さん、ありがとうございました!

おまけ:ぼやき

「 n ヶ国語」(n>=2)という日本語の表現からは、1言語1カ国みたいな過去の認識が垣間見えますね。
実際には1つの言語が複数の国で使われていたり(例:英語)、1つの国で複数の言語が公用語になっていたり(例:スイス)するので、あまり現実に沿った表現ではないという気がします。
言葉狩り(他の方が書かれている文章に文句をつけること)をするつもりはありませんが、自分が書く文章からは無くしていこうかな、ともうっすら考えたりしてます。この記事では使っていますが。

おまけ:ネタ

日中韓をはじめ、世界中で見つかる間違い英語を投稿して共有するためのサイトがあります。
www.engrish.com
かなり笑える内容なのですが、自分が作ったものが載ると思うと、なかなかつらいものがあります。
世界へ笑いを提供できるのなら、まあそれも一興ですが。

ひとまずは、載らないように 頑張ろう! #一句

名古屋のSVGイベントに参加してきました

名古屋の Web 界隈の集まりである WCAN(ダブキャン と読むそうです)主催のイベント、WCAN mini 2016 Vol.2 SVG Maniax in NAGOYA に参加してきました。

wcan.jp

これまで、SVGのオンラインのイベントには何度か参加していました。

ですが、オフラインでのイベントは非常に珍しいものです。新幹線に乗ってでも名古屋へ行く価値はありました。

得られた知見の数々

Togetterにまとまっているので、こちらを見られるのが良いでしょう。
togetter.com

自分で喋った内容

こんな内容で喋りました。

speakerdeck.com

このとき、デモで使った花火のSVGのソースは、こちらです。

<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 400 400">
	<rect fill="#000000" x="0" y="0" width="400" height="400"/>
	<defs>
		<g id="particle1">
			<rect x="196" y="90" width="8" height="20" fill="#c06090"/>
			<rect x="196" y="60" width="8" height="20" fill="#ff9030"/>
		</g>
		<g id="group1">
			<use xlink:href="#particle1" transform="rotate(0 200 200)"/>
			<use xlink:href="#particle1" transform="rotate(10 200 200)"/>
			<use xlink:href="#particle1" transform="rotate(20 200 200)"/>
			<use xlink:href="#particle1" transform="rotate(30 200 200)"/>
			<use xlink:href="#particle1" transform="rotate(40 200 200)"/>
			<use xlink:href="#particle1" transform="rotate(50 200 200)"/>
			<use xlink:href="#particle1" transform="rotate(60 200 200)"/>
			<use xlink:href="#particle1" transform="rotate(70 200 200)"/>
			<use xlink:href="#particle1" transform="rotate(80 200 200)"/>
		</g>
	</defs>
	<g>
		<use xlink:href="#group1" transform="rotate(0 200 200)"/>
		<use xlink:href="#group1" transform="rotate(90 200 200)"/>
		<use xlink:href="#group1" transform="rotate(180 200 200)"/>
		<use xlink:href="#group1" transform="rotate(270 200 200)"/>
	</g>
</svg>

このソースを拡張子 .svg で保存し、Webブラウザに読み込ませると、スライド中に登場する花火のイラストが表示されるはずです。
(スライド中に登場する画像は blur などのフィルタをかけていますが、下のソースでは省略しています。)
この画像は、時計の12時の部分にいる破片を時計回りに90度分だけコピーし、その90度の扇型のものを4つ並べて円形にしています。

ここで、保存したSVGのソースの <g id="particle1"> の子要素をいじくると、花火全体の見栄えが変わると思います。たった1箇所を変えるだけで全体が変わるのです!
みなさんもぜひ <use> 要素を活用していって下さい。

もちろん、SVG そのものも楽しく使っていきましょう!

さいごに

運営してくださっているWCANの皆様、セッションやLTで講演された皆様、そして当日参加された皆様、ありがとうございました!

参考図書

SVG Essentials

SVG Essentials

※英語です

Let's letsencrypt

もしかしたら今更…なのかもしれませんが、無償でSSL証明書を発行してくれるサービス Let's Encrypt を試してみました。

letsencrypt.org

特徴

  • 無償
  • 証明書の有効期限は3ヶ月程度。証明書を更新するタスクを定期自動実行することが推奨されている。revoke が突然走るかもしれないから、という背景もあるらしい。
  • 証明書の作り直しなどには回数制限がある。 https://letsencrypt.org/docs/rate-limits/
  • 多くのブラウザでは信頼されている(root証明書がインストールされている)、らしい。

試したかったこと

  • 簡単に導入できるのか?
  • 長期的な運用で困りそうなものは無いか?
  • 手元のブラウザで、本当に信頼されているのか?
  • ワイルドカード証明書、または SANs のある証明書を作ることができるのか?

Let's Encrypt の仕組み

このページを読むのが一番。英語ですけど。
letsencrypt.org

要は、Let's Encrypt のサーバと通信するクライアントが何かしら必要、ということです。
そのクライアントにも様々なものが存在するようですが、公式に推奨されているものとしてcertbotがあります。以下の 試してみた は全て、certbotを使ったものになります。

試した環境

Amazon Linux で試してみた

certbotのインストール手順の中には Amazon Linux は登場しません。
CentOS/RHEL6 に沿って作業をすると、「Amazon Linux は未だサポートしてないから --debug オプションつけて作業してや」みたいなメッセージが表示されます。
--debug オプションをつけて作業をしようとしましたが、面倒臭くなって途中で匙を投げてしまいました。

Ubuntu で試してみた

すんなり。
事前の Virtual Host の設定がキレイにできていれば、SANs も楽勝でした。

Debian で試してみた

手順の中にある $ sudo apt-get install python-certbot-apache -t jessie-backports が、一部の環境で上手くいきませんでした。
「jessie-backportsなんか知らんわ」といったメッセージでした。
ググったところ、こんなページが出ました。https://community.letsencrypt.org/t/unable-to-install-certbot/17916/11
ここのリンク先、https://backports.debian.org/Instructions/ の指示に従って jessie-backports を有効にしたら、あとは上手くいきました。

まとめと、今後の課題

  • 現時点では、Amazon Linux で使うのは大変そう
  • UbuntuDebian なら簡単そう
  • 長期運用について差し迫った問題は特に見当たらなかった
  • 自動更新の仕組みがコケたことを検知する仕組みは、用意しておくと安心かも
  • ブラウザ対応は、パッと見、問題なさそう
  • SANs 一手間かかるけどイケる
  • ワイルドカードは、今はサポートしてないっぽい:https://letsencrypt.org/docs/faq/

参考図書

本件を試すにあたって買ったりした訳ではないですが、オススメです。

暗号技術入門 第3版 秘密の国のアリス

暗号技術入門 第3版 秘密の国のアリス

マスタリングTCP/IP SSL/TLS編

マスタリングTCP/IP SSL/TLS編

さぁ、PDF手書きの世界へ。

PDFに関して様々な処理を行うためのプログラム pdftk をWebブラウザから呼び出すことができるように、pdftk wrapper という単純なツールを作って公開しました。

github.com

何のために作ったのか?

PDFはテキストではなくてバイナリのファイル。そう認識されている方は多いと思います。私もそうでした。
ところが、PDFのファイルをテキストエディタで開いてみると、どうでしょう? なにやら人間に読める文字がたくさん出てきませんか?
人間に読める文字が多いのなら、テキストエディタでPDFを作ることだって頑張ればできるはずです。
便宜上、テキストエディタでPDFを書くことを「PDF手書き」と呼んでいます。

様々なものを表現することができる、このPDFというファイルを、自分の手で心を込めてイチから組み上げていくという行為、とてもワクワクしてきませんか?
そう思われた貴方は、もう立派なPDF手書き職人です。早速学習を進めていきましょう。

学習を進めていくと、PDFの主要な部分は人間に読める文字だけれども最後あと一歩のところでバイナリを入力したり、相互参照テーブルという、データベースで言うところのインデックスみたいな情報を持たせるところで膨大な機械的作業が必要になることに気がつきます。
そんなときにお世話になるのが pdftk というツールです。

www.pdflabs.com

このツールに、「あと一歩のところだけどもまだ完成じゃない」PDFを与えると、必要な情報を付加したり整理整頓したりして、良い感じにPDFを再構成してくれます。
もちろん他にも数多くの機能があるのですが、pdftk の紹介はこのへんにしておきましょう。
言いたいことは、pdftk はPDF手書きを趣味にしている人たちにとって、面倒臭い単純作業をきちっとこなしてくれる、大変心強い味方であるということです。

ところがこの pdftk は、Macにインストールするのがなかなか難しかったりします。私は途中で心が折れてしまいました。
そこで、Ubuntu のマシンにインストールしておいた pdftk をMacから操作できるようにしよう、そしてそれはブラウザから操作できるようにしよう、と思って、Webアプリ化しようと思い立ちました。

環境構築

冒頭に掲げた GitHub のページを見て下さい。日本語版が欲しいという人は何らかの手段で筆者に連絡を下さい。要望が多ければ日本語版も書きます。

使い方

インストールしたサイトの index.html にアクセスすると、ファイルのアップロードフォームが表示されますので、ここでアップロードします。すると、pdftkで処理した結果のファイルをダウンロードするためのURLが示されるので、そこにアクセスします。

このwrapperはブラウザから操作できますが、もちろん curl のようなコマンドからでも操作できます。どんなオプションを与えれば良いのかは、index.html を見れば、普段からcurlをお使いのみなさんにはわかるでしょう。

PDF手書きを趣味にしよう

こういう素晴らしい環境も整ってきたので、みなさんにとってもPDF手書きを趣味にする絶好のチャンスです!
やりたい!と思った人は、PDFのファイルフォーマットを学ぶために、次のような本を持っておくと良いでしょう。

PDF構造解説

PDF構造解説

私は、テキストエディタでPDFを読み書きするという行為は2009年頃から始めましたが、PDFの仕様書はとても膨大なものであり読む時間を作ることができず、「見よう見まね」で様々なことをやっていました。
そういう あやふや な知識のまま長い年月が流れましたが、この本に出会ってからは人生が変わりました。PDFの仕様を親切に解説してくれているのです。

原著(英語版)は、こちら。

PDF Explained: The ISO Standard for Document Exchange

PDF Explained: The ISO Standard for Document Exchange

PDF Explained

PDF Explained

原著にはKindle版もあります。
なお、普段から英語版を読まれている方についても、この本に関しては日本語版をお勧めします。その理由は、日本語版には日本語のフォントについての言及が書き加えられているからです。これは貴重な情報です。


それではみなさん、最高のPDF手書き生活をお過ごし下さい!!

2016年11月6日 追記

この本の日本語訳のKindle版は現時点でも出されていませんが、O'reillyさんから電子版を購入することができます。購入はこちらから。
(追記ここまで)

イギリス遠征2016

イギリスへ行ってきた。
f:id:t_motooka:20160708112847j:plain

職業柄、海外へ旅行するのは至難の業である。

3月にはこのような発言をしている程だ。
休みを取ることができない訳ではない。筆者は実際にほぼ毎月2日間以上は休暇を取得している。決して、業界や勤務先がブラックであるという話ではない。(もちろん、参画しているプロジェクトの状態によっては、ブラックな環境に置かれることもあるだろうが)
飛行機に乗るという、インターネットに接続できない時間が長くなってしまうことこそが、海外旅行から我々サーバ管理者の足を遠ざけるのである。
最近では飛行中でもインターネット接続環境を得ることができる機体も徐々に普及してきているようであるが、それが十分に普及したとき、海外旅行への障壁は一段と下がるだろう。
今後の流れに期待したい。

続きを読む