2009年1月1日木曜日

目と額

目と額がツーンとして集中力が極端に低下する状態がこの数週間でとても強まっている。布団に入って寝たくなるような意味での眠気がなくなって睡眠のリズムも整ったため、薬の副作用だと思うようにしていたのだけど、まあ結局は、症状の出かたが変わっただけなんだろうなあ。冬になると寝易くなって逆に過眠気味になるのもいつもの事だし。はあ。

ミニ/ラージの設定をフォーム毎に保持するようにした

今まで「身も蓋もない」をいくら開いても設定は共通するようになっていた。これは「身も蓋もない」をラージ用・ミニ用と並べて表示する時などに便利なのだが、ラージ/ミニの設定も全ての「身も蓋もない」で共通なのは少しまずかった。例えば一つ目の「身も蓋もない」をミニに設定し、二つ目の「身も蓋もない」をラージに設定すると、一つ目の「身も蓋もない」ではミニが選択されているように見えるにも関わらずラージの歩み値・四本値が表示され、ラージの取引が行われてしまう。

この問題を修正して、ミニ/ラージの設定はフォーム毎に保持するように修正した。
修正版は詳細サイトのファイル置き場からどうぞ。

スキップリストの.netでの実装にドキュメントを付けた

どうしてSandcastleを使ってみたかと言うと、スキップリストのライブラリにドキュメントを付けたかったから。昨日年越し蕎麦を食べたくで眠くても無理に起きていたら夜になってから少しだけ目と頭が冴えてきて、それでも苦労しがちだったけど、ドキュメンテーションコメントの書き方とSandcastleについて調べてドキュメントを生成する所までたどり着けた。特に可換半群の総和計算のサンプルコードをドキュメンテーションコメントとして埋め込む事ができた。

今回からこういう.netの開発関係の話題は``.net''のラベルを付ける事にした。

ドキュメントの付いたスキップリストのC#コードあるいは.netアセンブリ形式のライブラリが必要な方は アドイン 「身も蓋もない」の詳細サイトのファイル置き場に置いてありますのでどうぞ。

Sandcastleを使ってみた

SandCastleを使ってみて、自分なりのまとめ。Html Helpのコンパイラを持っていないのとそもそもWEBページとして作成したかったのでそういう設定の例。
  • Sandcastleをインストールする。これはシステム環境変数DXRootを設定するので管理者権限の方が良い。(ユーザ権限でもユーザ環境変数に登録するかもしれないが未確認)
  • Sandcastle Help File Builderをインストールする。管理者権限でインストールしたが、この権限が必須かは未確認。
  • 生成されるヘルプファイルは何もしないと英語・日本語交じりになる。ローカライズするためには現行のバージョン( SandcastleのMay 2008 Release (Version 2.4.10520) と Sandcastle Help File Builder の Version 1.7.0.0)では以下の方法でうまく入った。このエントリから Sandcastle_Localize.zip をダウンロードする。この中のPresentationフォルダの中身のみSandcastleのPresentationフォルダにコピーする。他のフォルダに入っているファイルについては対応する修正が現行バージョンではなされている。ネタ元として参照されているエントリにも色々書いてあるが全て現行バージョンでは対応する修正がなされているためこれだけで十分。
  • Visual C# 2008(私の場合はexpress editionを使用)のツールメニューから``外部ツール'を選択して、以下の設定を登録する。
    • タイトル=Sandcastle Help File Builder
    • コマンド=C:\Program Files\EWSoftware\Sandcastle Help File Builder\SandcastleBuilderConsole.exe
    • 引数=$(ProjectDir)$(TargetName).shfb
    • ``出力ウィンドウを使用''にチェックを入れておく。
    なお、必要ならば``起動時に引数を入力''のチェックも入れる。
  • C#のプロジェクトのプロパティのビルドタブで``XMLドキュメントファイル''にチェックを入れる。XMLファイル名は必ずしも指定しなくて良い。勝手に生成される。またドキュメンテーションコメントを付けていない項目がたくさんある間は警告メッセージが煩いので``警告の表示なし''の横のテキストボックスに1591と書いておく。
  • 一度C#のプロジェクトをビルドする。一応bin/releaseにxmlファイルが出来たか確認する。
  • Sandcastle Help File Builderを開いて``Project''-``New Project From Visual Studio Project''からソリューションまたはプロジェクトを選択。bin/debugとbin/releaseのどちらにあるxmlファイルを使うか聞かれる。普通はbin/releaseが良いと思うのでそう選択する。
  • 多分自動で設定されるけれどFrameworkVersionは自分のプロジェクトに合わせる。HelpFileFormatは``Website''に(他の選択だと対応するHTML Helpのコンパイラが必要)。Languageは``日本語''にすると少しローカライズされる。NamingMethodを``MemberName''にすると生成されるファイルのファイル名が分かり易くなる。PresentationStyleをvs2005にすると現行のMSDNと類似のフォーマットで出力される。ShowMissingNamespacesは``False''にする(あるいは右上にある``Namespaces''で何かしら設定する)。
  • 他にHelpTitle, CopyrightHref, CpyrightText, FeedbackEMailAddress, FeedbackEmailLinkTextをそれぞれ設定すれば表示される内容をカスタムできる。
  • SdkLinkTypeを``None''に、DocumentInheritedMembersを``False''に、DocumentInheritedFrameworkMembersを``False''に設定するとビルドが劇的に早くなるとの情報があるが実際に劇的に早くなるかは未確認。SdkLinkTypeはSDKの(というか.Net Frameworkの)要素にリンクを張る方法を、インターネットのMSDNにするかローカルのヘルプファイルにするかリンクを張らないかの三択で選択するのだが、MSDNと設定してインターネット上のMSDNにリンクするようにするとめちゃくちゃ便利。例えば<see cref="IEnumerable&lt;T&gt;">と書くと対応するMSDNのページにリンクされる。それから、DocumentInheritedMembersやDocumentInheritedFrameworkMembersはポリモルフィズムによって継承によって作成したクラスは継承元のメンバを持つわけだがそれを一覧に表示するかどうか。System.Objectから継承されるメンバなんかも表示されて煩いのでDocumentInheritedFrameworkMembersは切った方が良いかも。DocumentInheritedMembersはお好みで。
  • Sandcastle Help File BuilderのプロジェクトをC#のプロジェクトファイルと同じディレクトリに、プロジェクトのプロパティのアプリケーションタブから確認できる``アセンブリ名''と同じ名前で拡張子を.shfbとして保存する。
  • Visual C# 2008から念のためもう一度プロジェクトをビルド。XMLドキュメンテーションコメントの不備はエラーでなく警告で表示されるので自分で``エラー一覧''タブを開いて確認する。問題なければ、ツールメニューから``Sandcastle Help File Builder''を選択。すごく時間がかかるけれどしばらく待つと
    Completed
    The help output is located at: ほにゃらら
    Build details can be found in ほにゃらら
    というメッセージが出力ウィンドウに表示されて、プロジェクトのフォルダのHelpフォルダの中にドキュメントが生成される。Index.htmlを開いて内容を確認する。