おちゅ〜しゃ

このページは、GTK+などを用いて作られ、UNIX系OS上で動く(と期待される)、2ch用ブラウザ「おちゅ〜しゃ」のページです。

おちゅ〜しゃはフリーソフトウェアです。ライセンスには2項目のBSDライセンス(現行のFreeBSDと同じ)を選びました。

スクリーンショット(縮小版)


はじめに

おちゅ〜しゃは2chへのアクセスを普通のWebブラウザよりも少しだけ楽にするようなツールです。GTK+などを使っています。Linux板の「おいお前ら! GTK+使ってLinux版かちゅーしゃ作れや」スレ(現在DAT落ち)で当初盛り上がっていた(?)、x2chやg2chの開発がどうやら止ってしまったので自分で作り始めました。

おちゅ〜しゃという名前はかちゅ〜しゃに似た言葉として考えたものですが、私は日頃Windowsを使ってないので、もちろん、本物のかちゅ〜しゃを使ったことがありません。全く似ていないと思うので、混乱したらスマン。

おちゅ〜しゃに関する最新の動向はhttp://ochusha.sourceforge.jp/http://sourceforge.jp/projects/ochusha/などで確認できます。

ご意見ご要望などは、Linux板の「おいお前ら! おちゅ〜しゃはどうですか? Ver.5」スレでも承っております。というか遠慮せずに書け。対応したくなかったらスルーするけどね。


NEWS

バージョン0.6ですREADMEはこちら)。

前回のリリースから3年以上経ち、既に他のアプリに乗り換えた方も多いと思いますが、C++で新規に書き直したバージョン0.6をリリースします。

前バージョンの全ての機能が完全に再現されている訳ではありませんが、前バージョンでは現在の2ちゃんねるへの書き込みができなくなっているなどの致命的な欠陥がありますし、これ以上のリリースの先伸ばしは、出さない理由を探しているような気がしてくるので現段階でリリースしてしまい、バージョン0.5.8.2を完全に過去のものとすることを目的としています。3年前の遺物がいまだにダウンロードされていることに驚愕しますた。

主な変更点は以下のようになります。前バージョンのことはかなり忘れてしまっているので抜けているものもあるでしょう。

注意

おちゅ〜しゃバージョン0.6には、前回のリリースであるバージョン0.5.8.2とは一部非互換な部分があり、バージョン0.6以降のおちゅ〜しゃから昔のバージョンに戻すことは想定されていません。

おちゅ〜しゃバージョン0.6には、以前のバージョンが提供していた全ての機能が実装されているわけではありません。具体的には、作者が認識している範囲で以下の3点においてバージョン0.6は後退しています。


tarballにRPMのspecファイルが入っているので、「rpmbuild -ta ochusha-0.6.tar.bz2」ってな感じでrpmが作れるつもり。ただし、Fedora 10上でのみ確認しているので、他の環境では使えないかもしれません。問題が起こってbuildできない環境に出くわして、かつ、対処方法をご存じでしたら教えてください。修正します。

Gentooユーザには「emerge ochusha」でメンテナさんが安定版と思っているやつが、「ACCEPT_KEYWORDS="~x86" emerge ochusha」でメンテナさんが知っている最新版がインストールされるそうです。

Vine Linuxではapt-getでインストールできるそうです。

GooglePlamo Linux用パッケージをはけーんしたので勝手にリンク。

おちゅ〜しゃ関連スレのHTML化された過去ログ用意してくれた親切な人がいます


熱烈歓迎

コードを書く気満々の方はもちろん大歓迎ですが、お使いの環境向けにパッケージを作るというようなお手伝いをしてくださる方、絶賛募集中です。作者には期待できません。


お願い

どうも作者の使いっぷりでは自分で新しくバグを埋め込んだ時くらいにしか、即死には出会えませんので、特に即死バグに遭遇したときには「こんなタイミングで落ちた」とか「コンソールにこんな警告メッセージが出ていた」などとお知らせいただけると幸いです。それと特定の板やスレ限定で何かおかしな事が起こるような場合にはどの板やスレなのかもお願いします。

もちろんデバッガでバックトレースなどが得られればそれに越したことはないのですが、頻繁に落ちるのなら、「どんなことをやっていたら落ちた」という曖昧な条件でも手元で再現できるのではないかと期待しています。もちろんパッチも受け付けています

落ちるバグが残っている状態というのが作者的に最も気分が悪いので、よろしくお願いします。

バグ報告などは、主にLinux板の「おいお前ら! おちゅ〜しゃはどうですか? Ver.5」スレで承っております。

バグ報告や機能追加・修正などのご要望はSourceForge.jpのシステムメーリングリストでも受け付けていますが、実質機能していないので、2ちゃんねるのスレに書き捨てる方が気楽な上に手堅いです。


目標

おちゅ〜しゃは次のような2chブラウザを目指しています。


できること

最新版のバージョン0.6までに次のようなことが実現できています。


メーリングリスト

SourceForge.jpのシステムを使ってメーリングリストを用意しました。予想されたことですが、ほぼ機能していません。存在しないものと思っておく方が無難です。

正直「2ちゃんねるのような匿名掲示板」とMLとでは最初から方向性が違っているので、2ちゃんねるブラウザ関連のMLが機能しないのは当然でしょう。

ochusha-users
ユーザ向けメーリングリストです。
ochusha-developers
開発者向けメーリングリストです。
ochusha-cvs
CVSのコミットログが流れます。

BUGs

へんてこな動作やごみが残るといったバグはまだまだ残っています。以下は作者が認識しているバグのリストで、認識しているものは可能な限り直していきます。

死にはしないバグ


TODO

最初のGTK+-1.2/Gecko版の実装に着手して以来、早5年になるわけですが、こればかりやっているわけではないのでまだ完成していません。

更に、作者がウェブブラウザとおちゅ〜しゃ以外で2chを見たことがない(誇大表現)ので、いわゆる2chブラウザなら普通持っているような機能であっても実装しようと思いついていないことが普通にあります。「2chブラウザならこれができなきゃダメだろ」という要望なども随時受け付けています。

機能追加の要望などはSourceForgeのFeature Requestで管理するのは面倒だし、誰も書き込まないようなので、適当に管理してます。ご要望はLinux板のスレに書き捨てるのがお勧め。そんな機能イラネとかのレスがついたとしても、おもしろそうなものは考慮してます。

バージョン0.6のシリーズでの現段階のTODOリストは以下のようになります。このページでの記述は余り更新頻度が高くないので、最新の情勢を知りたい場合にはCVSツリーに含まれているTODOファイルを参照してください。

TreeViewにおけるPaste機能の実装(一部完了後放置中)
既にDnDの実装があるので、同じことなんだが面倒くさ。DnDの場合と同様に、同ツリーからのPasteだけを取り敢えず実装した。というか、DnDも中途半端に実装したままだったことに今頃気付いても、やる気が起きないので、残りは0.6リリース後ということで……。
DAT落ちスレへの対応
バージョン0.5以前のおちゅ〜しゃにはhtml化済の過去スレを読む機能が実装されていたが、その時は●対応のついでっぽい気分で実装したので●に対応していない現在では使用頻度が低すぎることも相まって、優先順位が最低に近い。
●によるDAT落ちスレの読み込み
旧バージョンでは対応していたが、事実上実装実験のために契約した●の期限が切れた後、やはり必要性を感じていない●を再び買うのは憚られる。――のべ1時間も使っていない希ガス。
掲示板外リンククリック時の挙動のカスタマイズ
コマンドラインテンプレートの加工をScheme手続きに外注すべきかもしれない。――URLによってデフォルトで呼び出されるアプリを変更可能とすると嬉しい場合があるかもしれない。
メニューバー右端のネットワークアクセス状況アイコンの挙動の修正
むしろThreadlistTabsやThreadTabsなGtkActionのためのGtkComboBoxに現在選択されているタブのアイコンと同じものが表示できたら良くね?
スレタイの短縮表示
0.6リリース前に実装しようと思っていたが、前項目の「GtkComboBox」にアイコン表示関係でThreadlistTabsやThreadTabs関連のGtkComboBox周辺に手を入れる予定なので、それまで先送り。
スレ一覧の一括表示モード
構築が終わるまでGtkTreeModelをGtkTreeView(OchushaTreeSelectorView)から外しておくモードを設定可能にすべきか? ――ソートを設定してるとスレ一覧の表示がちらついたりカーソルのある行が表示されなかったりするのは、やはりストレスがたまる。→アクティブフォルダや既得スレ一覧のようなパターンでは長時間掛かる可能性があるので微妙。
履歴表示関連
現状の貯めるだけ貯めて放置というのはどうか。
板一覧ツールバーとブックマークツールバー
OchushaTreeMenuHelperのツールバー版のようなものを実装すればおk。
板一覧やブックマークの編集
作りかけのまま放置されている件……。
1ペインモード
完全に1ペイン+サイドバーというウェブブラウザ風GUIも有りだろう。また、スレ一覧もしくはスレのいずれかについて、キーボードフォーカスを持っている、もしくは、最後にキーボードフォーカスを持っていた方を優先的に表示する(他方はタブラベル部分を残す位に縮めて表示する)偽1ペインモードというのも考え中。
ヘッドライン系のナイスな表示
1ペインもしくは偽1ペインモードを実装したら、ヘッドライン系の表示を改良したい。ヘッドライン系の板は通常の板と同じようにスレ一覧が開けてもそれぞれのスレには>>1の分しかレスがない。こんなものにアクセスするのは余程の変わり者だけ。→スレっぽく表示する場合、見た目がスレっぽくても内容的にはスレ一覧相当なのでスレペインには表示したくないが、1ペイン的なモードが無いままにスレ一覧ペインに表示しても使い物にならない可能性が高い。
書き込み関連
SETTING.TXTを読んで、チェックできるエラーは自前でチェックすべき。
Schemeでキーバインディング
GTK+的手法で個別のWidgetにキーバインディングを設定するのでは、実現可能な機能が限定され過ぎる。おちゅ〜しゃ的にインテリジェントな機能を設定するためには、やはりSchemeの出番だろう。key_press_eventのハンドラからScheme手続きを呼び出し、そいつに何かをさせるという流れになるが、Scheme手続きの定義用にGLib/GDK/GTK+関連関数のSchemeバインディングが必要になるし、その他諸々を考えると面倒くさ。
デバッグコンソールの表示内容の選別
メッセージの種別により表示・非表示を調整できるようにしたい。→メッセージの出力側も調整が必要。
サーバ移転時の対策(大体完了)
板一覧の更新、もしくは、スレ一覧を開いた時に判明する場合に関しては対応した。ブックマークなどからスレを直接開いた時に初めて移転を検知する場合というのもあり得るが、その場合、移転先の追尾が面倒なので暫く放置する予定。
キャッシュの管理(完了?)
ため込む一方なのは通常まずいが、画像キャッシュに関してはバージョン0.5の頃から自動化されている。DATファイル関係も手動で消すことは可能になっているが、容量制限とかは面倒なのでやっていない。実装的には画像キャッシュと同じ実装を「一時キャッシュ無し」という設定で使っているので、容量もしくはファイル数による管理にすることは可能だが、これはきっと使いにくいし、「残しておきたいスレを残すためにユーザのアクションが必要」という仕様は2ちゃんねるブラウザの在り方としては正しくない。
DATファイルのインポート機能
GUI/CLI共に必要……かも?
DATファイルを開くCLI
インポート機能も必要だが、既におちゅ〜しゃの管理下にあるDATファイルのパス名から対象のスレを開くCLIが有った方が良さげ。例えば全文検索エンジンのような外部ツールが~/.ochusha以下を漁り、~/.ochusha/cache/以下に収まっているDATファイルがユーザの目的にマッチする何かを含んでいると判断した時に、そのパス名を引数としておちゅ〜しゃを起動するだけでスレが読めれば便利だろう。外部ツールが~/.ochusha/cache/以下の*.datファイルがおちゅ〜しゃの持つキャッシュであることを知っていれば、そのパス名から掲示板のURLを合成することは可能だし、その場合、例えばそれが文字列検索の結果であるなら「マッチした行番号がレス番号に相当する」などといった知識を元に更に便利なUIを作れるし、パス名からスレのURLに変換することにより、現状のおちゅ〜しゃのままで対応できるが、その事実は「DATファイルを開くCLI」の必要性を否定するものではない。
ブックマークにStartupフォルダを追加
起動時に登録しておいたページが自動的に開かれる――というUIは、似たようなことを目的として、セッション復帰時でもないのに、「前回終了時のタブを復元する」よりもより自然な振る舞いという気がするので実装したい。→ユーザ的にはわざわざ登録する方が面倒なのは明らかだが、アプリの振る舞いとして「新しく起動した」アプリが前回終了時の状態になるのは美しくない。
ネットワークプロファイル的なもの
低速回線用と高速回線用で「画像ダウンロード」の有無を変更したり、プロキシを切り替えたりできた方が良いかもしれず。
画像キャッシュの取り扱い再考
保存したやつ、もしくは、無制限を設定して溜め込んだものを一時キャッシュに戻すことも考えたい。

要望実現の優先順位もしくは取捨選択の基準

好き勝手に要望を出して貰うのは望むところではありますが、同じ要望ばかり出てきてもあまり面白くはないし、また、意味不明な要望を出されても困ります><。

XXXというソフトウェアの持っているYYY機能が欲しいと言われたからといって作者が「XXXのYYYとはどんなものか知っている」もしくは「調べてくれる・調べるべきである」と考えるのはご自由ですが、それはきっと裏切られることでしょうし知っていて敢えて裏切る可能性もあります。

仮に作者がYYY機能に興味を持ったとしても、YYYという名前から作者が思いついたYYYという名前の何か別の機能が実装される可能性が限りなく高いし、その方が作者の趣味に合います(キーワードから何かを想像するのは結構楽しい)。

要望はそれなりに抽象的に説明してください。説明の体をなしていない具体的過ぎる要望は、説明の手間を掛けたくないほどにどうでも良い、本当は欲しいなどとは思っていない希望なのだろう――と判断します。

GTK+などの機能を使って簡単に実現でき、かつ、既存の機能と矛盾を起こさないものは比較的実装されやすいです。簡単だから実装するのではありません。簡単に実装できない場合には大抵そこに簡単でない理由があるので、余分な考察が必要になるのです。例えば、GTK+の標準に合わないUIなどは実装しにくいようにGTK+は作られています。

便利・面白そうだと作者の興味を惹いた機能は、多少困難が伴っても実装される可能性が高いです。例えばタブ中クリックでタブを閉じる機能などは見掛けも中身も簡単そうに見えます(実際簡単です)が、GTK+標準のGtkNotebookを使っていては、今のような形では実装できません。技術的な困難だけが実装しない理由になることはないと考えてもらって差し支えありません。もちろん面倒なものは実装に時間が掛かる可能性は高いです。

情熱的な要望は優先順位を再検討させることがあります

アプリケーションレベルで実装するのは無駄が多いかそもそも実装するレイヤーが違うと作者基準で判断される要望は、無理にでも実装したいと作者が特別に思い込んだ場合を除くと実現される見込みは限りなく低くなります。以下のようなものがこのグループに含まれます。

ウィンドウを透け透けにしたい
将来のXの拡張でより効率的かつ素敵に実現されると予想される。既にCompositeマネージャを実装したウィンドウマネージャを用いれば、たいていのアプリは透けるようになっています。ただし、背景だけでなく文字まで透けてしまうのがイマイチだなーと思うので、その内何か細工を考えるかもしれません。
マウスジェスチャーが使いたい
UIとして必須な状況な世の中になればGTK+以下のレイヤーで実装されるに決まっています。きっとGNOME/GTK+な世界ではアクセシビリティのレイヤーに実装されるべきものでしょう。その際、例えばおちゅ〜しゃの特定の機能にキーバインディングが設定できないせいで、何かの機能にマウスジェスチャーを割り当てられない――などということがあれば、対応します。

おちゅ〜しゃ内部に抱え込む必然性がないものを作り込むことはありません。以下のようなものがこのグループに含まれます。

スレをHTML形式で保存したい
dat2htmlとかを使えば良いでしょう。テキストファイルを整形するだけですし、良いものを探せば、javascriptを駆使した便利なスキンなどにも対応していそうな気がします。
過去ログを検索したい
全文検索エンジンみたいなものを新たに実装する気はありません。namazuとか使って作れば良いし、「デスクトップ検索」的なツールも多数あります。検索結果から特定のスレやレスをおちゅ〜しゃで表示させるために必要なのに提供されていない機能などがあれば、それは実装します。
一般のウェブページも見たい
ウェブブラウザを使う方がきっと良いでしょう。作者にはウェブブラウザを書く気はありません。正直に言って、仮に自作だからといっても実績のないウェブブラウザでインターネットショッピングとかしたくありません。

バージョンナンバについて

おちゅ〜しゃのバージョンナンバw.x.y.zは大体次のような作者の気分で付けられています。

w
表メジャーバージョン――現在開発中のものが全て揃い、直すつもりのバグが全て直ったときに変わる。
x
裏メジャーバージョン――何か大きな変化があった時に変わる。過去の変化はGTK+-1.2系からGTK+-2.0に移行した時、更にGTK+-2.2系に移行した時、C++で再設計・再実装した時など。
y
マイナーバージョン――大きめの機能を追加するという意気込みを見せるために変える。これが上がる直前のバージョンがお薦めかも。
z
パッチレベル――バグフィックスおよびちょっとした機能の追加のたびに変わる。基本的には大きい方が強いが、時に間抜けなバージョンも混ざるので注意。過去何度か日替わりリリースもあった。

その他

RedHat9やDebian GNU/Linux(sarge)やGentoo LinuxやVine LinuxやPlamo LinuxやTurbo Linux(10D)でも動いているそうです。

自前でdebパッケージを作ってまでおちゅ〜しゃを使ってくださっているDebian GNU/Linux(sid)ユーザの方が複数(?)いらっしゃいます。有志の方によるdebパッケージも配布されていました。ありがとうございます。

Solarisでは、プログラムそのものの問題ではなくconfigureスクリプトがうまく機能していないかもしれないためにconfigure/make一発とは行かないかもしれません。具体的にはSolarisではリンク時に-lsocket -lnslが指定されていないとsocket関連が利用できないことが原因です。

作者の基本的な開発環境はFedora 10/i386であり、それ以外にはFedora 10/x86_64とFreeBSD-CURRENT/amd64を併用しています。おちゅ〜しゃで使用する主要なライブラリ類の各環境でのバージョンは2008/12/19の時点で以下のようになっています。

Fedora 10/i386 (Core Duo T2500/2GB)
GLib-2.18.3, GTK+-2.14.5, libxml2-2.7.2
Fedora 10/x86_64 (Athlon64 3000+/1GB)
GLib-2.18.3, GTK+-2.14.5, libxml2-2.7.2
FreeBSD 8.0-CURRENT/amd64 (Athlon64 3000+/1GB)
更新中

以前有ったDebian GNU/Linux(sid)環境は(数ヵ月ぶりに起動したらUSBマウスが全く動かないという)ハードウェア故障のまま放置されています。


謝辞

おちゅ〜しゃは現在SourceForge.jpのロゴのサービスを使って開発されています。

おちゅ〜しゃは正規表現ライブラリとして鬼車を用いています。


歴史

バージョン0.5.x以前のおちゅ〜しゃはTinySchemeをベースとして改造したSchemeインタプリタを用いていました。

バージョン0.5.x(スクリーンショット)ではGTK+-2.4に対応し、画像キャッシュの取り扱い関連を整理しました。

849氏873氏という二人の神が降臨し、バージョン0.4.4.x(スクリーンショット)では書き込み機能を実装しました。まちBBSなど2ch以外の掲示板への対応も始まりますた。各種設定を行うダイアログなども付きますた。

バージョン0.4.3.x(スクリーンショット)では多重ポップアップなど読むための機能の充実を目指しました。

バージョン0.4.2.xでは実装の見直しを行いました。

バージョン0.4.1.x(スクリーンショット)では読むための機能の充実を目指しました。

バージョン0.3.6.x(スクリーンショット(デフォルト横3つ並び))で、スレ一覧のフィルタ機能を実装しました。

バージョン0.3.5.x(スクリーンショット)で、非同期通信の機能を実装しました。

バージョン0.3.4.x(スクリーンショット)で、レスのポップアップ機能を実装しました。

バージョン0.3.3.x(スクリーンショット)で、突然死問題を解決してスレの更新機能を実装しました。

バージョン0.3.1.x(スクリーンショット)で、GTK+-2.2.xに対応しました。

バージョン0.2.1(スクリーンショット)で、スレ一覧の更新をようやく実装しますた。ついでにボタンも付けてみますた。

バージョン0.2.0はGTK+-2を使い、Geckoを使わない最初のバージョンですた。

バージョン0.1.1(スクリーンショット)がGTK+-1.2 + Gecko版おちゅ〜しゃ(仮)の最終版です。


$Date: 2008/12/23 18:04:29 $