# keitairc: FAQ

はじめに | ライセンス | 動作環境 | スクリーンショット | インストール | 使い方 | マニュアル | 開発 | セキュリティ | FAQ | 変更履歴

keitairc 単体で irc server に直接つないでも使えるよう 機能を増やしてください
  それはおそらく私はしません。相手がパケット代のかかる携帯端末なので、 機能は最小限にしたいのです。
  また、まともに irc をつかう人なら plum などの pirc は必ず使っていることでしょう。
  また、keitairc をいくら拡張したとしてもフルスペックな irc クライアント 同等には決してならないですし、そういう irc クライアント「だけ」で irc サーバにつないで勝負するのは、コミュニケーションミスを併発する だけなんじゃないかと思います。
Softbank 携帯 (Vodafone live!, J-Phone) で使える?
  工夫すれば使えます。
  Softbank携帯 (Vodafone live!, J-Phone) は通常 http://host:port/ 書式がつかえません。つまり URL で http port を 指定することができません。http は port 80 に対するアクセスしかできません。 かといって、あるホストの port 80 を keitairc のために空けておく、 つまり keitairc 専用にホストやip addressを1つ使うのももったいないでしょう。 apache の mod_proxy を使って、host:port を apache が管理している port 80 で提供されているところの web コンテンツツリーのどっかに位置するように見せかけるといいでしょう。 この場合は web_root オプションも利用してください。 設定サンプルを参考にしてください。
EZweb 端末で使える?
  最近の xhtml 対応端末なら使えます。HDMLのみ対応の端末でも、 最近はEZweb Gatewayが HTMLからHDMLへの変換をしてくれるので大丈夫でしょう。
  keitairc 1.22 以降では、EZ番号での認証にも対応しています。
  EZ番号(旧称subscriber ID)とは、EZweb端末から送信される、端末固有のIDです。 「EZトップメニュー」から「料金・申込・インフォ」→「設定情報」→「EZ番号通知設定」から進んでいくと確認できます。このIDをkeitairc設定ファイルの `au_subscriber_id`に指定します。当然、EZ番号通知設定は「通知する」に 設定していないとなりません。 設定サンプルを参考にしてください。
UNIXホストでkeitaircを起動したのですが、 そこからログアウトするとkeitaircが終了してしまいます

  keitairc 2.x 以降では daemonize オプションが用意されているので、これを使うのが いいでしょう。設定ファイルの中に

      daemonize = 1

  を記述しておくと、keitairc は起動後自動的にバックグラウンドで動作します (daemon化されます)。

  daemonize オプションを使わずにシェル上でバックグラウンド動作をさせるような 場合は、そのシェルの挙動に注意する必要があります。

  Bourne Shell 系列のシェル (sh, bash, zsh, kshなど) を使っている場合、 デフォルトのふるまいでは、

      $ ./keitairc

  としてkeitaircを起動し、そのままlogoutしてしまうと、 keitaircも道連れに終了させられてしまいます。 logout後もkeitaircを動かしつづけるには、 logoutする前にシェルからkeitaircプロセスを切り離しておかなければなりません。

  もっとも汎用性がある方法は、以下のようにnohupコマンドを使ってkeitaircを起動する方法です。 keitaircの出力はすべてnohup.outというファイルに保存されていきます。

      $ nohup ./keitairc
      nohup: appending output to `nohup.out'

  zshや最近のbashでは、disownコマンドで起動した子プロセスを切り離せます。

      $ ./keitairc &
      $ jobs
      [1]  + running    keitairc
      $ disown
      $ jobs
      $

  screenを起動しておき、 その中からkeitaircを起動する手もあります。 くわしくはUNIXの入門書を読んでみてください。

他に使える端末は?
  職業柄あらゆるキャリアのあらゆる端末をテストしますが、 H" LINK端末といったものを除けば、 たいがいのブラウザフォンで動くのではないかと思われます。
  HDML世代のEZweb/EZaccess端末でも、2006年以降ぐらいはEZweb GatewayがHTML コンテンツでもよしなに変換するようになったので、 使えるのではないかとおもいます。
  (「職業柄あらゆるキャリアのあらゆる端末をテスト」していたのは2007年ぐらいまでです＞＜)
  また、keitairc 2.0(の開発版の 2.0b11あたりから)は iPhone や Android などの WebKitブラウザを使った端末にも対応しています(専用の UI が用意されています)
なんかWebKit UI がダサいです。
  ダサいですね(わら
  次のバージョン(2.1? 3.0?)で全面的な書き変えを予定しています。
新規チャネルに join できません
  チャネル一覧にある irc コマンド入力欄に join コマンドを入力することで、新規チャネルに joinできるはずです。
keitaircをつないだplum(とかtiarraとかのpirc)に別のircクライアントもつないだら、 なにもしてないのにいっぱいメッセージが出るようになっちゃったんだけど、なんなの?
  keitairc では ディフォルトで nick 一覧を表示できる機能が on になっていますが、 この機能を on にしていると チャネルごとの nick 一覧のリストを作成するために、各 チャネルに対してユーザが join してくるとそのチャネルに対して who という irc メッセージを投げて、チャネル全員のnick(を含む)情報を取得しようとします。この who への返答にはそのチャネルにいるすべてのユーザの情報が含まれるので、ユーザの 数が多い場合、レスポンスデータ自体が比較的大きくなります。また、人の出入りが 激しいチャネルの場合、ユーザがjoinしてくる度にメッセージが飛び交うことになります。
  一部のクライアントやpircでは このwhoメッセージへのレスポンスを画面に表示する ような動作をとるため、keitaircがwhoを投げる度に、画面がwhoisのレスポンスで埋め 尽くされたり勝手にチャネルが切り替わっちゃったり、非常にウザいことになるようです。
  このような場合は、keitaircと別のクライアントを接続するplumやtiarraなどの pirc を 別々に動作させるようにするか(pirc を複数インスタンス動作させるか)、keitairc の 設定で nick 一覧機能を off にしてください(.keitairc に「follow_nick = 0」と記述 してください)。
plum につないで使っていますが、「自分」の発言が keitairc に出てきません。
  いま keitairc が接続しているのと同じ plum の port に接続している 他の irc クライアント (つまり、さらに別の自分) から発言すると、 POE::Component::IRC (というか POE::Filter::IRC) ではこれを拾えない ようです。
  plum は irc command を小文字 (lower case) で出力しているようで、 これもトラブルの原因のようです。RFC では irc command は upper case で規定されているようなのですが (まだちゃんと調べてない)。 どっちかというと plum が悪いような気がするんですが、 とりあえず回避策としては POE/Filter/IRC.pm で irc command line を parse している部分を case insensitive にして逃げる手があります。 (ほかにも POE/Filter/IRC.pm が regexp match に失敗して へんなイベントを投げてくることがあるので、 ほかの同様の部分もそうしておいたほうがいいような気がする)

      --- /usr/share/perl5/POE/Filter/IRC.pm.org	2003-05-09 18:24:31.000000000 +0900
      +++ /usr/share/perl5/POE/Filter/IRC.pm	2003-05-08 22:03:33.000000000 +0900
      @@ -44,7 +44,7 @@
             push @$events, { name => 'ping', args => [$1] };

             # PRIVMSG and NOTICE
      -    } elsif ($line =~ /^:(¥S+) +(PRIVMSG|NOTICE) +(¥S+) +(.+)$/) {
      +    } elsif ($line =~ /^:(¥S+) +(PRIVMSG|NOTICE) +(¥S+) +(.+)$/i) {
             if ($2 eq 'NOTICE') {
       	push @$events, { name => 'notice',
       			 args => [$1, [split /,/, $3], _decolon( $4 )] };

madoka で、他の人が join してくると channel が増えてしまいます
  keitairc 1.20 以降を使ってください.
なんで Ruby で書かないの
  ちょっとPOEも、おもしろいから。