「昭和元年度」は存在するのか?

年度と和暦が関係するシステムを構築するうえで気になる点がありいろいろ調べていったのですが、せっかくなので考えをまとめたものをブログに上げてみたいと思います。

ちなみにここではシステム屋目線で考えたものであり、実際に昭和元年度が存在するかどうかの答えは書いていません。おそらく仕様上そう表現すべきかどうか決めごとに落ち着くのではないかと思います。

前置きはこれぐらいにしておいて、まずは「平成元年度」について書いてみます。平成に改元されたのは「1989/1/8」で、下の表は西暦と和暦、年度と和暦年度を並べたものです、和暦年度という表現が正しいかどうかはわかりませんがここではそう表現させていただきます。また、年度については一般的に使われる会計年度として扱っています。

年月日 和暦 年度 和暦年度
1989/01/07 昭和64年 1988 昭和63年度
1989/01/08 平成元年 1988 昭和63年度
1989/03/31 平成元年 1988 昭和63年度
1989/04/01 平成元年 1989 平成元年度

年度について、3月末までは前の年として扱われ4月~12月末の間は西暦の年と一致することになっています。

1/8に年号が平成になるので、和暦年度も平成になっていいように思えますが、そうすると 1/8~3/31 の期間は「平成零年度」となってしまいます。平成零年なんてものは存在しないので、1989/3/31 までは前の年号である「昭和63年度」を使うのが正しいです。

このことをシステム的に考えて仕様にすると

  • 4/1~3/31 の期間の和暦年号は 4/1 時点の和暦年号で表現する

になると思います。

では本題の「昭和元年度」について考えてみます。平成のときと同じように表にまとめたのが以下のものです。

年月日 和暦 年度 和暦年度
1926/12/24 大正15年 1926 大正15年度
1926/12/25 昭和元年 1926 ?
1927/01/01 昭和2年 1926 ?
1927/03/31 昭和2年 1926 ?
1927/04/01 昭和2年 1927 昭和2年度

昭和への改元は 1926/12/25 になるので 1926/12/25 から 1926/12/31 までのたった7日間だけが昭和元年になります。そして 1927/1/1 からは昭和2年になるので和暦年度も 1927/4/1 からは昭和2年度になります。

では 1926/12/25~1927/3/31 の期間はどうなるのでしょうか。1927/4/1 から昭和2年度になるので、1926/12/25 からは昭和元年度でもいいような気がします。しかし、平成のときに挙げた仕様「4/1~3/31 の期間の和暦年号は 4/1 時点の和暦年号で表現する」とは一致しなくなります。もしこの仕様にあわせた形で表現するとなると「?」の期間は「大正15年度」になるので「昭和元年度」は存在しなくなることになります。

もちろんさらに条件を付け加えて「改元が 4/1~12/31 の期間に行われている間は改元された日から和暦年度を切り替える」としてもいいのですが、条件も少し複雑になりますし、平成といっしょに考えたときになんとなく条件に統一感がないようにも見えますので「大正15年度」の表記でもいいような気がします。実際には決めごとの話になりますし、大正15年度でも昭和元年度でも間違いではありません。

ネット上で書籍や資料を見てみると、どちらかで書いてあったり「大正15年度・昭和元年度」のように両方併記しているものもありました。

Excel で和暦表記をやってみた

自分なりに考えをまとめてみましたが、やはりちょっと不安だったので Excel だとどう表現するんだろうを思って実際にやってみました。

まず、Excel で和暦表記を行うには、セルの書式をユーザー書式にして「ggge"年度"」とすると和暦表示になります。下図は単純に日付をそのまま書式設定で表示したものです。

2017-02-08 13_23_29-Book1 - Excel

改元したタイミングで年号の表記が切り替わってることが分かります。もう一度書きますが、上図は西暦をそのまま和暦表示しただけなのでの結果は間違いです。

これを実際に西暦から年度に変換して和暦表示するわけですが、ネットで探してみると以下の式を使う方法がありました。

  • ①=EDATE(A1,IF(MONTH(A1)<4,-12,0))
  • ②=EDATE(A1, -3)

上記の式を使用した結果が下図になります。

2017-02-08 13_33_03-Book1 - Excel

①は昭和から大正に戻ったりしているので明らかに間違いになります。②についても「昭和64年度」となっていたり、1927/3/25から昭和元年度が始まったりしているのでやはり正しくありません。これは指定した年月日から月だけを計算しなおしているので改元の日だけがずれたりして結果がおかしくなってしまうのです。

正しく表現するのであれば、最初の平成元年度の時に記載した「4/1」に統一するのがいいと思います。

  • ③=IF(MONTH(A2)<4,DATE(YEAR(A2)-1,4,1),DATE(YEAR(A2),4,1))

2017-02-08 13_34_56-Book1 - Excel

以上の Excel の結果からみると直接和暦年度を表現するような機能はなく、年度を自分で計算して和暦表記するような形になるようです。和暦年度の表現について「これだ!」と納得するようなものがなく一応自分の考えでまとめてみた形になりますが、もし意見等があればコメントいただければと思います。

ちな みに余談ですが、2019年の改元予定では改元日が2019/1/1になるようなので、元年度のパターンでいうと平成元年度と同じになりそうです。和暦や年度の扱いで恐怖されている方もいるかもしれませんが、平成元年度のパターンは1パターンしかないので仕様の検討では少しは楽になりそうですね。

]]>

ホームページサーバーを移転しました

以前お知らせしたとおり、ホームページを運用しているサーバーを移転しました。ドメイン(sorceryforce.net)はそのまま流用していますので、ページへのアクセスについては特に変わらず、今まで通り参照することが可能です。

ただ、ブログについてはアドレスが「http://sorceryforce.net/wordpress/」から「https://blog.sorceryforce.net/」に変更となっています。これについても前の投稿で書いた通りなんですが、アプリケーションサイトの中に WordPress のサイトを作っていたので、これを別サイトに独立させて作りました。アドレスが変わってしまう問題がありますが、リダイレクトさせるようにしたので問題ないはずです。

一応移転は完了したのですが、全ページ見まわしたわけではないので、もしかしたら不具合があるかもしれません。また、ブログについては一部のページで画像が表示されない可能性があるかもしれません。何かあればブログのコメントか Twitter などでお知らせください。

ここから移転についての余談になるのですが、ホームページを移転する際は、先に移転先に同じサイトを構築しておいて、動作確認が終わったらドメインの参照先 IPアドレスを変えるという方法を考えてました。実際にそう行ったのですが、想定外だったのは参照先の IPアドレスを変えるために DNS を変更したのですが、あれって即座に反映されないんですね。ドメインを新規で登録すると割と早くアクセスできていたので、同じ感覚で切り替えられると思っていました。

で、実際にやってみたら最長で2日間ぐらいかかって、最初は何が原因で繋がらないのか全く分かりませんでした (500 エラーとか出る)。まあいろいろいじったりしていたら PING が送る先の IP アドレスがまだ変わってないことが分かったので、とりあえず待つことにしました。

意外と興味深かったのが、アクセスする PC によって同じタイミングでも接続しようとする先が違うことでした。ある PC はすでにアクセスできるようになっていたり、とある PC はまだだったり、さらにはルートドメインは正しい IPアドレスを指すのに、サブドメインは前の IPアドレスを指していたりと、どういう仕組みになってるんだろうなと思いました。

とりあえず移転は完了したので、その間ブログに書けなかった内容を後で書いていきたいと思います。

]]>

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

現在 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 の確認も追加しました。

]]>