Tag Archives: 国際化

How to set character set property to MQ message

前の仕事で、JavaとMQを使用してJMSを通じてメッセージをやり取りするときにメッセージキューのキャラクタセットを指定してもなぜか意図した通りにコード変換などが行われなくて、メッセージ自体にキャラクタセットを指定する方法がないかを探した挙句、下記のリンクに情報があるのをやっと見つけて何とか解決したことがありました。 MQのメッセージにキャラクターセットを指定する方法 最近になって、上記のようになったのは何か設定もしくは環境が変になっていたためらしく、通常はメッセージキューのキャラクタセットをきちんと指定していれば大丈夫らしいことが確認できたのですが、忘れないように一応メモがわりに記録しておきます。 キーワードは、JMS_IBM_Character_Setでした。

Posted in コンピュータ | Tagged , , , , , | Leave a comment

Perl 5.8 & I18N

最近、久々にPerlを使い、バージョン5.8を使ったのですが、昔のPerlと比べるとずい分と変わっているところも多く、文字列まわりでちょっと混乱し、ハマってしまったので、わかっている人には無駄な情報と思いますが、Perl 5.8の初心者の人等、それなりに役に立つこともあるかと思いまとめてみました。 例えば、下記のコードは、いわゆる日本語環境下では、何の問題もなく期待した通りに「日本語」という文字列が表示されます。 $string = “日本語”; print $string; で、普通はこれでいいように思うのですが、例えば、UTF-8でファイルに書き出したいと思って、下記のようなコードを実行し、作成されたtest.txtファイルを開いて見ると、見事に文字化けします。 open (OUT, “>:utf8”, “test.txt”) || die “Can’t open test.txt: $!\n”; $string = “日本語”; print $string; print OUT $string; close OUT; 私の場合、英語版のWindows XPで日本語ロケールを設定して使っているので、そのためにこういう問題が起きるのかと最初に思ってしまいました。特に、ほぼすべてのアプリケーションで日本語を表示できるようにするために、システムロケールは日本語にしてあるのですが、米国での使用を前提としたアプリケーションも同時に使うためにユーザロケールは英語(米国)に設定しているので、余計にそう思ったのですが、すべて日本語ロケールに設定しても、日本語版のWindows 2003で試しても同様の結果でしたので、Perl自体の実装の問題(というか仕様)であると思います。 この環境下でも上記の何の変哲もないコードは正常に実行され、「日本語」という文字列が表示されます。しかし、それはたまたまであって内部的には、実はガベージイン・ガベージアウトが行われているのです。Javaのようにソースコードファイルがどのエンコーディングかを指定できるようにするのが本来は筋なのだと思うのですが、Perlの場合は、そういう指定ができるのはutf8を使うかどうかという指定(use utf8を頭に書く)だけが存在し、将来はUTF-8で一本化する方針のため(use utf8もなくす)、シフトJIS等でソースを作成することは正式にはサポートしないという立場のようです。で、上記のようにシフトJISで保存したファイル内のリテラル文字は、適当なバイト列として内部的には扱われてしまうようで(UTF-8になっているわけでもない様子)、文字列に対する操作やコード変換を伴う入出力を行わない限りは、その事実に気付かないということになります。 この場合、主に2つの方法があります。一つ目は、use utf8を宣言して、ファイル自体をUTF-8で保存し、Perl外部との入出力には適切なエンコーディング情報を指定してあげる方法です。コードは、大体次のようになります。 use utf8; open … Continue reading

Posted in コンピュータ | Tagged , , , , , , , , , , , , , , , | Leave a comment

In Silicon Valley, global outsourcing going full circle

下記の記事をPress Democratで読みました(元はWall Street Journal)。 In Silicon Valley, global outsourcing going full circle この記事によれば、インドのハイテク産業で働く技術者の給料がすごい勢いで上昇した結果、シリコンバレーへの回帰現象が一部で見られ始めたようです。こういう現象って以前からいつかは起きるだろうと思っていたので、「やっぱり」という感じなのですが、アメリカからインドの人たちを管理するのはメリットよりもデメリットの方が大きいと思うんですよね。時差があまりいい感じでオーバーラップしていないので、インド側かアメリカ側が必ず変な時間に働かなくてはならなくなるし、英語ができるとは言っても、やはりアクセントやらがだいぶ違うので普通のアメリカ人からすれば聞き取りにくかったりして、必ずしもスムーズなコミュニケーションを保障はしてくれないわけです。そうは言っても平均給料が以前はシリコンバレーの4分の1だったので、それらの不便さをカバーしてあまりあるほどの経済メリットがすべての欠点に目をつぶらせていたわけですが、最近はシリコンバレーの4分の3程度にまで接近してしまったために欠点の方が目立ち始めたというわけです。 上記記事によれば、ジュニアレベルのエンジニアはバンガロールでも$50,000~$60,000払わないと雇えないそうで、シリコンバレーで$80,000で雇えるのになんでわざわざインドで雇うのかと、こうなってきているようです。で、今はルーマニアとかポーランドへ優秀で低賃金の技術者の需要がシフトしてきているようだと書いてありますね。 インドでも一番安い技術者は年収$5,000からだとありますので、全体が上昇したわけではなく、「ちゃんとした経験のある」 技術者の賃金インフレだということらしいです。まあ、こういうのを見ていると結局需要のあるスキルや経験があれば市場価格に自然と近づいていくという当然の帰結が起きているわけで、少なくとも技術者の求人に関しては、本当にグローバルに自由経済市場が広がれば、世界中のどこにいようと少し時間が経てば適正価格に落ち着いてしまうということが実証されつつあるわけで、単純な需要と供給に基づく市場経済論理が世界規模でもある程度働いているということが言えそうです。 ということは、結局需要があって、かつ需要よりも供給の少ない経験やスキルがある技術者になっていれば、世界のどこに居ても食っていくのに心配なくなるということですね。ここで「需要よりも供給の少ない」 というところがポイントで、難しいことをする必要は必ずしもないということです。要は「他人がやらなさそうなこと」を選ぶのが肝心で、日本的な「みんながそうするから、私もそうしておけば安全だろう」的な考えは、確かに安全ではあるかも知れませんが、結果的に安売りにつながるということになっていくのではと思います。まあ、「他人がやらなさそうなこと」を選ぶのって、結構勇気がいりますけどね。需要の波が来たときに初めてペイオフするので、それまでは「なんでこんなこと選んじゃったんだろう」とか思うこともあるわけですから、やはり好きで、長続きできそうなことでないとうまく行かないことが多いですけどね。この辺は私自身は、特にアメリカに来てからは、一応少しは心がけてきたつもりではあります。とは言え、実行していくのは本当に難しいのでありますが、今後もよく肝に銘じておきたいことの一つです。

Posted in エッセイ, ビジネス, 日記 | Tagged , , , , , , , , | Leave a comment

Windowsの英語版環境でASP.NETのサイト作成をする際の日本語に関する注意事項

Windows 2000でしかまだ試していないので2003やXPだと少し話しは違うかもしれないけど、きっと似たような話だと思う。 最近、ASP.NETを使った日本語Webアプリケーションを英語環境へ移す作業をやっていて、色々と気づいた点や再確認したことをメモ。 web.configというファイルの設定で、globalization要素の一つにfileEncodingというのがあるのだが、SDKの記述には、fileEncodingを指定しないときはどういう動作なのかははっきりと書いていない。Shift_JISで作成されたaspxファイルでfileEncodingを指定しないと、システムロケールを日本語にしても初期動作としてはANSI(iso-8859-1?)ファイルとして読み込んでしまうみたい。ところが同じ環境で、一度、fileEncodingをshift-jisで指定して、きちんと動作させた後、fileEncodingの指定を削除してしまうとどこかに記憶されているのだろうか、なぜかちゃんと動作する。この動きはいまいちよくわからない。 ところで、システムロケールについては、マイクロソフト のGlobal DevサイトのFAQ には、 The system locale (sometimes referred to as the system default locale), determines which ANSI, OEM and MAC codepages and associated bitmap font files are used as defaults for the system. These codepages … Continue reading

Posted in Uncategorized | Tagged , , , , | Leave a comment