0:00:04.998,0:00:08.248 「WordPress の言語別機能とそのあり方」 0:00:08.338,0:00:12.648 スピーカーは倉石さんです。[br]よろしくお願いします! 0:00:19.495,0:00:21.305 倉石政典です。 0:00:24.461,0:00:26.491 みなさん、 WordPress 4.0 で 0:00:26.578,0:00:29.518 言語まわりの大きな変化があったのを[br]覚えてますでしょうか。 0:00:33.726,0:00:36.986 WPLANG 定数が非推奨となり、 0:00:37.062,0:00:40.262 Language chooser で言語の master value を[br]設定するように 0:00:40.356,0:00:41.796 変更が行われました。 0:00:44.214,0:00:46.764 こちらの画像は、日本語のインストールで 0:00:46.847,0:00:50.827 外部ネットワークに繋がっていないものと[br]仮定してください 0:00:51.438,0:00:55.438 「インストール済み」に、英語と日本語があり[br]言語が日本語に設定されています。 0:00:58.026,0:01:01.576 この状態で[br]日本語の翻訳ファイルを削除します。 0:01:03.895,0:01:09.255 すると、インストール済みの文字列が[br]英語表記の Installed に変わり 0:01:09.516,0:01:13.236 そこから、日本語が消えて[br]英語だけになってしまいました。 0:01:13.367,0:01:15.257 下には、「Available」と書いてありますが 0:01:15.304,0:01:17.474 翻訳ファイルを手に入れられない環境では 0:01:17.525,0:01:20.755 言語を日本語に設定することはできません。 0:01:20.791,0:01:23.041 これは一体、どういうことでしょうか。 0:01:25.111,0:01:30.061 それは、翻訳ファイルの存在がある場合に限り[br]言語設定ができる 0:01:30.148,0:01:33.578 という仕様変更が[br]バージョン4.0で行われたからです。 0:01:34.087,0:01:37.347 なぜ、このような制限が[br]加えられたのでしょうか。 0:01:40.360,0:01:43.800 それは「翻訳ファイル集約主義」の[br]考えによるものです。 0:01:44.608,0:01:48.108 これは、WordPress のコア開発で[br]現在主流となっている 0:01:48.228,0:01:52.228 言語別機能に関する実装方式です。 0:01:53.598,0:01:55.948 ぼくが勝手に名づけて[br]そう呼んでいるだけです。 0:01:56.069,0:02:00.699 そういうコンセプトがある、ということを[br]理解していただければと思います。 0:02:00.869,0:02:03.539 どういうものか[br]言葉で定義するならば、 0:02:04.529,0:02:09.579 「言語ファイルに、各言語の特性を[br]機能レベルまで集約させて 0:02:09.809,0:02:11.661 一元的に管理するという考え」 0:02:17.536,0:02:19.810 このコンセプトを推し進めてきたのは 0:02:11.821,0:02:15.851 といった感じになると思います。 0:02:19.810,0:02:22.646 リードデベロッパー、アンドリューネイシンです。 0:02:22.646,0:02:27.437 彼はほんのすこし前まで、IAT の[br]国際化の責任者をしていました。 0:02:27.437,0:02:29.838 「翻訳ファイル集約主義」[br]という基本アイディアを 0:02:29.838,0:02:32.323 彼が考えたのかはわかりませんが 0:02:32.323,0:02:37.222 どのように実装するかは彼が中心となって[br]考えていたと思います。 0:02:37.222,0:02:40.024 これから少しネガティブな話をしますが 0:02:40.024,0:02:42.671 僕は、基本的には彼のことが大好きで 0:02:42.671,0:02:45.278 尊敬できるすばらしい人物だと思っていますので 0:02:45.278,0:02:48.196 誤解しないよう、よろしくお願いします。 0:02:48.196,0:02:53.601 僕は、彼が国際化の責任者の立場から離れた時[br]本当に寂しく感じました。 0:02:53.601,0:02:56.920 彼は多くの労力を費やして[br]英語圏以外のユーザーのために 0:02:56.920,0:03:00.250 WordPress をよくしてきてくれました。 0:03:00.250,0:03:01.981 ネイシンありがとう。 0:03:01.981,0:03:04.511 この場を借りて、心から礼をいいたいと思います。 0:03:04.511,0:03:11.285 でも、安心してください。[br]次の i18n 責任者も素晴らしい人です。 0:03:11.285,0:03:13.252 ニューネイシンこと、 0:03:13.252,0:03:19.598 オーシャンナイン、[br]ドミニクシニグさんです。 0:03:19.598,0:03:23.337 国際化関連の新しい技術責任者ですので[br]覚えておいてください。 0:03:23.337,0:03:29.880 何か困ったことがあったときは[br]きっと力になってくれると思います。 0:03:32.380,0:03:36.975 翻訳ファイル集約主義の実装について[br]具体的に説明します。 0:03:36.975,0:03:40.614 例えば、このような PHP のコードがあるとします。 0:03:40.614,0:03:45.716 _x というのは、[br]コンテキストの 2番目のパラメータにくる翻訳関数です 0:03:46.863,0:03:48.393 画面の内容を説明しますと、 0:03:48.393,0:03:52.942 第1パラメーターの 'words' は、[br]翻訳対象文字列であり、ID 0:03:52.942,0:03:57.766 第2パラメーターの[br]'word count: words, characters or all?' は、 0:03:57.766,0:04:01.259 ID のコンテキストを示す追加文字列です。 0:04:01.259,0:04:05.565 この部分が違えば、翻訳対象の ID が同じでも[br]衝突すること無く 0:04:05.565,0:04:11.482 別のものとして訳すことができる[br]という仕組みです。 0:04:12.682,0:04:18.552 先ほどの x から抽出された翻訳ファイル内の[br]エントリーがこちらになります。 0:04:19.992,0:04:23.248 msgctxt が、コンテキスト 0:04:23.248,0:04:26.541 msgid が、翻訳対象文字列 0:04:26.541,0:04:31.353 msgstr は、翻訳語の文字列です。 0:04:31.353,0:04:34.890 ワーズ?などで、のあとにある単語などに訳されるはずですが、 0:04:34.890,0:04:36.018 ここで期待されているのは、 0:04:36.018,0:04:42.949 アルファベットの文字列の 'words' は、[br]'charactors' か 'all' になります。 0:04:43.209,0:04:46.107 日本語の場合は、もうすぐリリースされるバージョン4.3から 0:04:46.107,0:04:51.753 'all' を選択するべきなので[br]画面の赤い部分はそのようになっています。 0:04:51.753,0:04:54.613 そしてこの値は、 0:04:54.613,0:04:59.830 こちらの画面の左下、[br]管理画面投稿エディタの文字数の部分 0:04:59.830,0:05:03.002 文字列カウントの方式を、[br]単語数ベースなのか、 0:05:03.002,0:05:09.561 あるいは文字数ベースなのかを決定するオプションの値として利用されます。 0:05:13.401,0:05:15.954 ここまでの話で理解できたと思いますが 0:05:15.954,0:05:20.903 現在 WordPress では、言語別機能で利用されるオプションの値は 0:05:20.903,0:05:22.272 データベースの中ではなく 0:05:22.272,0:05:26.242 各言語の翻訳ファイルの中にあります。 0:05:26.242,0:05:27.959 このことを自分は知っているという方は 0:05:27.959,0:05:30.855 この中にどれだけ[br]いらっしゃいますでしょうか。 0:05:30.855,0:05:34.182 お手数ですが、[br]自分は知っている、という方 0:05:34.182,0:05:45.075 手を挙げていただけますか? 0:05:45.075,0:05:49.448 (メガネをかける) 0:05:49.448,0:05:55.118 ゼロですか?[br]誰もいないですか? 0:05:58.888,0:06:02.602 参考になりました。ありがとうございます。 0:06:03.339,0:06:06.324 言語別機能の挙動を制御する[br]オプションの値を 0:06:06.324,0:06:08.949 言語ごとの翻訳ファイルに保持して、[br]読み込ませる 0:06:08.949,0:06:10.513 というアイディアが出てきた時は 0:06:10.513,0:06:13.801 とても合理的で良いアイディアだな、[br]と感じました。 0:06:13.801,0:06:15.860 しかし、色々なことが出てきて、 0:06:15.860,0:06:19.160 すぐにその考えは変わりました。 0:06:21.200,0:06:23.460 言語別機能とは、何か? 0:06:23.460,0:06:27.925 あらためて説明するまでもないと[br]思いますが 0:06:27.925,0:06:34.718 文字数での抜粋、[br]ISO-2022-JP でのメールなど、 0:06:34.718,0:06:37.444 特定の言語環境でのみ必要な機能で、 0:06:37.444,0:06:41.745 WP Multibyte Patch で取り扱って[br]いるような機能を指します。 0:06:41.745,0:06:46.269 日本語圏の人間にはごくごくあたりまえの[br]存在だと思いますが 0:06:46.269,0:06:52.006 ところが、WordPress 本体で言語別機能の取り組みが開始されたのは 0:06:52.006,0:06:55.631 2012年、つい3年前です。 0:06:55.631,0:07:00.188 WordPress が初めてリリースされたのが[br]12年前の2003年、 0:07:00.188,0:07:04.027 WP Multibyte Patch が初めてリリースされたのが、[br]8年前、 0:07:04.027,0:07:05.575 2007年ですので、 0:07:05.575,0:07:11.073 これは非常に遅い対応であるといえます。 0:07:11.073,0:07:12.455 具体的には、 0:07:12.455,0:07:18.287 こちらの、エディターの文字数ベースのカウントの実装や、 0:07:18.287,0:07:22.724 こちらの抜粋関数での、文字数ベース[br]抜粋での対応などが、 0:07:22.724,0:07:27.676 コアでの言語別機能を意識した初めての実装だと思います。 0:07:27.676,0:07:31.611 ぼくは、このどちらの実装の時もチケットをみて[br]リアルタイムで関わっていたのですが、 0:07:31.611,0:07:36.493 後々、今に至るまで[br]影響をおよぼすこととなる、あまり好ましくない実装を 0:07:36.493,0:07:41.169 このときは見過ごしていました。 0:07:41.169,0:07:45.740 翻訳ファイルがないとオプション値が読み込まれない 0:07:45.740,0:07:49.369 これは、データが保存されているのだから 0:07:49.369,0:07:51.367 当たり前の話です。 0:07:51.367,0:07:56.511 MySQL のデータが消えてしまえば[br]WordPress サイトが見れなくなるのと同じことです。 0:07:56.511,0:07:59.255 このような事態は、めったにあってはならないことですが、 0:07:59.255,0:08:03.186 翻訳ファイルに関しては色々なケースで発生します。 0:08:03.186,0:08:07.272 ネットワークに繋がらない環境では、翻訳ファイルは手に入りません。 0:08:07.272,0:08:09.808 ユーザーが誤って削除してしまうこともあります。 0:08:09.808,0:08:15.866 また、そもそも個人ブログなどでは[br]公開側のインターフェイスが翻訳されている必要がない、 0:08:15.866,0:08:19.736 あるいは、一時的に翻訳させたくないケースも少なくありません。 0:08:19.736,0:08:22.555 ぼくのサイトでは、翻訳ファイルは管理画面だけにして、 0:08:22.555,0:08:24.863 公開側では読み込んでいません。 0:08:24.863,0:08:29.001 このように、翻訳ファイルが存在しないという状況が[br]いろいろあり得るのですが、 0:08:29.001,0:08:33.292 そんなとき、機能まで完全に英語版になってしまう、 0:08:33.292,0:08:35.706 抜粋がきかなくなってしまう、といったような、 0:08:35.706,0:08:41.840 不便で不安定な実装は好ましくありません。 0:08:41.840,0:08:43.950 誤って修正された場合、 0:08:43.950,0:08:48.370 重要な機能が正しく動作しなくなってしまう。 0:08:48.370,0:08:50.642 これは深刻な問題です。 0:08:50.642,0:08:58.001 現在、翻訳は、GlotPress という仕組みで[br]ボランティアによって共同で行われています。 0:08:58.001,0:09:00.337 こちらはそのインターフェイスですが、 0:09:00.337,0:09:03.074 現在、WordPress 周辺の様々な文字列翻訳が 0:09:03.074,0:09:05.174 こちらのシステムで行われており、 0:09:05.174,0:09:09.016 WordPress.org のフォーラムの[br]アカウントさえ持っていれば 0:09:09.016,0:09:12.521 どなたでも翻訳に参加することが出来ます。 0:09:12.521,0:09:18.685 こちらで行われた翻訳は、自動的に[br]世界中の WordPress サイトで配信されます。 0:09:18.685,0:09:22.487 WordPress の管理画面で、[br]「新しい翻訳が利用可能です」という通知を 0:09:22.487,0:09:24.005 頻繁に見かけると思います。 0:09:24.005,0:09:27.392 例えば、こちらのシステムで 0:09:27.392,0:09:33.531 新米の翻訳者が、誤って日本語の抜粋カウントを[br]単語ベースに変えてしまったら 0:09:33.531,0:09:36.321 どうなると思いますか? 0:09:36.321,0:09:39.886 すぐにネット中が[br]「WordPress で抜粋が行われなくなった」という 0:09:39.886,0:09:44.066 日本人ユーザーの悲鳴でうめつくされることになるかもしれません。 0:09:44.066,0:09:46.611 しかし実際は、そこまでひどいことには[br]ならないと思います。 0:09:46.611,0:09:49.278 なぜなら、日本人ユーザーの多くの方が使っている 0:09:49.278,0:09:52.374 WP Multibyte Patch が、翻訳ファイルを利用しないで 0:09:52.374,0:09:56.424 抜粋カウント方式を文字数ベースに固定する機能がついており 0:09:56.424,0:09:58.778 デフォルトで有効となっているからです。 0:09:58.778,0:10:01.418 したがって、WP Multibyte Patch を有効にしている方は 0:10:01.418,0:10:06.505 とりあえずは、この問題を心配する必要はありません。 0:10:06.505,0:10:09.241 その他、使い勝手の問題としては 0:10:09.241,0:10:14.960 仕様として知られていない、先ほどゼロだったことからわかるように 0:10:14.960,0:10:17.658 誰も知らない仕様です。 0:10:17.658,0:10:19.351 理解しにくい。 0:10:19.351,0:10:25.736 ユーザーによる編集が困難、などが挙げられます。 0:10:25.736,0:10:28.528 Polyglots という WordPress 国際化の公式ページに 0:10:28.528,0:10:33.082 この問題についての様々な問題や意見が投稿されているスレッドが有ります。 0:10:33.082,0:10:35.994 英語ですが、興味がある方は見てみてください。 0:10:35.994,0:10:38.944 こちらには、僕も意見を投稿しています。 0:10:38.944,0:10:40.510 主な内容としては、 0:10:40.510,0:10:44.964 翻訳ファイルは中身が常に変動して[br]存在自体が不安定なので 0:10:44.964,0:10:47.861 重要な言語機能のオプションがそこにある、ということは 0:10:47.861,0:10:52.341 言語別機能の動作の信頼性を損ねている、ということや、 0:10:52.341,0:10:57.444 翻訳ファイルに言語別機能のオプション値を保存する実装を廃止して、 0:10:57.444,0:11:05.902 翻訳ファイルと言語別機能を完全に分離するべきである、ということなどです。 0:11:05.902,0:11:08.224 投稿には書きませんでしたが、 0:11:08.224,0:11:10.089 翻訳ファイルに保存しないならば、 0:11:10.089,0:11:17.261 言語別のオプションは、どこに保存されるのが望ましいか、という課題があります。 0:11:18.201,0:11:20.689 思いつくのは、データベースの中 0:11:20.689,0:11:25.428 あるいは、フィルターできる形での値のハードコーディングです。 0:11:25.428,0:11:28.553 WP Multibyte Patch は、今後[br]後者のアプローチで 0:11:28.553,0:11:34.641 実験的に取り入れていくかもしれません。 0:11:36.731,0:11:40.539 これは、Make.WordPress.org のトップページに使われている 0:11:40.539,0:11:44.402 2012年のコミュニティサミットの時の[br]集合写真です。 0:11:44.402,0:11:50.713 前から2列目、赤いベストのマットの右隣[br]チェックのシャツがネイシンです。 0:11:50.713,0:11:57.286 階段の上のほう、右端で、[br]グレーの帽子にメガネをかけているのがぼくです。 0:11:57.286,0:12:03.980 Contact Form 7 の三好さんもいるんですが[br]どこにいるかわかりますでしょうか。 0:12:06.910,0:12:10.083 僕はこのとき以来、2,3年越しでネイシンと 0:12:10.083,0:12:13.864 「翻訳ファイル集約主義」の問題点について[br]やりとりをしていたのですが 0:12:13.864,0:12:17.973 それは、冒頭で話した2014年の[br]バージョン 4.0 の実装で 0:12:17.973,0:12:22.833 ひとつのクライマックスを迎えました。 0:12:22.833,0:12:27.890 バージョン 4.0 で行われた[br]翻訳ファイルの存在がある場合に限り、 0:12:27.890,0:12:31.024 言語設定ができる、という実装。 0:12:31.024,0:12:34.327 これには先程述べた翻訳ファイルがないと 0:12:34.327,0:12:37.309 オプション値が読み込まれない、という問題の防止策としての 0:12:37.309,0:12:39.167 意図があったように思います。 0:12:39.167,0:12:41.848 真意はわかりませんが、しかしこれは明らかな 0:12:41.848,0:12:47.386 本末転倒の、誤った実装です。 0:12:47.386,0:12:50.115 正しくはこのようになるはずです。 0:12:50.115,0:12:55.076 なぜなら、言語設定に合わせて[br]適切な言語ファイルを読み込むという動作が 0:12:55.076,0:12:57.860 言語別機能のひとつに過ぎないからです。 0:12:57.860,0:13:03.359 また、これは長年の WordPress の仕様でもありました。 0:13:05.309,0:13:09.425 「言語別機能は、翻訳よりも重要である」 0:13:09.425,0:13:11.569 英語圏の開発者の多くは、 0:13:11.569,0:13:15.769 非英語圏のユーザーにとって言語別機能がいかに大切であるか、ということを 0:13:15.769,0:13:17.561 理解していません。 0:13:17.561,0:13:19.899 いかにインターフェイスが日本語になっていようとも、 0:13:19.899,0:13:23.377 抜粋が機能しなかったり、日本語のメールが文字化けしてしまうようなシステムは 0:13:23.377,0:13:25.177 利用したくありません。 0:13:25.177,0:13:26.703 逆に、インターフェイスが英語でも、 0:13:26.703,0:13:29.625 便利で、日本語の処理に問題がないシステムであったなら、 0:13:29.625,0:13:32.358 多くの日本人が利用するでしょう。 0:13:32.358,0:13:34.802 そもそも、英語が読める人にとっては 0:13:34.802,0:13:37.859 インターフェイスが翻訳されている必要は無いのですから 0:13:37.859,0:13:42.824 翻訳とは、オプションで選べる、ピンのようなものであると思います。 0:13:46.274,0:13:51.833 こちらのチケットで、4.0 の問題点について[br]話し合いが行われました。 0:13:51.833,0:13:55.917 結果として「翻訳ファイル集約主義」に欠陥があること、 0:13:55.917,0:13:59.442 また、言語別機能が翻訳よりも重要であるということを 0:13:59.442,0:14:01.484 ネイシンが理解して、受け入れてくれたことは 0:14:01.484,0:14:03.365 大きな収穫でした。 0:14:03.365,0:14:08.869 そしてその後、4.0以降の言語設定の実装が[br]次のように変更されました。 0:14:10.649,0:14:15.072 WordPress を日本語でインストールする。 0:14:15.072,0:14:19.088 日本語の翻訳ファイルを削除。 0:14:19.088,0:14:22.065 言語を日本語に設定することができなくなる。 0:14:22.065,0:14:26.081 と、ここまでは先ほどの説明と同じです。 0:14:26.081,0:14:34.265 次に、wp-config.php に 'WPLANG' 'JA' を加えます。 0:14:34.265,0:14:39.441 すると、今度は日本語が選択肢にあらわれて[br]設定できるようになります。 0:14:39.441,0:14:46.274 翻訳ファイルがないので、[br]インターフェイスは英語のままです。 0:14:46.274,0:14:54.079 この状態で英語に設定すると、[br]今度は WPLANG は不要という注意が出てきます。 0:14:55.629,0:14:59.782 WPLANG は実は廃止になったわけではなく、別の役割、 0:14:59.782,0:15:04.442 翻訳ファイルがない場合の[br]フォールバックとして残っています。 0:15:07.302,0:15:14.397 また、これは翻訳ファイルの有無にかかわらず、[br]言語設定を自由に行なえる唯一の方法である、 0:15:14.397,0:15:21.339 ということを知っておいてください。 0:15:21.339,0:15:24.072 WordPress の i18n の実装で 0:15:24.072,0:15:28.382 「翻訳ファイル集約主義」が問題であることについて説明しましたが 0:15:28.382,0:15:32.131 もう一つの大きな問題があります。 0:15:32.131,0:15:37.354 それは、PHP で使われている[br]正規表現のライブラリーである、 0:15:37.354,0:15:40.410 PCRE の挙動が不安定であり 0:15:40.410,0:15:42.276 そのために、一部環境で 0:15:42.276,0:15:45.489 マルチバイトの文字列が破壊されてしまうという問題で、 0:15:45.489,0:15:49.550 WordPress の世界における大きなマルチバイトのバグの原因となっています。 0:15:55.970,0:15:59.039 Perl 互換の正規表現の置換関数で、 0:15:59.039,0:16:04.720 空白文字を、エスケープシーケンスである \s が[br]マルチバイト文字の一部にマッチしてしまい、 0:16:04.720,0:16:08.164 文字を破壊して[br]文字化けを起こすことがありますが、 0:16:08.164,0:16:09.673 このようなバグを引き起こすコードが 0:16:09.673,0:16:15.477 WordPress のいたるところに潜んでいます。 0:16:15.477,0:16:19.969 WordPress では、文字列操作の多くを[br]Perl 互換の正規表現に依存しているために 0:16:19.969,0:16:23.694 この問題が起こります。 0:16:26.254,0:16:28.105 解決策として、 0:16:28.105,0:16:30.949 U 修飾子を利用する方法があります。 0:16:30.949,0:16:36.243 この修飾子を使うと[br]最初の文字列が、UTF-8 として認識されるようになり 0:16:36.243,0:16:40.850 \s がマルチバイトの一部にマッチしてしまうことがなくなります。 0:16:40.850,0:16:46.677 しかし、一見理想的に思えるこの解決策には[br]落とし穴があります。 0:16:47.807,0:16:53.907 PCRE U 修飾子の利用には[br]コンパイル時に UTF-8 サポートのオプションが必要で 0:16:53.907,0:16:57.691 それが全てのユーザー環境でコンパイルされているとは[br]限らないということが 0:16:57.691,0:16:59.669 徐々にわかってきました。 0:16:59.669,0:17:05.634 つまり、ユーザーの環境においては[br]この方法はうまくいかないのです。 0:17:07.594,0:17:12.762 ただでさえ、PCRE の Unicode property support が[br]コンパイルされているか否か、 0:17:12.762,0:17:14.233 また、そのオプションにより 0:17:14.233,0:17:18.853 \s の挙動が異なることまでわかってきました。 0:17:21.073,0:17:25.798 これらの詳しい情報に興味がある方は、[br]こちらのチケットを見てみると良いでしょう。 0:17:25.798,0:17:27.556 大変難しい内容ですが、 0:17:27.556,0:17:31.196 PHP 開発者の方は読んでみることを[br]おすすめします。 0:17:31.196,0:17:34.517 Unicode property support の挙動に関する PHP のバグは、 0:17:34.517,0:17:38.153 なんとこのチケットでのリサーチから発見されました。 0:17:38.153,0:17:42.954 発見者は、Robert Chapin さんと、 0:17:42.954,0:17:45.168 Andrew Ozz さんです。 0:17:45.168,0:17:50.256 この2人は、最重要になる[br]PCRE library 作者のところまで行き 0:17:50.256,0:17:53.067 問題の根源をつきとめました。 0:17:53.067,0:17:58.801 この発見は、今まで不明だった[br]PHP のファイル互換正規表現関数の挙動を知る上で 0:17:58.801,0:18:04.415 多くの開発に役に立つものと思われます。 0:18:05.473,0:18:09.694 PCRE が絡んだ、文字破壊の最新の解決策のゆくえを知りたい方は、 0:18:09.694,0:18:13.263 こちらのチケットを定期的にチェックしてみるといいでしょう。 0:18:13.263,0:18:19.177 今のところ、 WordPress コアではこの問題に対する決定的な解決策がないため 0:18:19.177,0:18:23.020 チケットは、バグが直されないまま一年以上に渡り保留されていますが 0:18:23.020,0:18:29.447 いつかは解決する時が来るでしょう。 0:18:29.447,0:18:34.966 WP Multibyte Patch では、WordPress コアでは[br]直せない PCRE の問題箇所の幾つかを 0:18:34.966,0:18:37.239 修正しています。 0:18:37.239,0:18:40.776 コアでは直せないものを、なぜ[br]WP Multibyte Patch で直せるのか。 0:18:40.776,0:18:44.497 その秘密は、WP Multibyte Patch では 0:18:44.497,0:18:49.338 マルチバイト文字列関数を提供する mbstring が PHP に組み込まれていることを 0:18:49.338,0:18:52.576 プラグイン有効化の条件としていることです。 0:18:52.576,0:18:55.416 そして、より安全な mbstring 系の関数で 0:18:55.416,0:18:59.717 コアの問題のある PCRE 系のコードを置き換えています。 0:18:59.717,0:19:03.922 WordPress コアでは、mbstring は[br]システム要件ではないため 0:19:03.922,0:19:07.239 このように、簡単に直すことは出来ません。 0:19:07.239,0:19:15.158 このように、プラグインだからこそ直せる問題[br]というものもあるということです。 0:19:17.538,0:19:23.625 最後に、日本語ユーザー全体の課題、[br]マルチバイト圏ユーザー共通の課題について 0:19:23.625,0:19:25.815 話したいと思います 0:19:25.815,0:19:27.974 いま、ローカル言語チームが 0:19:27.974,0:19:32.297 ローカルパッケージに、独自の言語[br]特有機能を追加するための自由領域が 0:19:32.297,0:19:34.688 制限される方向にあります。 0:19:34.688,0:19:39.494 そして、近いうちにほとんどなくなるかもしれないという状況にあります。 0:19:39.494,0:19:41.198 WordPress の良い所として、 0:19:41.198,0:19:45.251 コンパチビリティの重視が挙げられますが 0:19:45.251,0:19:47.071 これは、言い換えれば 0:19:47.071,0:19:52.453 一度実装された機能はなかなか覆せないということでもあります。 0:19:52.453,0:19:55.169 だからこそ、我々マルチバイト圏のユーザーにとって 0:19:55.169,0:19:58.512 WordPress が使いにくくなってしまうような実装が行われないよう 0:19:58.512,0:20:02.330 目を光らせていることが大切なのです。 0:20:02.330,0:20:08.162 みんなで協力し、日本語についてよく知らないコア開発者の人たちを助けて 0:20:08.162,0:20:12.367 WordPress がいつまでも我々マルチバイト圏の[br]ユーザーにとって使いやすいツールであるように 0:20:12.367,0:20:15.530 見守っていけたらと思います。 0:20:15.530,0:20:20.085 ご清聴ありがとうございました。 0:20:20.085,0:20:26.517 ありがとうございました。 0:20:26.517,0:20:45.221 スピーカーは倉石政典さんでした。もう一度拍手をお願いします。