専用ブラウザ

公式にアナウンスがありました。アドオンや専用ブラウザーの使用は厳密には規約違反とのことです。
司令部室だけでなく他のアドオンや専用ブラウザーも該当します。
例えば通信内容を見ているかどうかなどには言及していません。
誤解する人がいたので念のため、@KanColle_STAFFさん、@k2lunaticさん、@KylrIaさんは司令部室の作者ではありません。

2015/02/10の関連Tweetを引用します。

参考までに2013/09/01にも言及されたことがありますので引用します。

ちなみに司令部室では通信内容に一切手を加えていません。

技術的なこと

  • IEコンポーネントを使用しています。そのためインストールされているIEのバージョンに依存します。
  • .NET Frameworkを使用しています。Version 2.0~4.5.1で動作するはずです。4.0 Client Profileでも動作すると思います。3.5 Client Profileは諦めました。
  • F#言語で記述しています。F#言語は、関数型、オブジェクト指向型、および命令型の各プログラミング モデルをサポートします。
  • 1.0.0まではFiddlerCoreを使用していました。
  • .NET FrameworkにはJSONパーサが複数あります。(JavaScriptSerializerとDataContractJsonSerializer。)さらにFiddlerCoreにもFiddler.WebFormats.JSONが存在します。 しかし、いずれも動作が気に入らなかったので、自作したJSONパーサを組み込んでいます。
  • ミュート機能は.NET Frameworkで提供されないため、直接OSを呼び出しています。Windows 3.1から提供されているMixer APIを使用しています。 Windows Vista以降で提供されるCore Audio APIもありますが、どちらもソースコードの記述量が膨大になるので凹みます。 ともあれ、Vista以降であれば艦これだけをミュートできます。XPではOS全体になってしまうかもしれません。
    多くの資料でMIXERLINE_COMPONENTTYPE_DST_SPEAKERSをミュートする記述がありますが、0.2.4からはその元になるMIXERLINE_COMPONENTTYPE_SRC_WAVEOUTをミュートするようにしてみました。 これでHDMIに対してもミュートが効けばいいのですが…。私自身環境を持たないのでこの辺りはよくわかりません。
  • 画面の縮小表示にはIE7から搭載された方のズーム機能を使用しています。そのため、司令部室の動作にはIE7以降が必要です。ただしIE8以降を推奨します。
    High DPI環境では自動的に125%拡大になるものの、ズーム倍率自体の取得方法がわからず、サイズ変更が正しく行えていませんでした。 調べたところ、JavaScriptでwindow.screen.deviceXDPIを参照することで取得できることがわかりました。Internet Explorerではscreen.deviceXDPI / screen.logicalXDPIが拡大倍率を表しますが、 IEコンポーネントの場合、screen.logicalXDPIの値が誤っているため、96dpiでハードコーディングしています。
    正式な対応方法としてはWebBrowserクラスを派生させる必要があることが判明しました。しかしながら、F#は言語仕様によりinner classを作れないため派生クラスを記述できないという壁にぶつかっています。 そのため、画面サイズが1024以下の場合に落ちる問題を根本解決できずにいます。
    発想の転換で、現在値を無視して常に上書きすることで派生クラスを不要にした上でDPI依存しないように実装できました。
  • スクリーンショットを保存するにあたってFlashが置かれているembed要素を取得し、IViewObject::Draw()を使ってBitmapに出力するようにしました。 こうすることでスクロール位置や画面サイズに依存せず、スクリーンショットが撮れるようになりました。
  • Twitterへの画像投稿を実装するにあたって、OAuthプロトコルもF#で実装しました。本来はBasic認証と同様に透過的に署名(Authrizationヘッダー)を出力できるはずなのですが、 OAuth認証がHTTP認証の仕様に微妙に沿っていない(401 Unauthorizedが返されない)ため実現できませんでした。 Twitterが採用しているOAuth 1.0aの問題であり、OAuth 2.0では状況が変わってるかも。

Credit

ブラウザ開発 はぇ~
@haxe
http://nozomi.arege.jp/KanHQ/
アイコン制作 るーるーるー。
@ru_rururururu
seiga/im3395851