世界を動かす技術を、日本語で。

Show HN: Halloy – モダンIRCクライアント

概要

  • Halloy はRust製のオープンソースIRCクライアント
  • Iced GUIライブラリ を採用し、マルチプラットフォーム対応
  • FlathubSnap Store からインストール可能
  • 豊富な IRCv3.2機能 とカスタマイズ性
  • GPL-3.0ライセンス で公開、開発は活発

Halloy - IRCクライアント概要

  • Halloy はRustで開発されたオープンソースのIRCクライアント
  • Iced GUIライブラリ を利用し、シンプルかつ高速な操作性を実現
  • 対応OS: Mac、Windows、Linux
  • 最新リリース版のドキュメント:https://halloy.chat
  • ソースビルド用のドキュメント:https://unstable.halloy.chat
  • サポートや質問は libera.chatの#halloyチャンネル で受付

インストール方法

  • 公式ドキュメントに インストール手順 を掲載
  • FlathubSnap Store からの導入に対応
  • クロスプラットフォームな配布体制

主な機能

  • IRCv3.2 の各種機能サポート
    • account-notify、away-notify、batch、cap-notify、chathistory、chghost、echo-message、extended-join、invite-notify、labeled-response、message-tags、Monitor、msgid、multi-prefix、read-marker、sasl-3.1、server-time、setname
  • 標準返信、userhost-in-names、UTF8ONLY、WHOX、SASL対応
  • DCC Send 機能
  • キーボードショートカット による効率操作
  • ニックネーム・コマンド・チャンネルの自動補完
  • 通知機能 によるリアルタイム情報把握
  • 複数サーバ・チャンネル同時接続
  • クイック操作のための コマンドバー
  • カスタムテーマ による外観変更
  • ポータブルモード 対応

開発の背景とライセンス

  • GPL-3.0ライセンス で公開
  • 詳細は LICENSEファイル を参照
  • 開発や提案、バグ報告は GitHubリポジトリのIssue から受付

開発者からのメッセージ

  • 2022年 から開発を開始
    • 20年以上関わってきたコミュニティへの恩返しとして着手
  • Rust製モダンIRCクライアント を目指し、3年でコア貢献者や新たな仲間が増加
  • libera.chatの#halloyチャンネル には200人以上が常駐
  • このクライアントが長く愛され、IRC文化が存続することを願う開発者の思い

Hackerたちの意見

これを使ってみようとしたんだけど、サーバーがいくつもあってチャンネルもたくさんあるから、タブがないとちょっと扱いづらいね。それに、トレイに最小化できないのも面倒だし、常に「開いておく」必要があるのがちょっとイライラする。今はQuasselを使い続けるつもり。だけど、本当に素晴らしい作品だよ、誇りに思っていいと思う!

タブについては同意。1~2チャンネル以上を見たい時、どうすればいいのか分からない。

もうちょっとタブっぽく動かしたいなら、https://halloy.chat/configuration/actions.html#buffer を「replace-pane」に設定すればいいよ。

まだアクティブなチャンネルはどれ?数ヶ月前に久しぶりにfreenodeに接続したけど、ゴーストタウンみたいだったよ。IRCでプログラミングや技術コミュニティに戻りたいな。

IRCは何年も使ってないけど、12年前のティーンエイジャーだった頃ならこれに大興奮してたな。今まで見た中で一番いいクライアントだよ。ありがとう!

Hexchatを使ってたけど、1年以上前にhalloyに乗り換えたら、もう大満足。開発が順調に進んでるし、使い始めてからたくさんのモダンな機能が追加されたよ。sojuと一緒に使うのが楽しくて、IRCの体験がこんなにスムーズなのは久しぶりだ。

最近、RustベースのデスクトップアプリがGoやJavaに比べて増えてきてる気がする。これらのアプリはほとんどがクロスプラットフォームだね。おそらく、Electronと競争しようとしてるんだろう。TauriはRustで動くし。誰かRustの何が特別なのか教えてくれない?デスクトップアプリがPythonベースで人気がないのはどうしてなんだろう?それに、TypeScriptやGoでのターミナルベースのアプリもたくさん見かけるね。

macOSアプリのバックグラウンドがあるんだけど、その頃はObjective-Cだった。ネイティブアプリが大好きなんだ。Halloyを始めることにしたとき、複数のプラットフォーム向けのネイティブアプリを作るのが目標だったから、Rustは完璧だと思った。

誰かRustの何が特別なのか教えてくれない?この話題は時々出てくる気がする ;) 個人的には、PythonのプログラムをたくさんRustに置き換えてるんだ。書くのがそんなに難しくないし、Pythonや他の非Rust言語を書くときにはsum typesが恋しい。もしRustのプログラムがすごく難しいなら、それはPythonではできないか、価値がない最適化を探ってるからだよ。ネイティブでコンパイルされたアプリケーションは私にとって大きなプラス。Rustでデスクトップアプリをリリースする予定だけど、まだその段階には達してない。

現在、Rustでデスクトップアプリを作成中だよ。音楽用のjellyfinクライアントなんだ。Rustを書くのが楽しいから、これが自信につながるのが大きいね。新しいパパだから、作業する時間が少ないことが多いんだ。Rustなら小さな機能を実装し始められるし、コンパイルが通れば大体動くって確信できる。Pythonだと、ランタイムエラーの海に溺れて、ちゃんとできてるか不安になることが多いから。クロスプラットフォームもいい理由だし、UIライブラリのサポートも良い。icedみたいなアプリもあるし、GTKのバインディングも decentだよ。ランタイムが不要だから、配布やパッケージングがPythonよりずっと簡単なんだ。デスクトップアプリを書くには素晴らしい言語だよ。

Pythonで作られたデスクトップアプリは結構あるけど、例えばTkinterを使うと、Linuxでは見た目がひどいし、Gtkを選ぶとWindowsでPython版を手動でminGWでビルドするか、Cygwinを使って配布しなきゃいけないんだよね。

Rustは単一のバイナリを生成するんだ。アプリを出荷する時、開発者はこれを評価するよね。Pythonベースのアプリだと、ユーザーにPythonをインストールしてもらわないといけなくて、さらにいくつかのPythonファイルを非PythonのUIライブラリと連携させて送らなきゃならない。だから、UIライブラリも依存関係として送る必要があるかも。まあ、Rustで作っちゃって、.unwrap()が何をするのか学ぶのもいいけどね。

C、C++、C#以外に良いGUIフレームワークを持つ言語はないよ。他のバインディングは大体クソだね。

レイテンシー。GoやJavaは最適化すれば問題なく動くけど、Pythonはまだまだだね。

ただ動くし、ほとんど何でもできるし、Cとの相性もバッチリ。

速い。明示的。安全。クロスプラットフォーム。速いって言ったっけ?

ここでの他の回答が単一バイナリを主な利点として挙げてるけど、リストにある中ではGoが唯一の競合かな。でもGoはGUIのサポートがイマイチなんだ。ほとんどのGUIはC/C++で書かれてて、GoはC/C++との統合があまり得意じゃない(コミュニティの慣習として、できるだけ避けるのが一般的)。個人的にはZigが成熟するにつれて、GUI用の言語として成長すると思うよ。クロスプラットフォームのサポートや単一バイナリ生成、Cとの統合ができて、ツールも良くて、認知負荷がかなり低い言語なんだ。

halloyは素晴らしいアプリで、icedを使ったGUIソフトウェアの構築についてもっと学びたいなら最高の例だよ。https://github.com/iced-rs/iced RustでGUIアプリを作りたいなら、halloyみたいな例やショーケースアプリを見てみることをおすすめするし、もし詰まったら、Discordのリラックスした助け合いコミュニティに聞いてみてね。https://discord.gg/3xZJ65GAhd

面白いことに、Rustの経験がほとんどゼロでClaude Codeを使ってiced-rsアプリを作りたいと思って、githubでiced-rsを使ってる大きなプロジェクトを探してもらったら、Halloyがトップ3に入ってたよ。

それ見てたところだ!Rust用のいいGUIライブラリを探してたけど、気に入ったのは見つからなかったんだ。いくつかは他のGUIスタックへのバインディングだったし。次にRustをいじるときはIcedを試してみようかな。

いいね!試してみるよ。視力が悪い人向けにアクセシビリティオプションはあるの?EFNetは最高だね!

私の理解では、まだサポートされてないみたいだけど、基盤となるGUIフレームワークがこれをサポートしてないからだって。開発者は追加することに興味があるって言ってたよ。

Halloyを試したときに遭遇した小さなイライラを全部は思い出せないけど、「メッセージが大きすぎて送れない」ってのは本当に致命的だった。結局CrossoverとmIRCにしたよ。

これを試してみたいけど、どうやらスクリーンリーダーには対応してないみたい。GUIライブラリがアクセシビリティをサポートしてないからだと思う。IcedのGitHubでこの件についてのオープンな問題を見つけたんだけど、2024年には次の次のバージョンでサポートされるって書いてあったし、最後のコメントは今年の2月だったよ(https://github.com/iced-rs/iced/issues/552)。これをブックマークしたから、その取り組みが進んだら試してみたいな!このコメントを残しておくのは、HNにもこういう機能が必要な人がいるってことを知ってもらいたかったから。アクセシビリティの取り組みはいつも感謝されるよ。私たちは確かに存在するからね :)

これ、めっちゃクールだね!Konversationと比べると、すごくサクサク動くし。AppIndicatorのサポートを追加して、メインウィンドウを閉じられるようになったら最高だね。

ありがとう!Halloyは、愛されているMacのIRCクライアントTextualの素晴らしい代替品だね。残念ながら、先月から開発が終わっちゃったけど。これからも人気が出て、パフォーマンスとプライバシーを大事にしながら成長していってほしいな。