au IDの認証エラーについて

auのAndorid端末を使っている方は「au IDが入力されていません」というエラーを何度も見たことがあると思います。
OKを押しても繰り返し表示され、最終的にはパスワードの再設定を求められるというものです。
しかも、パスワードを再設定しようとしても、行く先の画面は正常に登録済みとなっているau ID設定アプリの画面です。
普通の人はほぼ混乱しますよね。

原因ですが、結論から言いますと、「au Marketアプリのバグ」です。

色々なサイトに対処法が書いてありますが(端末を再起動する、UIMカードを抜き差しする、au Marketアプリを再インストールするなど)、正直あまり効果はありません。
これらの対象を行っても、しばらく使っていたらまたエラーが出るようになります。
また、UIMの抜き差しは何の意味もありません。そもそもUIMに問題があったら電話すらつながらなくなりますから。
UIMの摩耗と端末部品の劣化に繋がるだけなのでやめましょう。

残念ながら、最初に述べた通りアプリのバグなので、我々ユーザが根本的な問題解決をすることはできません。
なので、結局は再起動するなどの暫定的な対象しかできません。

ですが、エラーが出る度に再起動などやっていたら、時間がかかりますし、面倒ですよね。
そこで、現状最も速くこのエラーの暫定対処を行う手順を紹介します。

1.(Android端末の)設定からアプリ一覧の項目を開きます。
2.au Marketを選択します。
おそらく、このような画面になると思います。(画面はAndroid7.0です)

3.「強制終了」を行う。
確認が出るので、OKを押します。

これでしばらくはエラーが出なくなります。
わざわざ再起動をかけなくても、これだけで対処は完了です。
もし可能な機種であれば、この画面へのショートカットをホームに作っておいてもいいかもしれません。

ただ、繰り返しですが暫定的な処置ですので、しばらく使っていたらまたエラーが出ると思います。
根本的な解決をしたいのであれば、皆でauに苦情を言いましょう。
困っているユーザが増えればauも優先的に対象すると思いますので。

ただ、本当に認証エラーになっている場合(au IDのパスワードをPCから変えて再認証が必要になっている場合など)は、この方法では解決しないので、au IDの登録をやり直しましょう。

ちなみにですが、開発者の視点から見ると、この手のバグは非常に修正が難しいです。
原因が見つかれば早いのですが、それを見つけるのがとても大変です。
おそらく、メモリ上にキャッシュされている認証情報が何らかの原因で誤って破壊されているか、何らかの原因で本来自動的に行われるべき認証情報の更新ができずに有効期限切れになっているのだと思われます。
まあ、バグはバグなので早急に修正してもらいたいですが。


今後のE.L.E.M.E.N.T-ME開発について

お久しぶりです。
しばらく投稿がありませんでしたが、Elem-MEの開発は進んでいるのでご安心ください。
今後のElem-ME開発について説明します。

公開予定について

現在のところ、β版(一通りの機能を実装した状態)の公開目標を「2017年末まで」に設定します。
ただ、目標なのでこの期日までに公開を保証するというものではありません。

動作環境と依存ライブラリについて

一応、Windows版・.NET Core版・Android版の開発を予定しています。
現在はWindows版の開発のみ行っている状態で、上記β版の公開ができた後にAndroid版の開発開始を予定しています。

.NET Core版とは、Windowsはもちろん、MacOSやLinuxでも動作可能なマルチプラットフォーム対応のバージョンです。
ただ、こちらは情報不足のため、実現可能かどうか調査した後に開発となります。
新しいことが分かり次第、別途記事を投稿します。


Elem-ME開発でC# 7を使用します

Elem-MEなどの開発には、今までC#のVer.6を使ってきました。
しかし、C# Ver.7が使用できることが確認できたので、既存コードも移行することにしました。

よって、公開済みのコードに大きな変更が行われる可能性がありますのでご了承ください。
(Elem-MEに限らず、Team.E.L.E.M.E.N.Tで公開しているコード全てが対象です)
また、引数や戻り値の型が変わる可能性もありますので、もしコードを利用した場合は変更を確認するようお願いします。
なお、今すぐに全てのコードをアップグレードするのは不可能なので、少しずつの移行になります。


DXライブラリをC#でより使いやすく

DXライブラリをC#で利用することは公式でもサポートされてはいます。
しかし、利用方法はC#に最適化されていないため、C言語のように手続き型の呼び出し方をしなければいけません。
これではオブジェクト指向を活かせないので、より使いやすいように、オブジェクト指向を活用して利用できるようにするライブラリを作っています。
元々はElem-MEで利用するために作ったのですが、他のソフトウェアでも利用できるように、と公開します。

リポジトリを「https://github.com/TeamElement/DxLib」に公開していますので、もしDXライブラリをC#で利用する機会があれば利用してみてください。
実装した機能はまだ一部ですが、順次追加していく予定です。
実装を急いでほしい機能がある場合は、この投稿のコメントかGitHubのIssueに書き込んでください。(後者に書くことをおすすめします)

利用には、公式サイトからC#用DXライブラリを別途用意して頂く必要があります。
これは、DXライブラリが更新された場合に当ライブラリを更新しなくても変更なしで利用可能にするためです。


【Elem-ME】テストプログラムv1をリリース

E.L.E.M.E.N.T Multipurpose Engineのテストプログラムをリリースしました。
確定仕様版初のテストプログラムです。

今回は、起動から終了までのエラー発生の有無、カーソル情報取得のテストとなっています。
もし良ければ結果をコメント頂けると助かります。
もしエラーがあったらできるだけ報告をお願いします。


ホームページとブログを統合しました

この度、ホームページを管理が容易なWordPressにするため、ブログと統合することになりました。
今後、ブログへのアクセスは全てこの「ホームページ兼ブログ」サイトにリダイレクトされます。
また、ブログについても、今までと変わりなく運用していきますので、これからもよろしくお願いします。


【.NET】アセンブリに関連付けてデータを暗号化するライブラリ

更新情報
2016/09/23 1.0.1を公開

.NETアプリケーションから利用できる暗号化ライブラリを作ってみました。
このライブラリの特徴は、暗号化に使う共通鍵に、ライブラリを呼び出したアセンブリの公開鍵を使うという点です。

アセンブリには電子署名を行うことで「厳密名」を持たせることができます。
その厳密名に含まれる公開鍵を使うことで、データを暗号化してもそれを復号できるのは同じアセンブリのみとなります。

厳密名を付けるには、署名に使う公開鍵と秘密鍵のペアが必要です。
そのうち、秘密鍵は開発者が厳重に管理しているはずですので、秘密鍵は開発者しか分かりません。
アセンブリを読み込む際、そのアセンブリが署名されている場合は付属している公開鍵を使って改ざんの有無を確認し、問題なければアセンブリが読み込まれます。
つまり、データを暗号化したアセンブリを改ざんして暗号化データを抽出しようとしても、秘密鍵を知らないため署名が出来ないので抽出は不可能ということになります。


【C#】リフレクションでの呼び出しを検出・禁止する方法

C#には「リフレクション」という便利な機能があります。
これは、メソッドなどを動的に呼び出したり、インスタンスを動的に生成したりすることができる機能です。

ただ、この機能、実はprivateに設定したメンバも呼び出してしまうことができます。
つまり、他から呼び出されると困るからprivateにしたメソッドがあったとしたら、それを利用者が意図的に呼び出すことが出来てしまう、という訳です。
まあ、利用者がprivateメンバまでクラス構造を理解していないとできませんが。
注意:フィールドおよび構造体の引数なしコンストラクタに対するアクセスを検出する方法はありません。


E.L.E.M.E.N.Tの様々な変更について

今まで、なかなか進まなかったE.L.E.M.E.N.Tの開発ですが、いよいよ最終設計が完了し、本当の開発が始まりました。
(今までずっと開発進んでいたと思っていた方、すみません)

今回の仕様確定にて、今までと変更が発生した箇所があるので、以下に記載していきます。

正式名称の確定
今まで曖昧だった正式名称が確定しました。
その名も、「E.L.E.M.E.N.T Multipurpose Engine」、略称「E.L.E.M.E.N.T ME」または「Elem-ME」です。
なぜ正式名称が確定していなかったかというと、単なる「E.L.E.M.E.N.T」だと他の商標に引っ掛かるのではないかと思い、前後に何か付け加えようと考えていたためです。
今回決まった名前の「Multipurpose」とは「多目的」という意味で、Elem-MEがゲームエンジンとしてだけでなく、様々な用途で使われることを願って付けました。

ブログ・各種サイトの障害について

最近、当ブログやホームページ、E.L.E.M.E.N.Tの公式Wikiにアクセスできない障害が発生していました。
原因は、当該サイトをホスト頂いているレンタルサーバがDDos攻撃(分散型サービス妨害攻撃)を受けて全アクセスが遮断されたためとのことです。
詳しくは、レンタルサーバの管理者様のホームページに記載されています。(詳しくはこちら

DDos攻撃について簡単に説明すると、インターネットに繋がっている脆弱な(セキュリティ対策が不十分な)サーバーやクライアントを複数、不正プログラムなどで乗っ取り、攻撃対象のサーバーに一斉に通信を送らせることで攻撃対象の処理を妨害してサービスを停止させるというものです。

もしかしたら、今後もつながりにくい状況になるかもしれませんが、その際は時間を改めてアクセス頂けると幸いです。
以上、障害情報についてでした。