山田偽研

iCBM3

概要

様々なウェブブラウザのブックマークを一括マウントして管理するツールです.

このソフトには以下のような特徴があります.

  • Firefox, Google Chrome, Opera, Vivaldi, Lunascape, Sleipnir, Sleipnir 2, Sleipnir 3〜, Internet Explorerのブックマーク(お気に入り)をマウントできます.
  • OPMLフォーマットを拡張した独自ブックマーク(スクラップ&ゴミ箱)もマウントできます.
  • 独自ブックマークには"一般アイテム"以外に"実行ファイル""メモアイテム""エイリアス"も登録できます.
  • 一般アイテムとFeedの更新チェックができます.
  • Podcastを埋め込みプレーヤーによって再生できます.
  • ステータスバーに電光掲示ニュースのように更新チェック結果を表示します.
  • 新しく更新が見つかった項目を通知ウィンドウ(ポップアップ)に表示します.
  • ウェブブラウザの"訪問履歴"を列挙できます.
  • ブックマークのコメント欄に"分類タグ"を記述できます.
  • "分類タグ"Firefox3〜のタグやSleipnir 3〜のラベルと共有することができます.
  • すべてのブックマークアイテムと訪問履歴を対象に強力なキーワード検索を実行できます.

備考

各種ブックマークの対応状況

互換性については目安とお考えください.それぞれのブックマーク書式を完全に把握しているわけではないので,未知の不具合があるかもしれません.不具合が見つかった場合はご一報頂ければ幸いです.

ブラウザ バージョン 説明 ファイル/フォルダ/キー名
Internet Explorer 6〜 フォルダ Favorites\*.url
     〃 7〜 Windows RSS
Platform
Feeds - -
Mozilla Firefox 1〜2   bookmarks.html
    〃 3〜   places.sqlite (1)
    〃 3〜 バックアップ *.json (1) - -
Google Chrome     Bookmarks
Opera 6〜9   opera6.adr
 〃 10〜12   bookmarks.adr
 〃 10〜12 ニュース index.ini - -
 〃 25〜   Bookmarks
Vivaldi 1〜   Bookmarks
Lunascape 4〜   default.ld2 (2) (4)
Sleipnir 1   Favorite.sfv (4)
Sleipnir 2   Favorite.ffv (4)
Sleipnir 3〜   favorite3.json (3) (3)
  • 入: ブックマーク読み込み(インポート)
  • 出: ブックマーク書き出し(エクスポート)
  • 落: ブラウザからiCBM3へドラッグ&ドロップ
  • 歴: ブラウザの訪問履歴読み込み
注意1
スマートブックマークは一般アイテムと見なしますがブラウザ表示はできません.
注意2
4.2.0で導入されたShellFileItem(ローカルディスクのファイルをブックマークに登録する機能)には対応していません.
注意3
ラベルグループとリボンには対応していません.
注意4
Lunascape4,5やSleipnir1,2の場合,独自履歴ではなくInternet Explorerの履歴で代用します.

ダウンロード

iCBM3.gif iCBM3_0214b_WIN_NET451.zip Ver.0.214b .NET 4.5.1版 2017年9月24日
  iCBM3_0214b_WIN_NET35.zip 同上 .NET 3.5版 2017年9月24日
  iCBM3 マニュアル - - 2017年5月21日
  iCBM3 付録 - - 2017年3月12日

実行に必要なランタイムライブラリー

iCBM3を実行するためには,下記の実行環境とランタイムライブラリーが必要です..NET Framework以外は,iCBM3パッケージに同梱してありますので,そのままお使いください.

フリーのランタイムライブラリーをご提供されている作者様に,改めて御礼を申し上げます.ありがとうございます.

.NET Framework

このソフトを利用するためには,事前にMicrosoft .NET Framework 4.5.1もしくは3.5をインストールしておく必要があります.ご自分の環境に合わせたパッケージを以下のリンクから取得してください.

Azuki.DLL

エディタパネルとHTMLソースビューワには,エディタコントロール「Azuki」を使用しています.

System.Data.SQLite.DLL

Mozilla Firefox 3〜のブックマーク,Opera 15〜Google Chromeの訪問履歴,更新チェッカーのデータベース入出力には,SQLiteライブラリー「System.Data.SQLite」を使用しています.

LitJSON.DLL

Google ChromeMozilla Firefox 3〜Opera 25〜VivaldiSleipnir 3〜のブックマークの入出力,はてなAPI (JSON)のコールバック処理には,JSONライブラリー「LitJSON」を使用しています.

Interop.Microsoft.Feeds.Interop.DLL

Internet ExplorerのFeeds読み込みには,「Windows RSS Platform」を使用しています.

改造履歴

Ver.0.214b

  • 「選択項目をゴミ箱へ」コマンドを実行した時に,ツリー/リスト項目はゴミ箱へ移動しているのにも関わらず,情報ボックスの表示がそのまま残ってしまうバグを修正しました.(自分はいつも「完全削除」コマンドしか使ってなかったので,こんな基本的コマンドのバグなのに長らく放置してました.お恥ずかしい.)
  • ゴミ箱内項目を「選択項目をゴミ箱へ」コマンドで捨てようとすると,今までは完全削除する仕様でしたが,何もしない仕様に変更しました.
  • 項目をダブルクリックしてブラウザ表示させる動作を一時的に無効にする機能(Omit_DoubleClick)は今まで再起動すると忘れてしまう仕様でしたが,次回もその状態を引き継ぐ仕様に変更しました.

Ver.0.213b 差し替え版2

  • スクラップブックマークのLunascapeの更新チェックURLを修正しました.
  • jQueryのGoogleAPI参照を最新版(1.12.4)に更新しました.
  • 「オプション設定|ソケット|パラメータ|既定エンコード」の初期値を"UTF-8"に変更しました.

Ver.0.213b 差し替え版

  • スクラップブックマークのCNN.co.jpのFeedから全文取得するクリッピングパターンを修正しました.

Ver.0.213b

  • SQLiteライブラリー「System.Data.SQLite」を最新版(1.0.105.2)にリプレースしました.

Ver.0.212b

  • SQLiteライブラリー「System.Data.SQLite」を最新版(1.0.105.1)にリプレースしました.
  • テキストコンバータ関連の大改造(v0.210bの続き)を行いました.
    • ダイアログ上部に変換アイテムの確認リストを追加しました.
    • 確認リストのチェックボックスから変換対象の取捨選択を行うことができます.
    • 変換後のメッセージをメインウィンドウではなくダイアログ内で表示することにしました.
    • 変換パラメータにミスがあって中断した場合,それ以前に変換を行っているにも関わらず,「取り消し」操作が実行できないバグを修正しました.
    • 検索置換で何も変化がない場合は,以後の整形関数の処理は行わない仕様に変更しました.
  • ツリーのFeedアイテムを情報ボックスに表示して,ミニタグクラウドからチェック日時を変更しても反映されないバグを修正
  • スクラップブックマークのSleipnirの更新チェックURLとパターンを変更しました.
  • 検索バーに関する設定をいくつか修正・削除しました
    • Dictionary.com」と「Thesaurus.com」の検索URLを修正しました.
    • USTREAM」を検索メニューから削除しました.
    • Bing」のファビコンを最新のものに更新しました.

Ver.0.211b 差し替え版

  • スクラップブックマークのLunascapeの更新チェック時に,ダウンロードページからバージョン番号を取得することができなくなったので,別ページから取得することにしました.

Ver.0.211b

  • SQLiteライブラリー「System.Data.SQLite」を最新版(1.0.105.0)にリプレースしました.

Ver.0.210b

  • テキストコンバータ関連の大改造を行いました.
    • 複数の変換手順をまとめて実行する「一括変換」機能を追加しました.
    • モーダルからモーダレスダイアログに変更したことにより,ダイアログを閉じなくても,メインウィンドウの変換結果を確認できるようになりました.
    • 機能が増えたのでダイアログ上のレイアウトや配色を変更しました.
    • 変換取り消しの際に,更新チェックに係る項目の巻き戻しを行っていなかったバグを修正しました.
  • 情報ボックスのHTML表示のテンプレートのデータ構造を見直しました.呼び出し方は今まで通りですが,別々だった「基礎テンプレート」と「ボディ」をまとめて定義することにしました.これにより記述量は増えますが,テンプレートごとに異なるCSSやスクリプトを含むヘッダを使い分けることができます.
  • 情報ボックス・ブラウザパネルのHTML表示テンプレートで子テンプレートを呼び出す置換子について,通常版と条件付き版がある条件で混在してる場合にキャプチャを誤認してしまうバグを修正しました.
  • HTMLテキストに関連するいくつかの正規表現について,間違ってはいないが回りくどい表現なのでエレガントな書き方に改めました.
  • Feed記事などに表示するSNSボタンをカスタムメイドに変更しました.この記事を参考にさせていただきました.ありがとうございます.シェア数は各SNSのAPIを使ってコールバックで取得する方式なので,純正ボタンの時みたいHTML表示が糞詰まりになることなく,若干レスポンスも早くなったような気がします.

Ver.0.209b 差し替え版

  • Vivaldiの実行ファイルパスをGoogle Chromeに合わせて全ユーザー用に変更しました.
  • スクラップブックマークのOperaの更新チェックパターンを修正しました.

Ver.0.209b

  • SQLiteライブラリー「System.Data.SQLite」を最新版(1.0.104.0)にリプレースしました.
  • 更新チェックを新規開始する際に,コメント文に%checkマクロの記述がない場合は,全体チェックモードとみなして引数なしの同マクロを自動挿入することにしました.
  • 編集ダイアログ&情報ボックス・エディタパネルのマクロ入力支援メニューに%checkを引数なしで挿入する項目を追加しました.
  • 2016年12月20日頃から,スクラップブックマークの「はてなブックマーク - 注目エントリー」の記事に貼り付けた「はてなブックマーク」のソーシャルボタンのJavaScriptの応答が極端に悪くなったので,暫定的に静的リンクのボタンに差し替えました.

Ver.0.208b

  • 検索バーなどの検索テキスト入力欄で検索オプションをコンテキストメニューを用いて挿入する場合の規則をSQDN v0.87bと同じになるように統一しました.
  • 更新チェック中にウィンドウを最小化状態から表示状態に戻すと,図らずも「ステータスバーの速報ニュース」がリスタートしてしまうバグを修正しました.
  • スクラップブックマークのGoogle ChromeOperaの更新チェックパターンを修正しました.

Ver.0.207b

  • SQLiteライブラリー「System.Data.SQLite」を最新版(1.0.103.0)にリプレースしました.
  • エディタエンジン「Azuki」を最新版(v1.7.13)にリプレースしました.

Ver.0.206b

  • Mozilla Firefox v48.0において,ファイル「places.sqlite」のテーブル「moz_bookmarks_roots」が廃止されたことにより,SQLite形式のブックマークを読み書きできなくなったので,上記テーブルを参照しなくても良い別の方法に修正しました.
  • v0.205bで導入した「選択を変更した時にステータスバーをクリアする」仕組みは,更新チェック中にそれが起こると必要な表示も消えてしまうという無作法が起こるので改善しました.

Ver.0.205b2

  • facebookの箱型ソーシャルボタンのデザインが変更されたことにより,他サービスのボタンとのレイアウトが崩れてしまったので,シェアボタンと組み合わせて高さが揃ってるように見せかけることにしました.
  • ウェブサイトのスナップショット画像を取得するウェブサービス「Mozshot」が最近殆ど機能しなくなってしまったので,「HeartRails Capture」に再び乗り換えることにしました.
  • スクラップブックマークのFeedのサンプル/Podcastのサンプルを「As It Is - Voice of America」に変更しました.

Ver.0.205b

  • SQLiteライブラリー「System.Data.SQLite」を最新版(1.0.102.0)にリプレースしました.
  • 訪問履歴検索でもwhere句を使って特定のブラウザの訪問履歴に検索対象を絞り込む事ができるようになりました.
  • ドラッグ&ドロップでiCBM3にアイテム登録する場合に,Vivaldiだけはドラッグデータにタイトル情報が埋め込まれていないので,今までURL情報しか取得することができません.この奇妙な仕様は旧Operaの頃から引き継がれており,開発者に何か拘りがあるのでしょう.しかし,それでは使い勝手が悪すぎるので,Vivaldiだけはタイトルを訪問履歴から取得する(上記のwhere句を使って)方法を導入しました.この方法は未訪問のページ内リンクに適用できないなどの不満点もありますが,オリジナルよりはかなりマシになります.
  • ステータスバーの速報ニュースが停止中に表示されたエラーメッセージはいつまで経っても消えません.これは非常にブサイクです.なので,別アイテムを表示する時にこっそりとメッセージエリアをクリアする仕様に変更しました.
  • ブックマーク検索のwhere句の引数が誤っていても,エラーと認識せず検索を実行してしまうバグを修正しました.
  • スクラップブックマークのLunascapeの更新チェックパターンを修正しました.

Ver.0.204b

  • SQLiteライブラリー「System.Data.SQLite」を最新版(1.0.101.0)にリプレースしました.
  • 「標準OPML&拡張OPML&簡易HTML形式」でエクスポートを実行すると無限ループに陥ってしまうバグを修正しました.これらの形式では「自動分配モード」フラグを評価する必要が無いのに,それを行ってしまったがために,このような初歩的バグが発生してしまいました.お恥ずかしい.
  • 環境変数の一文字整形関数に「制御文字(0x00〜0x19)を除去する」機能の"R"を追加しました.
  • ウィンドウタイトルの表示順を変更しました.
  • facebookのソーシャルボタンの端が欠けてしまったので表示幅を広げました.
  • スクラップブックマークにVivaldiの更新チェック項目を追加しました.

Ver.0.203b

  • 新ブラウザVivaldiのブックマーク読み書きと訪問履歴列挙&検索に対応しました.まだ,ベータ版なので仕様変更で対応できなくなるかもしれないのでご注意ください.
  • ブックマークのエクスポートにおいて,特殊フォルダの自動分配は入力と出力のフォルダタイプが完全に一致しない場合は,無理に中身をバラさず特殊フォルダのまま保持する仕様に変更しました.エクスポートされたブックマークをブラウザで整理し直す時に,バラされていると由来がわからず返って不便な場面が多いのでそうすることにしました.
  • ツールバーの「同期」と「開始」ボタンに,全同期だけのような単機能タイプのものを追加しました.既存のドロップダウンメニュータイプは操作が面倒だと感じる方のために用意しました.
  • 今まで「最大化」したウィンドウを「最小化」して元に戻すと,諸々の事情から強制的に「ノーマル状態」のウィンドウに復元していましたが,普通のアプリと同様の挙動をするように改良しました.
  • 横断検索を行うときの修飾キーと検索コンボボックスを選択した直後に即検索をしないようにする修飾キーは両方ともShiftキーです.同じタイミングで使うことはないので,コンフリクションは起こらないのですが,異なる動作に同じ修飾キーを割り当てるのは良くない仕様です.そこで,前者の修飾キーはAlt,後者の修飾キーはそのままShiftキーとすることにしました.
  • メイン検索バーやエディタパネルの検索バーで,修飾キーCtrlを押しながら検索を行うと検索履歴に記録を残さない機能を追加しました.
  • ブックマークの読み書きや着脱時のメッセージが未だしっくりこないので変更しました.
  • %tempマクロのspecial_folderキーのFirefox3_Menuのスペルが間違っていたので修正しました.
  • ウェブサイトのスナップショットを提供するSearchPreviewサービスの仕様がいつの間にか変更されたので,そのURLを作成するための環境変数/整形関数「a」の返り値を修正しました.
  • ブラウザのコンテキストメニューからiCBM3にアイテムを登録する機能は,Mozilla Firefoxのスクリプト支援ツールがサポート対象外になるなど,正常に動作するブラウザの方が少数派になってしまったので,機能削除はしないが使用推奨はしないobsolute扱いに格下げしました.

Ver.0.202b

  • SQLiteライブラリー「System.Data.SQLite」を最新版(1.0.99.0)にリプレースしました.

Ver.0.201b

  • Twitterが2015年11月20日にツイート数付きのボタンAPIの提供を廃止したので,情報ボックスのソーシャルボタンレイアウトが崩れてしまいました.代替サービスも登場したようですが,登録制なのでiCBM3の用途にはそぐわないようです.そこで,レイアウトだけ整合するダミーの箱型ボタンを配置することにしました.
  • 「未読」コマンドを実行したとき,リストを未選択にしているにも関わらず,情報ボックスや選択項目数の表示がリセットされないバグを修正しました.

Ver.0.200b

  • テキストコンバーターに「使い捨て変換」モードを追加しました.その場限りの変換を行います.もちろん,気が変わって,定型変換としてリストに登録することも可能です.
  • テキストコンバーターに「出力=入力」スイッチを追加しました.v0.195bで導入したテキストコンバーターは入力に出力エレメント以外の項目を読み込むことができる柔軟な設計なのですが,単純な変換を行いたい場合は逆にこの仕様が煩わしく感じることもあります.そこで,このようなスイッチを設けました.
  • テキスト検索の検索式の{エレメント}に"アイコン"を追加しました.アイコン番号について検索を行うことができます.
  • %feedと%checkマクロのサブキーreadに新パラメータ"copy"を追加しました.コピーコマンドを実行したとき,このパラメータが定義されているならば,アイテムを読了(訪問)したとみなします.それ以外の動作はパラメータ"auto"と同じです.
  • ステータスバーの速報ニュースの表示条件に未読や新着をセットしているにも関わらず,既読Feed記事が表示されてしまうバグを修正しました.
  • テキストコンバーターの置換テキストに「クリッピング」オプションを付加えた状態で,複数の検索一致が見つかった場合の挙動がおかしいバグを修正しました.アルゴリズム的には二重ループの内と外を逆にしてしまっていたという,全くもって初歩的なミスです.お恥ずかしい..
  • 「ブラウザへURLを整形して送る」時に,2つ以上の修飾キーを押しても片方しか認識していなかったバグを修正しました.かなり前から巣食っていたみたいです.自分自身はこの機能を殆ど使ったことがなかったので発見が遅れてしまいました.
  • 起動直後にステータスバーの右端ドロップダウンメニューに新着数が表示されない場合があるバグを修正

Ver.0.199b 差し替え版

  • 「初期設定|テキストコンバーター|タグマクロをクリア」のパラメータにミスが見つかったので修正しました.

Ver.0.199b

  • SQLiteライブラリー「System.Data.SQLite」を最新版(1.0.98.0)にリプレースしました.
  • 通常は内容やマクロ指令に応じて,情報ボックスの表示パネルをブラウザもしくはエディタのどちらかに切り替えるのですが,エディタに固定したままにできるスイッチを導入しました.
  • 情報ボックスのブラウザパネルからリンクを開く際に,今までは新規ウィンドウの生成を一部許可していましたが,セキュリティ&操作性の観点から全面禁止することにしました.
  • 情報ボックスのエディタパネルのシンタックスハイライトで,グループタイプの正規表現パターンを複数指定すると,配色がすべて同じになってしまうバグを修正しました.(エディタコントロール Azukiの不具合っぽいのですが,よくわかりません.)
  • 情報ボックスのエディタパネルのマクロ入力支援メニューについて,フォルダアイテム編集時の%displayマクロのサブキーmeは原理上設定できないのでメニューから除外しました.
  • ダブルクリックでフォルダを開くタイミングを微調整しました.開いた後に子アイテムを選択できない場合があるのでチューニングしました.
  • 保存すべきブックマークや更新チェッカのデータベースが膨大になってくると,起動だけでなく終了も時間がかかるようになります.それを心理的に早く見せかけるため,終了時にブックマークやデータベース保存する前にウィンドウを見えなくしてしまうトリックを施しました.
  • Googleのロゴが新しくなったので,検索ボックスのファビコンを差し替えました.
  • スクラップブックマークの「はてなブックマーク - 注目エントリー」の記事などに表示されるソーシャルボタンの体裁を箱形に変更しました.(一応,従来型ボタンのコードも残してあります.)さらに,Pocketボタンを追加しました.
  • チェックアイテムにソーシャルボタンを表示しても意味が無いので削除しました.

Ver.0.198b

  • これまで,ブックマークファイルの読み込み時にエラーが起こった場合は,ブックマーク全体をアンマウントしてしまう仕様でしたが,読み込めたアイテムだけでもサルベージして活かせるようにしました.ただし,エラーが起こったブックマークファイルは,もしかしたら別の方法で読み込むことができるかもしれないので,iCBM3の同期で上書きしないようにするフラグも同時に設けました.
  • これまで,デフォルトスクラップやゴミ箱の二重定義があった場合も,上記と同様にアンマウントしてしまう仕様でしたが,むりやり通常スクラップとして読み込んでしまうことにしました.
  • Opera 25〜形式のブックマークのフォルダ構成がまた変更されたので対応しました.こういう基本仕様は公開する時点でコンクリートに決めておいて欲しいもんです.変更が爺の小便みたいに後からちょろちょろ出てくると面倒なことこの上ないわけですよ.ブツブツ..
  • Opera 25〜形式のブックマークのフォルダ構成が変更されて,ブックマークの中にスピードダイアルデータが統合されたので,専用ファイルを読み込む必要がなくなりました.なので,Opera 15〜で導入したスピードダイアルファイル"favorites.db"の読み込み機能を廃止します.
  • Opera 25〜形式のブックマークのフォルダ構成が変更された結果,「特殊項目の列挙」コマンドで共有ブックマーク,スピードダイアル,ゴミ箱,未整理のブックマーク,マイフォルダが列挙できていなかったバグを修正しました.
  • Opera 25〜形式のブックマークファイルはGoogle Chromeのそれを独自拡張したフォーマットになっています.なので,Google Chromeと同じ「その他のブックマーク」フォルダも存在しますが,Opera 25〜では「CustomRoot」があるために使われず「盲腸」のような立ち位置になっています.これまで,iCBM3はOpera 25〜の「その他のブックマーク」フォルダも読み込んできましたが,使っていないフォルダが見えているのは紛らわしいと思われるので読み飛ばすことにしました.更に,前バージョンでは,「CustomRoot」フォルダも読み込んでいましたが,Opera 25〜本体のブックマークマネージャーでは見えないようにしているので,それに倣ってiCBM3でも隠すことにしました.
  • Firefox(SQLite)形式のブックマークファイルについて,placesテーブルの構成レコードが増えたせいで書き出しできなくなっていたバグを修正しました.フォーマットがいつ変更されたのか?全く気づいてませんでした.お恥ずかしい.
  • Firefox(JSON)形式のブックマークファイルのタグとFeedに関する書式が変更されたので対応しました.
  • Firefox(JSON)形式のブックマークファイルを読み込む時,セパレータ項目にあるはずのないタイトルを取得しようとしてエラーになってしまうバグを修正しました.
  • Firefox(JSON)形式のブックマークファイルを書き出す時,日付に関する出力がlong型になっていなかったバグを修正しました.(厳密にはこちらのミスではなくLitJSONライブラリのバグに起因)
  • Google Chrome形式のブックマークファイルを書き出す時,コメントから%tempマクロを消去してなかったバグを修正しました.(ところが,この修正をした途端にGoogleがブックマークGUIを元に戻してしまった.なので,コメントを書き出しても標準では見ることができない.拡張機能を使えばあの毳毳しいGUIは復活するけど,どうしたもんだか..)
  • Sleipnir 1Sleipnir 2形式のブックマークファイルを書き出す時,エイリアスアイテムを展開するか否かのフラグが逆になっていたバグを修正しました.
  • Internet Explorer 8以降で導入された「Webスライス」アイテムをFeedと誤認してしまうバグを修正しました.
  • Google ChromeOpera 25〜形式のブックマークファイルは両方とも"Bookmarks"と同じ名前なので,今まではマウントする際に中身を読み込んで固有のキーワードから識別するようにしていました.しかし,このやり方では ブックマークファイルが巨大になってくるとオーバーヘッドが大きくなり負担になります.これからは,まず上位フォルダ名から判断できるなら識別して,それがダメならば従来のように中身を読み込んで識別するようにします.
  • Firefox(JSON)Sleipnir 3〜形式のブックマークファイルは両方とも"json"と同じ拡張子なので,上記と同様に今までは中身から識別していましたが,まずは上位フォルダ名から判別して,それがダメならば従来のように中身を読み込んで識別するようにします.
  • Firefox(JSON)Google ChromeOpera 25〜形式でエクスポートするためのテンプレートファイルを新調しました.
  • Firefox(SQLite)Firefox(JSON)の「スマートブックマーク」やInternet Explorer 8以降の「Webスライス」アイテムは,他形式のブックマークに変換保存しても使い道がないので自動的にスキップすることにしました.
  • 「別形式で保存」コマンド実行時に,Feedアイテムやセパレータを出力するか否か,アイテムのコメントからマクロを取り除いたり,ダイアログを開いたままにするかを設定できるオプションを追加しました.
  • 「別形式で保存」コマンド実行時に,出力パスが重複する状態から,ファイル/フォルダセレクタで別ファイル/フォルダに変更したにもかかわらず,エラーメッセージが消えないバグを修正しました.
  • 「別形式で保存」コマンドをある条件(省略)で自動分配オプション付きで実行すると,元のブックマークの親子関係を崩してしまうことがあるバグを修正しました.具体的にはAddNodeをやめてchild.Addに変更しています.
  • 「ブックマーク同期」コマンド実行時に起こりえるエラーメッセージを,もっとわかりやすい表現に修正しました.
  • オプション設定でブックマークを追加するときに,サポートしていない形式や既に登録済みのファイル/フォルダの場合は,エラーメッセージを表示して弾くことことにしました.
  • オプション設定でブラウザを追加するときに,既に登録済みの実行ファイルの場合は,エラーメッセージを表示して弾くことことにしました.
  • テキストコンバーターダイアログの「入力」テキストボックスの枠を広げました.
  • テキストコンバーターの機能が充実してきたので,編集ウィンドウの複数アイテム編集モードを廃止します.
  • テキストコンバーターで変換した結果に伴う事後処理(タグクラウド更新,更新チェック,ニュース項目の再構成)をまったく考慮していなかった大ポカを修正しました.
  • テキストコンバーターと編集ウィンドウと情報ボックスで行われる事後処理を共通モジュール化しました.
  • これまで,各種コマンドに送る選択項目の定義を「フォーカスがあるコントロールの選択項目」としてきましたが,「リストが選択されている場合はその項目,選択されていなければ親フォルダ項目,親がなければ選択項目なし」に変更します.従来の仕様では,情報ボックスで表示している項目と選択項目が一致しない場合があって紛らわしかったのですが,新仕様では両者が必ず一致します.
  • 上記の仕様変更に伴い,「オプション設定|ツリー&リスト|ツリー|フォーカスコントロールによって選択項目が変化する」フラグを廃止します.
  • 上記の仕様変更に伴い,フォルダツリー選択項目を情報ボックスに表示した状態でミニタグクラウドをクリックしてもリストに選択状態を継承できなかったバグが解決しました.
  • 上記の仕様変更に伴い,ツリーやリストのFocusイベントでボタンやメニューをリフレッシュする必要がなくなったので該当コードを除去します.
  • 新しいメニュー項目 「すべてを選択解除」 を追加します.リストの選択状態を強制解除するコマンドです.また,選択中のフォルダツリーを再度クリックしても同じ動作をします.
  • これまで,タグクラウドモードでリスト項目を選択後に「親へ移動」コマンドを実行した時に,複数選択していても先頭項目しか選択状態を継承できませんでしたが,全部継承できるように改良しました.
  • 再起動時にリストの選択状態を再現する機能はセパレータを除外していましたが,新シリアライズ法の採用でなるべくセパレータも再現できるようにしました.ホントはこんな面倒くさいことしないで,GUIDを割り当てたいところなんですが..
  • セパレータを選択したときは,今まで情報ボックスのタイトルに「未選択」と表示していましたが,それでは連れないので「セパレータ」と明示することにしました.
  • エラーログの書式を変更しました.また,エラーログファイルはセッションごとにファイルを分けて,前回のエラーログは"ErrorLogBAK"と言う具合にバックアップすることにしました.さらに,通知は起動時のみダイアログで行い,実行中はステータスバーにさらっと表示するだけにしました.ダイアログ通知ってのは,鬱陶しいしドキッとしますからね.
  • 起動時のブックマーク読み込み数やオプション設定でブックマークをマウント/アンマウントした数の表示方法(書式)をまたまた変更しました.なかなか,これぞっていう書式が思いつかず試行錯誤が続いています.
  • WebBrowserコントロールでPDFを表示してプログラムを終了すると,ビューアプラグインのプロセスがゾンビ化してしまうことがありました.しかし,最近はそのような問題も解消され,対処する必要がなくなったので該当コードを除去します.
  • %newsマクロのpermitサブキーを編集してもニュース表示や通知ウィンドウにすぐ反映しないバグを修正しました.
  • 外部ブラウザからのドラッグ&ドロップを処理するコードを抜本的に改良しました.このコードは随分昔に作成したまま全然メンテナンスしてなかったので,ブラウザ側の仕様変更に対応しきれなくなっていました.
  • ステータスバーのニュースをクリックすると,条件によっては自爆する問題を解決しました.
  • 起動時の画像ファイル読み込みで,まれに自爆する問題は未だに原因不明ですが,リカバリーをして未練たらしく続行するより,必ず強制終了する道を選びました.

Ver.0.197b

  • SQLiteライブラリー「System.Data.SQLite」を最新版(1.0.97.0)にリプレースしました.
  • 更新チェッカーのSQLiteデータベースファイルのフォーマットを一部変更しました.ただし,混乱を避けるために,ユーザーが手動で変更を指示するまでは,今までの旧フォーマットを使い続けることができます.
  • 直前に完全削除したフォルダが「進む・戻る」コマンドの表示履歴にゾンビ状態で残ってしまうバグを修正しました.随分前に対処したはずなのに,また再発してしまったようです.お恥ずかしい.
  • テキストコンバータデータをインポート&エクスポートする機能を追加しました.
  • スクラップブックマークのGoogle ChromeOpera 25〜の更新チェックパターンを修正しました.

Ver.0.196b

  • Json形式のブックマークの読み込みやマクロ引数の解読で処理に時間がかかっていたコードを改良しました.Google ChromeOpera 25〜のブックマークを読み込むスピードが早くなりました.
  • Google Chromeの新ブックマークでコメント(正式には「説明」や「メモ」という名称)がサポートされるようになったので読み書きできるようにしました.これでGoogle Chromeのアイテムにも分類タグを打つことができます.
  • %checkマクロのkeywordサブキーでキャプチャした内容をtitleやcommentやpopupサブキーに流し込むための置換子に{$N}や{$&}を追加しました.どのグループを展開するかなどを明示的に指定する用途に利用します.
  • 起動後に更新チェックするまでの遅延時間の初期値を若干長めにしてみました.

Ver.0.195b

  • SQLiteライブラリー「System.Data.SQLite」を最新版(1.0.96.0)にリプレースしました.
  • 文字列置換などの操作を「テキストコンバーター」というひとつのダイアログにまとめました.これに伴い,今までごちゃまぜでわかりにくかった「文字列置換」と「環境変数」のパラメータを独立に入力する仕様に変更しました.更に,変換コマンドを取り消すコマンドも用意しました.
  • 情報ボックス・ブラウザパネルの表示用テンプレートを指定した要素(環境変数)がない場合は読み込まないというオプションを付加できるようにしました.例えば,Podcast記事と通常記事が混在するFeedの場合,通常記事にもMP3プレーヤーが無意味に表示されてしまうことを防ぐことができます.
  • 全エントリー項目の「次回チェック日時」をリストアップする機能を新設しました.
  • オプション設定|コピーに既存コピー項目の「複製」を作成するボタンを追加しました.
  • オプション設定ダイアログのサイズを少し大きくしました.
  • %feedマクロに監視テキストを設定するサブキーwatchを新設しました.記事内に監視テキストが見つかったら,記事のリスト項目の文字色を変更する機能です.
  • %feedマクロのincludeキーの合致条件を若干緩くしました.
  • 情報ボックス・エディタパネルで内容を編集中に,外部からそのアイテムに対する変更イベント(RSSの更新など)が来た場合に,編集内容がリセットされてしまう現在の仕様は明らかに不合理です.なので,編集フラグが立っている場合は,外部からの内容変更をリジェクトする仕様に変更しました.
  • 定型文コピーコマンドのショートカットキー(Ctrl+数字)とアイコン変更のショートカットキー(数字)がコンフリクションを起こしていたので解決しました.
  • Web検索結果を情報ボックスに表示したり,設定ファイルの編集を行っている状態で,リストやツリーの選択項目の「親に移動する」コマンドを実行すると条件によっては自爆するバグを修正しました.
  • 初期設定の差し替えフラグconfig_replaceがある条件でヌルオブジェクトになってしまうバグを修正しました.
  • 初期設定(iCBM3.XML)のGoogle Chromeの初期パスを変更しました.
  • スクラップブックマークのFeedのサンプルの「エイゴの時間【podcastで英語のレッスン】」のサイトアドレスと記事構成が変更されたので対応しました.そして,上記の改良した表示用テンプレートをさっそく使っています.

Ver.0.194b

  • エディタエンジン「Azuki」を最新版(v1.7.12)にリプレースしました.

Ver.0.193b

  • Opera 25.0.1614.50でやっと正式導入されたブックマークの読み書きに対応しました.
  • 旧Operaのツールバー項目の位置情報,IE8以降のウェブスライス項目のFeedUrl,IEお気に入りのフォルダの実際の名前,Mozilla Firefox 3以降のスマートブックマークは,それぞれにフラグや変数を用意してブックマーク項目に格納していましたが,それだけのために領域を占有するのはもったいないので,コメントに%tempマクロとして書き出すことにしました.
  • 各種ブラウザのブックマークツールバーなどの特殊フォルダに関するフラグも同様な理由から%tempマクロに書き出すことにしました.
  • Mozilla Firefox 3以降のスマートブックマークとIE8以降のウェブスライス項目への配色を廃止します.それに伴い,外観設定からその配色パラメータを削除しました.
  • 各ブックマーク項目からリストアイテムへの参照を保持しないことにします.その代わり,辞書配列を用意して,それを介して参照することにしました.
  • 「IEのお気に入りをレジストリから読み込む方法」のコード残骸がまだ残っていたので削除しました.
  • Sleipnir 2のブックマークファイルに記録されている並び順パラメータ(倍精度整数値)は,実はまったく使われないので読み飛ばすことにしました.
  • ブックマークを読み書き/アンマウント/同期したときに表示するメッセージ(実行数)が略号すぎて意味不明なので,丁寧に表記するようにしました.
  • 一時無効にしていたブックマークを再度マウントしようとすると,正常に読み込まれているにもかかわらず,アンマウントしたとカウントされてしまうバグを修正しました.
  • 任意のブックマーク項目がどの特殊フォルダに属しているのかを探す関数"FavTool.BelongsTo"をある条件で実行すると返り値がないという不具合を生じるので修正しました.
  • 表示履歴に「最近訪問した項目」が複数スタックされてしまうバグを修正しました.
  • 列挙モードのリストからフォルダ項目をゴミ箱へ捨てるもしくは完全削除する時,もしその子項目もリストに表示されているのならば一蓮托生で削除すべき所をまったく処置していなかったバグを修正しました.

Ver.0.192b

  • SQLiteライブラリー「System.Data.SQLite」を最新版(1.0.94.0)にリプレースしました.
  • 以前から掲示板で指摘があった「一部の環境で.NET 4.5.1版が起動できない」問題の原因が究明できたので対処しました.具体的にはSQLiteライブラリーを静的リンクバージョンに切替えることで,未参照になる不具合を回避してします.対処が必要なのは4.5.1版のみですが,そうすると非対称な依存関係となり管理が煩わしいので,3.5.1版も同時に静的リンクバージョンに切替えます.
  • Windows XPのIE7でしか動作しない「IEのお気に入りをレジストリから読み込む方法」を残しておいても,使い道がないので削除することにしました.
  • Feed記事を見ている最中に更新が発生した場合に,表示アイテムのリスト項目が表示域外に飛んでいかないように,スクロールを阻止する仕組みを導入しました.

Ver.0.191b

  • JSONライブラリー「LitJSON」を最新版(0.90)にリプレースしました.
  • 「情報ボックス|エディタパネル」と「%checkマクロ/keywordサブキーの専用編集ダイアログ」に関する外観設定に「ペア括弧強調」スイッチを追加しました.これに伴い「外観設定ファイル」の該当パラメータを含む要素の構成を変更しました.
  • 外観設定ファイルの読み込みで例外エラーが発生した場合は,有無を言わさずiCBM3を強制終了する仕様に変更します.長い間この問題が放置されていたことに,改めて自分の間抜けさを痛感しています.
  • 例外エラーが発生した時にエラーログをいきなり表示するのは唐突なので,エラー発生を知らせる簡単なメッセージダイアログを表示して,そこでログも開くかどうかを尋ねることにしました.
  • 更新チェックなどのソケットの仮のユーザーエージェント名が,古くなりすぎたので新しめの名称に変更しました.

Ver.0.190b

  • エディタエンジン「Azuki」を最新版(v1.7.11)にリプレースしました.
  • Google ChromeMozilla Firefox 3〜のブラウザ訪問履歴を取得する際に,titleレコードがnullや空の項目はSQLite命令の段階で撥ねるようにしました.
  • スクラップブックマークのLunascapeに関する更新チェックページとパターンがレスポンスが悪くなったので修正しました.

Ver.0.189b

  • SQLiteライブラリー「System.Data.SQLite」を開発最新版(1.0.93.0)にリプレースしました.
  • 「別形式で保存」コマンドを改良しました.
    • 実行条件が整わなければ,「実行」ボタンをクリックできない仕組みにしました.
    • 出力するフォルダと名称を別々にセットするやり方は面倒なのでひとつにまとめました.
    • 同名出力名が存在する場合は,その都度派手にエラーメッセージを表示します.
    • 実行後に出力場所をエクスプローラで開くオプションを追加しました.
    • 実行後にメインウィンドウのステータスバーに結果メッセージ表示することにしました.
  • 「文字列置換」コマンドに「事後処理(整形関数)」オプションを追加しました.
  • %feedマクロのpagesサブキーにゼロをセットすると,新着記事を受信する場合は過去記事をすべて削除するオプションを追加しました.
  • 「ゴミ箱に捨てる」コマンドを実行した後に,ドラッグ&ドロップでアイテムを移動した時と同じく移動先に視点が移るのは,なんだか「ゴミ箱を覗きこんでいる」ようでお行儀が良くないので,このコマンド実行時は視点を移動しないことにしました.
  • Feed記事をドラッグ&ドロップしようとすると,「コピーに移行します」という音付きメッセージが表示されますが,けっこう鬱陶しいので事後にメッセージを表示することにしました.ついでに,「移動/コピー/削除/ゴミ箱を空に」コマンドも事後にメッセージを表示することにしました.
  • 「テキスト置換」系コマンドが終了したらメッセージを表示することにしました.
  • 「次回チェック日時」を変更した時のメッセージがあっさりしすぎなので少し詳しくすることにしました.
  • 「起動時のブックマーク読み込み」と「同期」コマンドと「オプション設定」コマンドでブックマークの着脱を行った後のメッセージを改良しました.ブックマークの読み書き数やアンマウント数の情報も表示することにしました.
  • スクラップブックマークのMozilla Firefoxに関する更新チェックパターンが変更になったので修正しました.

Ver.0.188b

  • CCBでの公開に引き続き,.NET Framework 4.5.1でビルドすることにしました.念の為,.NET 3.5でビルドしたパッケージも置いています.
  • Sleipnir 3〜のブックマークの入出力に関する下記の不具合を修正しました.
    • 2種類あるFeedアイテムの定義方法の一方しか対応できていなかったバグを修正しました.(何故2種類もあるんだ.紛らわしい.(心の声))
    • 仕切り線(セパレータ)に対応しました.
  • 「別形式で保存」コマンドにて,ブックマークファイル"favorites3.json"を出力する場合は「Sleipnir 3〜」という名称のメニュー選択肢にしました.
  • Operaのv12以前と15以降のブラウザ訪問履歴を今まで分けていましたが,両者を同時に使っているケースはよほどの物好きしかないだろうと想像します.そこで,これらをひとつにまとめて表示することにしました.
  • Opera 15〜以降のブラウザ名を「Opera15」と表記していましたが,バージョン番号抜きの「Opera」と表記することにしました.但し,内部認識コードは今までどおり「Opera15」と記述します.
  • ConvertToHtmlText(HTMLテキストを平文化)コマンドに関して,以下の二つのケースは動作の軽量化を目指すためにCCBで採用した簡易版メソッドに置き換えることにしました.1)部分更新チェックの「ダイナミックタイトル/コメント」で{keyword}変数を平文化する場合,2)速報ニュースのツールチップを表示するときに内容を平文化する場合.その他の適用例に関しては従来通りのメソッドを使用します.
  • 未使用変数の除去しました.

Ver.0.187b

  • HtmlToolクラスのConvertToPlainTextメソッド(HTMLテキストを平文に変換する)のアルゴリズムを見直しました."script"や"style"などのタグを正常にスキップできない問題などを解消しました.
  • 「速報ニュース」をマウスホイールでスクロールする時は,ツールチップ(要約)がそれに呼応して変化するのですが,キー操作でスクロールするときは,この動作を考慮していなかったミスを修正しました.
  • SQLiteライブラリー「System.Data.SQLite」を開発最新版(1.0.92.0)にリプレースしました.

Ver.0.186b

  • CCBSQDNと同じように「暗黙の検索オプション」を事前に設定できるようにしました.
  • 今後の開発で生じうる混乱を避けるために,RegexTool.CreateRegexの引数規則をCCBSQDNに揃えました.
  • 検索パターン中の"&&"や"||"と言った文字列をエスケープ&アンエスケープをしていなかったバグを修正しました.

Ver.0.185b

  • エディタエンジン「Azuki」を最新版(v1.7.9)にリプレースしました.
  • SQLiteライブラリー「System.Data.SQLite」を開発最新版(1.0.91.0)にリプレースしました.

Ver.0.184b

  • SQLiteライブラリー「System.Data.SQLite」を開発最新版(1.0.90.0)にリプレースしました.
  • 検索と置換に関するコードを全面的に書き直しました.
    • CCBの検索書式を更に発展させたテキストパーサー
    • いくつかの検索オプションを廃止,その一方で置換オプションを新設
    • 置換コマンドにクリッピングモードを追加
    • 最大置換回数の設定
    • 検索ボックスの選択項目直上にツールチップを表示するように
    • 検索ボックスの最大幅を初期設定から設定
    • ウェブ検索の「bing」と「weblio」のアイコンを最新のものに差し替え
    • ウェブ検索の「Twitter」と「Ustream」と「Yahoo! 辞書」と「weblio」のクエリーを最新の書式に書き換え,また「Yahoo! 百科事典」はサービスが終了したので削除
    • 情報ボックス/エディタパネルの検索ボックスをコンボボックス化
    • 情報ボックス/エディタパネルの検索ボックスからブックマーク検索
    • 情報ボックス/エディタパネルの検索ボックスとソースウィンドウの更新チェックパターンの「検索オプション」はコンテキストメニューから入力することに
    • 「重複項目列挙」コマンドを廃止
    • エイリアスパスの書式を変更(%aliasマクロで囲まない,エスケープの簡略化)
    • ブラウザのコンテキストメニュー用スクリプトを新検索コマンド名に修正
  • ブックマークアイテムの要素に「作成日時」を追加しました.これに伴い,旧Operaブックマークの「作成日時」による自動整列に対応しました.
  • 今まで%feedマクロのclipサブキーはそれだけで自動的に記事取得してコメント欄に内容を流し込む仕様でしたが,これからは同マクロのcommentサブキーに"{$clip}"という置換子の記述を含んでいないと,記事取得に行かない仕組みにしました.従来に比べ.手順が複雑にはなりますが,コメント欄に記事内容以外の情報も工夫によっては取得/記述することができるメリットがあります.
  • はてなブックマークからタグを自動取得するアルゴリズムを改良しました.
    • 前回のチェックで取得失敗した場合に,次回チェック時に再試行する
    • ブックマーク数がある閾値を超えないと,自動取得に行かない
    • 自動取得失敗したときに残る"{$hatena}"置換子はタグクラウドに表示しない
  • タグクラウド表示に関する改良を行いました.
    • ブラウザコンポーネントがIE11になってCSSの仕様が変わったようで,選択タグの配色が上手く動作しなくなったので細工を施す.しかし,小手先の修正なので,これでいつまでもつかは不明.
    • 表示に関するレイアウトや配色を外部ファイル(外観設定ファイル&専用CSSファイル)から参照することに
    • 情報ボックスのミニタグクラウドの配色/フォントをメインのタグクラウドと独立に設定できるように
  • 「最近訪問した項目」コマンドのアイコンはブラウザ訪問履歴と同じなのは紛らわしいので独立したアイコンに変更しました.
  • Feedアイテムの記事を取得するアドレスの呼び名を"RSS"に統一しました.今まで入れ物(フォルダ)と取得アドレスを同じ"Feed"という名前で呼んでいましたが,区別をわかりやすくするために別々の呼称にすることにしました.
  • 環境変数の囲み記号に"[..]"も使えるようにしました.今までの"$..$"はコンフリクションの危険性は低いけれど,視認性に欠けるので導入しました.しかし,新記号がコンフリクションを起こす場合のために,旧記号の書式も残しておきます.
  • 環境変数の第1パラメータに作成日時を指定するaとA,RSSアドレスを指定するrを追加しました.
  • Opera 15〜のブックマークファイル(未公開)の書式がGoogle Chromeとほぼ同じ(若干ローカルルールあり)になったので対応しました.実は随分前に変更されていたらしいのですが,まったく気づいてませんでした.普段,Opera 15〜をまったく使っていないことがバレちゃいますね.
  • ステータスバーの速報ニュースを手動で移動するボタンを廃止しました.その代わり,グローバルショートカットキー(Cntrol+Left/Right)で操作できるようにしました.マウスホイールによる操作も従来通り使えます.
  • 重大な例外エラーが発生したときに表示するダイアログを廃止して,一般エラーと同様にステータスバーにメッセージを表示することにしました.ただし,今まで同様にエラーログは初期設定フォルダ内に出力します.
  • 削除などの外的理由で,アンマウントされたブックマークファイルに属するフォルダツリーの開閉状態を起動時に再現しようとして,実体がなくなっているのでヌル参照になるバグを修正しました.
  • Firefox(HTML)形式のブックマークのHTMLタグの属性値が空文字の場合に読み込めないバグを修正しました.
  • 「オプション設定|コピー」にて既存のパラメータを編集して設定ダイアログを閉じても,すぐにはツールバーやメニューに反映されないバグを修正しました.
  • 数値入力コントロールでエンターキーを押した時,BEEP音が鳴らないようにするトリックを施しました.
  • スクラップブックマークのSleipnirに関する更新チェックは,Sleipnir 5に限定して他のバージョンのチェックはやめることにしました.

Ver.0.183b

  • Ver.0.182bで「フォーカスと選択項目の関係」を仕様変更しましたが,また他コマンドと不整合が起こるケースが見つかりました.この調子だと未だ見つけていない不整合がありそうな気がします.そこで,v0.181b当時の仕様に戻して,様子を伺うことにしました.
  • ただし,例外的に「ブックマーク同期」と「更新チェック」ボタンは選択項目の状態に関係なく,常に有効にしておく仕様に変更しました.
  • IE11のJavaScriptではdocument.selectionが使えなくなりました.その結果,IE11のコンテキストメニューからページ登録等を行うスクリプトが実行できません.そこで,IE11でも下位バージョンでも動作するようにスクリプトコードを修正しました.
  • Podcast記事で動作するMP3プレーヤを"http://flash-mp3-player.net/"のものに差し替えました.
  • 初期設定にSleipnir 5のブックマークと実行ファイルの定義を追加しました.スクラップブックマークの更新チェックは,リリースノートの書式がまだ固まってないみたいなので,もう少しバージョンを重ねてから追加することにします.
  • SQLiteライブラリー「System.Data.SQLite」を開発最新版(1.0.89.0)にリプレースしました.

Ver.0.182b2

  • 前回の選択項目に関する仕様変更のせいで,更新チェック時間設定ができなくなってしまったバグを修正しました

Ver.0.182b

  • コマンドに送るアイテムについて,フォーカスがあるコントロールの選択項目を対象とするか,フォーカスがどこにあっても必ずアイテムリストの選択項目を対象とするか,選択できるオプションを設けました.
  • エディタパネルの検索強調をリセットするのに,Azuki 1.7.8から導入された方法を用いることにしました.一方,ソースウィンドウのマーカーはプリミティブな表示アルゴリズムなので,従来通り「山田の方法」でリセットしています.
  • ブラウザにURLを送るとき,"%"が過剰にURLエンコードされるバグを修正しました.
  • v0.177で採用したウェブサイトのサムネイル画像表示サービス「HeartRails Capture」より,以前使っていた「Mozshot」の方が最近調子が良いので,こっそり元に戻しました.

Ver.0.181b

  • エディタエンジン「Azuki」を最新版(v1.7.8)にリプレースしました.

Ver.0.180b

  • SQLiteライブラリー「System.Data.SQLite」を開発最新版(1.0.88.0)にリプレースしました.

これより以前の改造履歴