ホームページの方をいろいろ更新

去年更新の方が停滞していたので、今年は少し更新するようにしました。ブログの方にもちょくちょく書くつもりだったんですがタイミングがなかったので今回まとめて書いておきます。ちなみに更新しているのは「sorceryforce.net」の方で「sorceryforce.com」ではありません。今後は「sorceryforce.net」の方を中心に更新していくつもりです。

各 Tips に概要を追加

各コンテンツのページの最初に概要が入るように、一応ローカルでも概要を登録していたのですが、サーバープログラムの方でまだ出力対応してなかった(というかローカルで作った概要すら取り込んでいない状態だった)ので、今回プログラム改修する際に概要を表示できるように対応しました。とはいってもコンテンツ内容量よって概要を入れるか入れないか切り分けていたりするので全ページに概要が表示されているというわけでもないのですが…。

各 Tips ページにツイートボタンを追加

Twitter のツイートボタンをページの後ろあたりに入れてみました。デフォルトではツイートするときに「ページタイトル – URL」となるのですが、タイトルによっては自分で文章いれてツイートしたのかわかりにくくなりそうだったので、ツイート文章の最初に「Read : xxxx」とつくようになってます。

今回入れたページは Tips 系のページだけになってます。他のページに入れるかどうかは検討中です。

各 Tips 公開

Project Linker を使用して複数のプロジェクトでソースコードを共有する

Visual Studio で複数のプロジェクトでソースコードの共有を自動化させる拡張プラグイン「Project Linker」を使用した説明を載せました。

Project Linker 2012 を Visual Studio 2013 で使用する

Project Linker 2012 は Visual Studio 2012 にしか対応していないため、これを Visual Studio 2013 で動作するための手順を載せています。

リモートデスクトップによる接続を行うための設定

元々の記事は sorceryforce.com の方に載せていたのですが、Windows 7, Windows Server 2008 R2 までしか書いてなかったので、今回 Windows 8, Windows 8.1, Windows Server 2012, Windows Server 2012 R2 を追加しました。

Windows 8, Windows Server 2012 で IME の入力状態をアプリケーションごとに持たせるようにする

元々ブログに書いていた記事なのですが、ブログのコンテンツはどんどん埋もれていってしまうので新たに書き起こしました。Windows 8.1, Windows Server 2012 R2 の確認も追加しました。

]]>

URLから言語を指定できるようにしました

sorceryforce.net のサイトのほうですが、今まではブラウザに設定されていた言語設定によって対象の言語で表示するようにしていましたが、URL から表示する言語を設定できるようにしました。

アドレスの後ろに「?lang=en」のようにクエリ文字列を指定すれば対象言語で表示できます。今は40言語程度対応していますが、対応外の言語を指定した場合は日本語で表示されます(たぶん)。

あと、このパラメータはほかの画面に引き継げないので、ほかの言語で見たいページがあるときの対処として使ってください。(ほとんど自分用)

]]>

ホームページを多言語対応しました

ホームページ「ソーサリーフォース.net」を多言語化対応してみました。対応している言語は列挙するのがちょっと大変なので書きませんが大体40か国語ぐらいに対応しています。主要な言語については大体サポートしているつもりです。

1年前に英語には対応していましたが、なんとなくやってみた程度だったので、半分ぐらいは翻訳されていない状態でした。最近プログラムの方をさわる機会ができたので今回一気に多言語対応しました。ただ、ページによってはそもそも多言語化する必要のないところもありますので、そこはそのままにしてあります。

多言語化の仕組みなんですが、sorceryforce.net ではサーバープログラムに ASP.NET MVC を採用しています。ASP.NET MVC にはローカライズの仕組みがあり普通に多言語化する分にはこれを使って作ります(作ると思います)。

ただ、調べてみると言語が増えるたびにファイルが増えて行くというなんとも嫌らしい構成になるらしく、数言語ぐらいならまだしも全世界対応ってなると相当な数になるみたいです。ビューを言語ごとに作成するとなると、レイアウトとか変更するたびに全ファイル修正しなければならなくなり、ビューの修正が億劫になってしまいます。私も Windows From でちょろっと多言語化やってみたのですが、同じように Windows Form のデザインを言語ごとに作る必要があり、とてもめんどくさそうなイメージがありました。まあ、ASP.NET MVC ならビューの継承、Windows Form ならフォームの継承を使ってある程度はごまかせるのですが、テキストが右⇒左方向だったり、翻訳語のテキストが長くなったり、文字の大きさが変わったりするので結局は微調整に時間を取られそうな感じがしますね。Windows Form は問題が顕著になりますが、Web ならレイアウトはある程度ブラウザが補間してくれるのでなんとかなりそうな気がしますが。

で、そんなこんな考慮してみて、最終的には多言語対応はすべて自前で実装しました。Visual Studio のリソース入力もめんどそうだったので、テキストはすべて Excel で管理し、日本語さえ入力すれば後は半自動的に他の言語に翻訳してくれるようにしました。半自動っていうのは、テキストを入力した後に頻繁に翻訳されても困るので、入力した後にバッチ叩けばプログラムにまで自動反映されるよー、っていう感じにしてあります。

実際にビューに出力する方法としては、テキストはすべて ID 管理されているため、.cshtml とかで @Model.GetMessage(なんちゃらID) のようにしておけば、後はブラウザの言語を判定して対応する言語で表示されるようになっています。ID は列挙体なので、ID 名でどんなテキストかわかんなくてもマウスカーソルを合わせれば summary で元の日本語が表示されるのでとても便利です。

あと、この仕組みはプラットフォームに依存しないようにしてあるので、ASP.NET でなくても、.NET Framework であれば他のアプリケーションにも適用できるようになっています。クライアントツールとかゲームとか Windows ストアアプリとか。まあ、まだホームページにしか使ってないので、機会があれば他のソフトも多言語対応してみたいですね。

ちょっといろいろ長くなってしまい、また内部的な話になっていしましたが、要はホームページを多言語化対応しました、という話でした。

]]>

レスポンシブデザインにしてみた

最近話題になっているレスポンシブデザインをホームページの方に適用してみました。とはいっても sorceryforce.com の方ではなくて sorceryforce.net の方です。

レスポンシブデザインと大々的に描いてますが、適用しているのはブラウザの幅に合わせてレイアウトを変更している部分です。スマートフォンとかのようなブラウザサイズが小さい画面でもコンテンツをなるべく表示できるようにしています。まあ、もともとPC向けのサイトなのでページによってはそれほど快適になるわけではないんですけどね。ここらへんは CSS の調整次第かと思います。

sorceryforce.net の方はサービス系のアプリとかを公開するために作ったんですが、しばらく放置気味だったのでこれから少しずつ構築していく予定です。外部コンポーネントとか使わずに自分で構築しているので結構時間がかかったりとかテストが面倒だったりしていますが、そのかわりすべて自分で制御できるので自由度は高いですね。

]]>

bing の検索結果が微妙

Web PI (Web Platform Installer) 3.0 をダウンロードしようと IE からデフォルトのまま bing で検索したんですが、なぜか 3.0 が出てこないで 2.0 が上がってくる、または 3.0 でもベータ版の情報が上がってきます。

bing2

ちなみに Yahoo! (Google エンジン)で検索した場合。欲しいものが一番上に上がってくる。

 

yahoo2

bing はもうちょっと直感的に欲しいものを上にあげてくれるようにしてほしいかなと思った今日この頃。

(ちなみにキーワードを「Web Platform Installer 3.0」にしても上がってきてくれませんでした orz)

]]>

震災による電車定期券の払い戻し

震災によって5日間以上電車が運休になっていた場合、その期間割で定期代の払い戻しが可能ということで窓口に行ってみました。

行く前にひとつ疑問に思っていたことがあったのですが、払い戻しした場合でも今使っている定期券はそのまま使えるはずなので、同じ定期券を再度持って行った場合に2重の払い戻しになってしまうのではないかと思ってました。(この時は新しい定期券を再発行かなーと思ってました)

実際に行って聞いてみたところ「今使っている定期の期限が切れた後に払い戻しをすることが可能」とのことでした。確かにこれなら納得です。(それまで払い戻しはできませんが。私の場合は7月まで期間があります(^^;))

]]>