ホームページの移転について

現在 sorceryforce.net のサイトはレンタルサーバー「ExpressWeb」で運用しているのですが、今年でサービスを終了するようなので、移転を考えなければいけなくなりました。契約期間はまだあるので今すぐということではないのですが、近いうちに別サーバーにサイトを移す予定です。

このサイトは ASP.NET で作っているので、移転先も Windows Server にする予定です。特別 Web サービスを公開しているわけではないので、ドメインの切り替えとかうまくいけばアドレス変わることなくダウンタイムは特にないかもしれません。

ただ1つ問題があって、このブログだけ WordPress で動いているのでもしかしたら移行は単純にいかないかもしれません。割と変な構成で作ってしまっていて、ASP.NET アプリケーションの中に WordPress が存在するという意味不明な構成になっているため、移行先で正しく動かせるか自信がありません。

なのでもしかしたらブログのほうだけは別のサイトで運用する、という形になることも考えられます。過去記事がうまく移行できてページIDも同じであるならばリダイレクトでうまく制御できると思いますが、移行がうまくいかなければ記事が消滅ということになるかもしれません…。

まあ、まだちょっと先の話なので、日が近づいて来たらまた書くつもりです。

]]>

ホームページ「sorceryforce.net」の実行環境を変更しました

内部フレームワークを変えただけなので見た目とかは特に何も変わっていません。

開発環境を Windows 10 や Visual Studio 2015 に移行したりしていたのですが、ついでなのでホームページを動かしている ASP.NET の中身もいろいろバージョンを上げてみました。もし挙動などがおかしければコメントいただけると助かります。(WordPress 側は特に変えてないのでブログのほうは大丈夫だと思います)

一応変えてみたものは次の通りです。

  • ASP.NET 4 → ASP.NET 4.5.2
  • .NET Framework 4 → .NET Framework 4.5.2 (サーバーがいつの間にか 4.5 対応していたので上げました)
  • Entity Framework 5 → Entity Framework 6.1.2 (4→5 みたいに API 変わってなくてよかったです)
  • jQuery 1.8.2 → jQuery 1.10.2

ただ、Web サーバーのほうが権限の問題で Roslyn を使おうとするとアクセス権エラーが発生してホームページがまったく動かなかったので、web.config から「system.codedom」を抹消して使用しないようにしました。というか自作サーバーでテストしていたときは普通に動いていたのに、いざ本番ホームページサーバーにあげたら不明なエラーが発生して動かなかったので結構焦りました。一時期ホームページが開けなくなっていたのはこのためです。

ちなみに、作り直す前のプロジェクトを VS2013 から VS2015 に移行した時に図のような警告が出ていたので、SQL Server 2012 Express LocalDB を入れようかと思ったのですが、新規に作り直した時に認証系などをすべて外したので警告は出なくなりました。

2015-09-09 20_17_36-Microsoft Visual Studio

]]>

ブログにアクセスカウンター設置してみました

WordPress の標準機能にアクセスカウンターの機能がなかったのでずっと放置していたのですが、久々に調べてみたらプラグインでいろいろ公開されているみたいだったのでサイドメニューに追加してみました。

使用したプラグインは「count per day」というもので、英語圏のプラグインなのですが、インストール後は自動的に日本語で表示されるので割と使いやすいです(一部英語のままですが)。プラグインインストール後はウィジェットから配置できます。

WordPress のアクセスカウンターなので sorceryforce.net や sorceryforce.com のアクセスカウントは含まれません。

]]>

sorceryforce.net の多言語対応仕様を変更しました

気づいていた人はあんまりいないと思いますが、Web サイト「sorceryforce.net」では複数の言語で表示できるように構築していました。今回その動作仕様を変更しています。

今までは多言語対応は以下のようにしていました。

  1. HTTP ヘッダーで送信される言語情報によって表示される言語を切り替えていた
  2. クエリパラメータに「lang=XX」を追加することによって環境に依存せずに表示言語を切り替えられるようにしていた

しかし、上記の対応ではいくつか問題がありました。

まず 1 についてですが、ユーザーが意識せずに表示言語が自分の環境に合わせて変更されるというメリットがあるのですが、SEO 観点からみると、どんなに複数の言語に対応されていたとしても URL は一つであるため、言語数分の評価がされないということです。基本的には日本語がメインなのですが、代わりに英語で評価されたとした場合にコンテンツ力が低いとみなされると「http://sorceryforce.net/」の評価が下がってしまい、同時に日本語サイトとしての評価も下がってしまうことになります。

2 についても SEO 観点から見た場合、クエリパラメータによる多言語対応はあまり評価対象にはならないようです。

上記の理由から今回以下のように多言語対応の仕様を変更しました。

  1. 言語の変更は URL のドメインの直下で指定するようにした
  2. URL で言語を指定していなかった場合は、HTTP ヘッダーで指定された言語のページにリダイレクトする

1 については前の仕様のクエリパラメータによる言語指定をパスに移動させた形になります。これにより、言語単位で URL が決定するので SEO に対する評価も言語単位になります。クエリパラメータで指定した場合とどれぐらい評価が違うのかといわれると定かではありませんが、URL の見た目的にもユーザーに分かりやすい形になっていると思います。URL の言語部分を変えれば表示される言語も変わります。たぶん大手のサイトとかもこの形式を採用しているところが多いです。

2 については言語が、指定されていなかった場合、日本語がメインのサイトなので日本語のページを表示させようかと思いましたが、正直、URL に対して言語指定ありなしで言語表示を分岐させるのがめんどうだったのでやめました。また、せっかく英語環境で見に来ても日本語で表示されるとみてくれない可能性もあるので、そうであれば対応する言語のページに飛ばした方が有意義かなと思いました。URL を変えずに表示言語を変える方法は前回の使用の 1 に該当してしまうのでやっていません。

上記変更に伴い、せっかくなのでユーザーが言語を変更できるようにページの左側に言語を選択できるドロップダウンをつけてみました。これでいちいち URL を変更せずに直接見たい言語を選択できるようになりました。また、前の仕様ではページを切り替えるたびに URL で再度言語を入力しなければいけませんでしたが、今回の修正に伴い、表示されている言語のままほかのページへページングできるようにもしました。

 

さて、ここまでの話でなんだか大がかりな変更をしているようにも思えるかもしれませんが、実は中身のコンテンツに対してはあまり多言語対応していません orz。特に Tips 系は日本語のままなのでどうしようかなと思っています。実際 HTML の多言語化をどうすればいいのかなーと悩んでいる段階です。まあ、コンテンツについてはおいおい対応していきたいと思います。

]]>

ホームページ(sorceryforce.net)の障害の対応終わりました

2014/08/05 23:50 ころにホームページの方を復旧いたしました。

原因については前の投稿の通りデータベース破損によるものでしたので、サーバー管理者に削除してもらって作り直しました。

ほんとは最近のバックアップがあればそれをリストアして完了の予定だったのですが、2月ごろにバックアップを取って以来、まったく取っていなかったという失態を犯してしまっていたため、どうしようかと少し悩んでいました。orz

とりあえずローカルにはホームページとほぼ同じテーブルレイアウトを保持していましたので、いったん2月のバックアップDBをリストアし、ローカルからサーバーへのテーブルレイアウト同期 SQL を発行しエラーが発生しないように修正、更新履歴等必要な情報を一括アップロードしてとりあえず問題なく動いている感じがします。

もしなにかおかしな挙動をしているようであればブログにでもコメントください。

余談:Outlook の予定表にバックアップスケジュール入れていたんですが、2月ごろからまったく通知されなくなったんですよね・・・。

]]>

ホームページ(sorceryforce.net)の障害について

2014/08/05の朝あたりからホームページ(sorceryforce.net)を閲覧するとエラーページが表示される状態になっております。

原因としてはデータベースに障害が発生しており、データベースの入れ替え作業が必要なのですが、おそらく作業は深夜あたりになりますのでそれまでお待ちください。

※ホームページとブログでは別々のデータベースを使っているのでブログ側は問題なく動いてます。

]]>

携帯を変えるか考える

メモ書きなのであんまり深くは突っ込んでいません。

今電話とメールでメインに使っている機種が「Advanced/W-ZERO3」、通称アドエスなのですが、もう5年以上は使っているためバッテリーが相当ヘタっています。充電を満タンにしても1回の電話、1回のメールを行うだけでほぼバッテリーが空になってしまうほどです。

Windows Mobile の時代ももう終わりを迎えているので (Windows Phone ではない)、機種変更でもしようかなと思っているのですが、現時点では PHS の MNP はできないので必然的にキャリアの選択は Willcom のままになります。(メールアドレスもそのまま使いたいって言うのもありますからね)

その場合、機種変更の先はケータイかスマフォになるわけですが、テンキーによる文章入力が苦痛な私にとってはケータイが選択対象になることはありえません。となるとスマフォになるわけですが、スマフォにした場合、もっとも安いプランは「ウィルコムプランLite」になります。しかし、それでも月額4,275円になり、今使っているプランが月1,500円なので結構手痛いです。(多少割引はあるようですがそこはあまり触れません)

まあ、月額料金が上がるのは仕方ないにしてもいろいろ調べていたら、今の Willcom のプランってほとんど3年縛りなんですね。更新月以外で解約すると9,975円かかるのでこれまた痛い。(スマフォの場合)

ということで今のままなんとか使えないかと思い、バッテリーだけないか探したら普通にありました。ただ、正規ものではないようです。まあ、本体自体もう生産されていないので仕方ないですね。

4,680 円 高っ!って思ったけど、よくよく考えたら機種変更した場合に比べて2か月で元が取れちゃいますね。今後のために複数買おうかとも思いましたが、ちゃんと使えるかどうかわからないのでとりあえず1つ買って様子見してみたいと思います。

]]>

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

去年更新の方が停滞していたので、今年は少し更新するようにしました。ブログの方にもちょくちょく書くつもりだったんですがタイミングがなかったので今回まとめて書いておきます。ちなみに更新しているのは「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 ストアアプリとか。まあ、まだホームページにしか使ってないので、機会があれば他のソフトも多言語対応してみたいですね。

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

]]>