netail.net
自作フリーソフトや,ゲームに関する雑記を公開してます.
日記はソフトウェア工学の論文ネタが中心です.
最近のお知らせ (古いものはこちら)
2006-04-01 [長年日記] ▲
_ [hyCalendar][VolumeDeskbar] 変更要求リスト ▲
hyCalendarの変更要求リストとVolume Deskbarの変更要求リストをそれぞれまとめてみました.
ようやく新環境には適応しつつあるものの,ちょっと別仕事を抱えているので,今しばらく,対応まではお待ちください.
2006-04-03 [長年日記] ▲
_ [ツール] XTMemo ▲
TODOというほどでもないメモを管理するのにいいツールはないかなと思って,XTMemoというツールを試してみた.
ファイル作る→ファイルの中にメモを作るという形で,メールボックスとメールにも似たインタフェースで,けっこう面白い.保存は単なるテキストファイルなので,加工しやすいのも利点.
とりあえずwikiに書いてたメモをいくらか移行してみた.作ったメモの保存順序が更新日時ではなく作成時の日付順序である(しかもソート機能を持たない)というのが少し気にかかるが,検索したキーをそのままタブとして保存してくれたり,タイトルの横に本文の内容の先頭部分を少しだけ出してくれるのは親切で,満足度はそこそこ.
研究関連のメモを整理しておくには,何か足りないような気もするのだけど,何が足りないか,使ってたらそのうちわかってくるかもしれない.
インストール時,データ保存フォルダを指定するときに,何も考えずに普通にテキストファイルが入ってるフォルダを選んだら,勝手に手元のテキストファイル群を加工されてしまった.なぜ保存先のフォルダを先に選ばされるのかなと思ったら,基本的には指定フォルダ内にあるデータは全部既定の形式のテキストファイルだとみなして扱うということらしい.
2006-04-05 [長年日記] ▲
_ [Delphi] 今日のはまり ▲
Delphi Studio での条件コンパイルで "logging, test" のようにコンパイル条件を "," で区切って書いたら,無関係なエラーメッセージ(リソースファイルに変なマクロがある,云々)が出力された.空白で区切るのが正しいらしい.
そういえば,hyCalendar も Volume Deskbar も Delphi で書いてるので,Borland 側のサポート関連のニュースはけっこう気になってます.hyCalendar はそこそこの(実験対象として手頃な)規模になってきたので,データのモデルの再検討ついでに, Java (+ あわよくばAspectJ)に逃げたいなーと思うこの頃.問題は UI のウィンドウメッセージずぶずぶな(ウィンドウプロシージャとして実装している)部分をちゃんと移行できるかどうかです.とにかく実験してみないと…….
2006-04-07 [長年日記] ▲
_ [work] AO-ASIA 2006 ▲
研究室のM2の人にAO-ASIA2006に position paper を出してもらおうということで,先生にお伺いを立てたらさくっとOKが出た.投稿締め切りは6月23日.まだ時間があるので何とかなるでしょう……たぶん.
私がワークショップに参加できるかどうかは不明だけど,参加できなくても日本人の優しい先生方がフォローしてくれると信じてます :-)
2006-04-08 [長年日記] ▲
_ [お知らせ][hyCalendar] hyCalendar 1.3.5 リリース ▲
周期予定関連で報告をいただいていたバグ2点の修正を施してリリースしました.
少し忙しい時期が続くので,先に出せるところだけ出しておくことにしました.
_ [お知らせ][VolumeDeskbar] Volume Deskbar 1.0.7 リリース ▲
セーフモード起動時(オーディオデバイスが存在しない環境)でエラーが起きる問題を修正しました.
ホイールクリックへの対応は,手元にホイールマウスがなくて実験できなかったので(!)今回のリリースでは見送りました.
2006-04-10 [長年日記] ▲
_ [論文] 関心事のハイライト表示 ▲
Eugen C. Nistor, Andre van der Hoek: Concern Highlight: A Tool for Concern Exploration and Visualization.
Proceedings of LATE 2006, Bonn, Germany, March 2006.
LATEには出てないので,論文だけさくっと読んでみた.
人間が選んだコードやクエリーで選択したコードを「関心事」として定義し,該当するコードだけを自由に色でハイライト表示できるようにしたという話.
並列計算なコードでは独特の関数名を使うので一部はほぼ自動的に捕まえているが,コーディングのパターン(マスターかどうかをif文で判定するとか)は自動で調べるにはクエリが複雑化するので,手で指定したほうが早そうだと言っている.
また,関心事として選ばれたコードは,それぞれ一種のパターンにはまっているということから,関心事に該当すると指定されたのにコーディングルールに従ってないもの(たとえばデータの送受信で Recieve と Send の数が一致しないなど)を検出することで,構文チェックよりは少し賢いエラー検出ができそうだとも述べている.
2006-04-12 [長年日記] ▲
_ NHKの住所変更 ▲
NHKインターネット営業センターというのがあったので,下宿を引き払う手続きをごそごそとオンラインで申請してみた.
住所変更申請のところの説明を読むまで気づかなかったが,下宿などを引き払って親などの世帯に住所を合わせるのは(単身赴任の解消も含む),あくまで「住所の変更」であって,いわゆる廃止届け(テレビ破棄時の手続き)とは違うらしい.
2006-04-13 [長年日記] ▲
_ [hyCalendar] ごそごそと改造中 ▲
今までは「日付単位のメモ」「期間予定」「周期予定」とあったもののうち,「期間予定」と「周期予定」の統合に向けて作業開始.といっても,ユーザの方々から目に見えるような華々しい追加機能にはなりません.たぶん.
「予定」を,「date → boolean
の関数で true を返した位置に文字列を表示するオブジェクト」だと規定することで,すべての予定を内部的にはまとめて扱えるようにしてみた.効率の都合で,実際には指定された期間(たとえば表示の1ヶ月とか)に対してその中で予定が表示される区間の列を返すdate * date → list of (date * date)
という関数として使用する.
この整理の影響を受けて,範囲を持った周期予定(毎月の「1〜3日」など)も期間予定と同様の表示形式になる予定.また,周期予定・期間予定・日付メモのいずれであっても表示の優先順位(上に持ってくる)設定が可能になる……はず.
内部的には,こんがらがった依存関係を解きほぐして単体テストを可能にするという重大な効果があるのだけど,外部への影響が出てくるのは今後の拡張次第.
2006-04-16 [長年日記] ▲
_ [お知らせ][hyCalendar] hyCalendar 1.3.6 リリース ▲
プリンタで日付の枠線の太さ,色を指定できるようにしたバージョンをリリースしました.
このところ,将来の改造に向けて色々手を入れる実験をしてるので,少し小刻みのリリースになっています.
2006-04-17 [長年日記] ▲
_ ビザ申請書を発送 ▲
ようやくinvitation letter が届いたので,大使館へ他の書類とあわせて発送.
3月にあちらの大学で Request for Invitation Letter 手続きが発生(そのために学歴・職歴など聞かれたことに答える)→3月末に送付→4月半ばで到着.
学振側で,3月半ばにPD切り替えの電話連絡→下旬にPD切り替えの書類送付と同時にPD切り替え後の資格証明請求→4月第二週に到着,というのとほぼ並行で何とか進んだ.
10ヶ月ちょっとの間不在になるけれど,科研費の行使は,いちおう学振側としては問題ないらしく,大学側の事務手続きなどのやり方に依存するらしい.
学振のPDは,学振から雇用関係はないけどお金をもらっていて,派遣社員と似て大学で受け入れて勤務しているけれど,今の時点では身分証明書がないという,なかなか微妙な立場.旧東京三菱のグローバルダイレクトの申し込みでは,学振の資格証明を送ってみたものの,電話連絡が来て事情を説明することになった.
2006-04-18 [長年日記] ▲
_ [ツール] テストからの擬似クラス生成 ▲
Java World のニュース欄でちょっとだけ話が載ってたので,JaSST のほうの原稿などを読んでみた.
伊尾木 将之,河野 広伸,合田 英二: TDDを加速する擬似クラス生成方法 - Simulated-Class by Tests with KikainekoMocker -.ソフトウェアテストシンポジウム 2006.
"Simulated-Class by Tests" という,テストケースを入力としてテストを通過する最小限の実装を生成する手法の提案.
予稿集では,手法ではなく使うことでどううれしくなるか(試行錯誤の容易化,コミュニケーションの容易化,設計の確認)がメインで,手法についての形式的な記述は特になし.
手法の実装であるKikainekoMocker公開サイトにある設計概要によると, テスト用コードをインタプリタとして実行し,メソッド呼び出し列を "TargetClass" に送信し, assert 文が来たところで「このメソッド列に対して出力はこうなるはずだ」という判断を下す,らしい. 抽象実行とかの一種と考えるとしても, Java コンパイラや実行系がやっていることと似たようなことをやろうとしているので, たぶんすごく実装には手間がかかっていると思われる.
このアプローチで大変そうな点は,まず1つ目として, モック生成対象クラスが存在していない段階で JUnit テストケースを書く都合上, そのテストケースは未知のクラスを参照したコードとなり, Eclipse 上などではエラーが発生してその他の意味エラーを検出できないかもしれないこと, 2点目は,戻り値が何らかの型に代入されていたり instanceof とかで判定されていたりしない限り メソッド戻り値の型が推論できないこと.
テストコードを分析して必要なインタフェースを勝手に書いてくれる,と思えば プロトタイピングの支援としては便利そうだし, 対象オブジェクトの満たすべき状態遷移(っぽいもの)もついでに 出してくれると色々使い道はありそうな気がする.
発想はとても面白いのだけれど,あらゆる種類の JUnit テストケースに隙なく対応しようとすると,実装がすごく大きくなりそうというのが怖いところ. 最終的に落としどころがどうなるかは今後見てみないと分からない. 解析系なことをやってる人間としては,「不完全な(クラスが足りない)情報を解析」というのがどう実現されるかは興味深いところ.
公開されている KikainekoMocker プラグインを, 手元の Eclipse 3.1.1 + JRE 1.5.0.06 にインストールしてみたけど, NullPointerException とか色々エラーを言われて動かなかったので, また折を見て試してみることにする.
_ [論文] SPLAT 2006 パネルディスカッションのメモ ▲
今さらながら少しだけメモを整理.
パネルディスカッションのお題はスケーラビリティだった.
効率面では,当然オーバーヘッドが少ないほうがいいに決まっているので,あまり変な話は出なかった.大規模システムでも低レベル(一番実装よりというか,テクニカル)な横断的関心事がたくさんあって大変だった,とかいった苦労話のようなことは少し出ていた.
アスペクトの利用法については,たとえばあるクラス群C,D,Eに貼りついているアスペクトAがあってパッケージを構成しているとき,新登場したクラスFにはアスペクトAは実は貼りつくべきではないのではないか,また,外部に新しいアスペクトBが出てきたときにそれはC,D,Eに影響を与えるべきではないのではないか,という話が出ていた.アスペクトの影響範囲(スコープ)をサブシステム内部とかある程度限定しないと,予期しないところでアスペクトが影響を与えてしまうかもしれないので,アスペクトの影響をうまく管理できるようにしたいね,という話にはわりとみんな同意していた.Erik Ernst は "safe applicability" というような言葉を使っていた.
2006-04-19 [長年日記] ▲
_ [お知らせ][VolumeDeskbar] Volume Deskbar 1.0.8 リリース ▲
テスト環境が手元になかったのでリリースが遅れてしまいましたが,ホイールのクリックでのミュート切り替えができるようになりました.
_ LRU と Belady's Anomaly ▲
廃棄物処分屋さんによる見積もりがあるので,今日は自宅待機中.
以前レター論文で発表した,「実行履歴を機械的に分割する」ネタでキャッシュの中身入れ替えアルゴリズムを使っていたときに,Belady's anomaly(Belady's anomaly についての解説 )が起きてたらどうしよう,という話になったと思うのだけど,実装時に LRU 選んだから問題は発生しないということに今さら気づいた.キャッシュのミスが連続するピーク位置は移動するかもしれないけど,ミスの回数は増えない.当時ちゃんと考えたのかもしれないけど,よく覚えてないので,いちおうこの辺にメモしておく.
Belady's anomaly っていつ発表されたんだろう,と思って調べてみたら,Citeseer でそれらしき引用文を発見.L. Belady, R. Nelson, and G. Shedler. An anomaly in the space-time characteristics of certain programs running in paging machines. Communications of the ACM, 12(6):349--353, June 1969. だそうで,さすがに PDF も何もありません.
ページングのほうでは,Page Fault Frequency (PFF) 置き換えアルゴリズムなんていうものもあって,ページフォルト率が閾値 p より上がってくるとページ枠を増やし,q より低下するとページ枠を減らすというものらしい.授業でちゃんと教わった気がするんだけど記憶にあまり残ってなかったので,やっぱりメモしておく.
2006-04-20 [長年日記] ▲
_ [論文] アスペクトの処理をベースコードと一緒に読むエディタの提案 ▲
やはり時間は経過したけれど,SPLAT 2006 の論文からいくつか面白かったものを整理.
Michael Desmond, Margaret-Anne Storey, Chris Exton: Fluid Source Code Views for Just In-Time Comprehension. Proceedings of SPLAT 2006.
あるソースコードを読んでいるとき,そこから呼び出しているメソッドの中身や,実行されるアドバイスの中身が気になることがあるので,最近の開発環境で使える「メソッドの折りたたみによる非表示化」の逆で,メソッドの中身やアドバイスの中身をその場(メソッドならその呼び出し文の直後とか,アドバイスが動く場所)に展開してソースをまとめて読めるようにしよう,というもの.多態性については,複数の候補のどれを見たいか選んだりする.
複数のエディタ,あるいは1ファイル内の複数の場所をあちこち移動しているうちに本筋の処理を見失ってしまうことがあるので,その手間を省こう,というのがコンセプトのようで,アイディアとしては面白い.
この手法の弱点(かもしれないもの)として指摘されていたのは,「あまり調子に乗ってコードを展開しすぎたり,展開先のコードが100行以上あったりしたら,本来の処理が何だったか分からなくなりそう」というもの.展開した状態を保存・再現したり,エイリアス解析を使って多態性の解決を自動化したりとか,実装上はかなり工夫の余地がありそう.発表してた人とも少し話してみたら,いくらかアイディアは持ってるみたい.個人的には,プログラムスライシングとかの適用結果の出力方法として使えそうなので,有望そうな情報表示方法の1つとして参考文献入りにしておく.
それから,別の人が「アスペクトはコードの挿入ではないので,そういう表示方法だと,誤解を招くことがあるのではないか」といった指摘をしていた.分かるような分からないような.
_ [論文] 小さな単位でポイントカットを定義したほうが再利用性がよくなる(かもしれない) ▲
Bert Lagaisse, Wouter Joosen: Decomposition into Elementary Pointcuts: A Design Principle for Improved Aspect Reusability. Proceedings of SPLAT 2006.
アスペクト内でポイントカットをいくつも定義するとき,AかつB,A’かつB,A”かつB,といったようによく似たポイントカットがたくさん登場するので,アスペクトを継承して子アスペクトでポイントカットを使いまわすときにはAとBは個別に名前付きポイントカットとして定義しておいたほうが実は再利用しやすく便利になる,という話.
「1つのイベントに1つの名前」というのは,「1つのメソッドは1つの仕事」という概念に近いのではないか,というような賛同意見が出ていた.個人的にも,構文ベースで選択されるジョインポイントに,早めに名前をつけて意味を与えたほうが変更の波及を防げる気がするし, 分割するよりは統合するほうが簡単なので(AかつBというポイントカットに新しく名前をつければ良い),もしかしたら将来的には当たり前のデザインになっているかもしれない,と思ったりする.
2006-04-23 [長年日記] ▲
_ [hyCalendar] 参照ファイルのバグというか仕様の穴 ▲
個別にテスト可能なモジュールを切り出すためのリファクタリング作業を続けているのですが,参照ファイル(他のファイルの内容を一緒に表示する)機能で,同じファイルを何個でも参照リストに追加できてしまうことが判明しました.
ファイルオブジェクトを検索するためのIDがファイル名で決まらないのはうれしくないので,参照リストには1つのファイルは1回だけしか登場できないように変更します.
_ 引越しに向けた本の処分 ▲
書籍のうち,要らないものを人に渡して回っただけともいう.
TRPG系ではMERPとLotR,バトルテック,それからRPG研で作ったものなど,小説はアン・マキャフリィ,ひかわ玲子,J.R.R.トールキンの作品の一部を残して放棄.
プログラミング関連では,意識的に残したのは,まつもとゆきひろさんのRuby本や結城浩さんの「プログラマの数学」.どちらも,オブジェクト指向とか数学とか,基本的な考え方を再確認するのに役立つ(と私が思っている)本.その他には,たびたびお世話になっているBertland Meyer の「オブジェクト指向入門」,Andrew Hunt と David Thomas の「達人プログラマー」あたり.
2006-04-24 [長年日記] ▲
_ [論文] cflow 内部での context exposure の束縛の提案 ▲
SPLAT 2006 の論文のメモの残り.
Remi Douence: Relational Aspects for Context Passing Beyond Stack Inspection. Proceedings of SPLAT 2006.
cflow の中で,target や this などの値を保存しておけるようにしようという提案.「p.doSomething() を実行している間に呼ばれた q.getData() 」に対してアドバイスを動かして,p や q への参照を獲得できるようにする.
有用性については,たぶん便利だろうな,と感じるのだけど,オーバーヘッドが大変なことになりそう.cflowのマッチしかたにもよるだろうけど,「p → q → x」のような呼び出しで (p, x) のペアと (q, x) のペアの両方がポイントカットにマッチしたらどうするんだ,とか気になる.
_ [論文] アスペクト間の相互作用の自動合成 ▲
Anis Charfi, Michel Riveill, Mireille Blay-Fornarino, Anne-Marie Pinna-Dery: Transparent Dynamic Aspect Composition. Proceedings of SPLAT 2006.
アスペクトの定義である「Pointcut → Advice」が複数与えられたとき,
それらが一緒に動くときの動作順序を自動合成するという手法の提案
(説明を聞くまで自動合成だと気づかなかった).
1つのポイントカットに複数のアドバイスが同時に動くとき,
「pointcut → advice 」ルールをすべて満たすような動作順序を出力するらしい.
考えていた出力と違ってたら declare precedence とか変更すればいいのか,と
質問してみたが,
ポイントカット定義が正しければちゃんと適切な出力が出るはずだ,というような
微妙な答えが返ってきただけだった.あまり考えてなかったのかもしれない.
_ [論文] MATLAB で AOP ▲
Joao M.P. Cardoso, Joao M. Fernandes, Miguel P. Monteiro: Adding Aspect-Oriented Features to MATLAB. Proceedings of SPLAT 2006.
SPLAT の中ではちょっと変り種.MATLABで,数値計算をするときの変数の型をデフォルトの数値型ではなく,別途記述するアスペクトによって固定小数点とかに変更できるようにしたという話(それ以外も計算途中のモニタリングとかも分離しているが).
この「型を外部から変える」という発想が珍しくて,それでプログラムを壊してしまうのではないか,というような否定的な意見もあったけれど,この手法の場合は数値型のインタフェース(使える演算の種類)は変わらず内部的な表現が変わっているだけだからいいのではないか,という意見もあった.
2006-04-25 [長年日記] ▲
_ [hyCalendar] PCMode 6月号に掲載されてます ▲
「オンラインソフト鑑定団」という,ソフトウェアの価値を勝手に評価するという記事で取り上げられてます.
2006-04-28 [長年日記] ▲
_ ビザ審査を通過 ▲
カナダ大使館の人ががんばってくれたのか,ぎりぎり間に合うように(2週間ほどで)ビザ申請の審査が終わったから出国していいよという連絡が来た.で,9月にASE/AO-ASIA参加のために一度戻ってくる予定.そのためにポジションペーパーか何かは確実に書かないといけなくなったけど.
ウィークリーマンションに結局ネット環境はなかったので,OUCC部室のネットワークを借りつつ作業の予定.ウィークリーマンションは7日までで移動日は8日なので,空港に近いホテルを取ってのうのうと過ごすかな,というところ.
問題は,バンクーバーでの住居(大学の寮のようなもの)の申請の返事が来てないこと.とりあえず問い合わせ.
_ kikaineko [KikainekoMockerの作者です。試してみていただきありがとうございます。 ご想像の通り、実装はかなり手間が..]
_ いしお [どうも,ご連絡ありがとうございます.また時間があれば,最新版をつついてみたいと思います. KikainekoMock..]