[1] [DFN[[CODE(URI)[irc:]] URI scheme]] は、 [[IRC]] の[[プロトコル]]を想定した URI scheme です。 [51] 非常によく使われていますが、 [[IANA]] に正式に登録されてはいません。以前 [[I-D]] が出ていましたが、 [[RFC]] にはなりませんでした。 [[W3C]] の規格でこの scheme を定義しているものもあったりします。 * authority [31] [[authority]] は[[ドメイン名]]などによる指定の他、 [CODE(URI)[[[.]]]] を含まないことで[[ネットワーク名]]を指定することができます [SRC[>>18, >>15]]。 * 歴史 ** W3C PICS (1996-1997) [3] [PICS] [CITE[REC-PICS-services-961031]] は [CODE(URI)@en[[[irc:]]]] URI scheme を定義しています。 ;; なぜ [[PICS]] の仕様書が [CODE(URI)@en[[[irc:]]]] を定義しているのか謎ですが・・・。 [2] [CITE[PICSRules Specification]] で定義されている [[URIパターン]]は、 [CODE(URI)@en[[[irc:]]]] scheme の URI と一致させるための構文も含んでいます。 ([[URI scheme]] 自体の定義ではありません。) [4] [[PICS]] によると、[[IRC]] の[[茶室]]を表す URI の構文は [CODE(ABNF)['irc://' host '/' alphanumpm]] です。 ここで、 [CODE(ABNF)[host]] はインターネットのホスト名です。 [CODE(ABNF)[alphanumpm]] は [CODE(ABNF)[[[ALPHA]] / [[DIGIT]] / "+" / "-"]] で、意味は書かれていません。 ** draft-mirashi-url-irc (1996/8) [53] [CITE@en[draft-mirashi-url-irc-01 - "irc: URL scheme"]] [55] [CODE(URI)@en[[[irc:]]]] [[URL]] を規定しています。 [54] [[W3C]] の仕様は [[IRC]] の仕様に反しているため改めて定義すると述べられています。 [56] 構文は次のように説明されています。 > [PRE(URI code)[ irc:[ //[ [:] ]/[] [,needpass] ] ]PRE] ** ChatZilla [15] [CITE[irc: urls in Mozilla]] ([[Robert Ginda]] 著) > [PRE(URI code)[ irc:[[(/[][]|)]] ]PRE] [45] [CODE(URI)@en[[[irc:]]]] を定義しています。 ** draft-butcher-irc-url (2003) - [18] [CITE@en[draft-butcher-irc-url-04 - Uniform Resource Locator Schemes for Internet Relay Chat Entities]] [13] 構文は >>7-9 のいずれをも認め、更に拡張されています。 [CODE(URI)[#]]も構文の一部として使われているのが特徴 (というか[[RFC 2396]]違反) ですw [23] [CODE(URI)@en[[[irc:]]]] と [CODE(URI)@en[[[ircs:]]]] を定義しています。 [14] [CITE[Irc-url Info Page]] [48] >>14 は当時の[[メーリング・リスト]]ですが、既に [CODE(HTTP)@en[[['''404''']]]] になってしまっています。 [TIME[2011-06-11T13:28:39.200Z]] * 実装 [44] [CITE@en[mIRC: Chat Links]] ([[mIRC Co. Ltd.]] 著, [TIME[2011-05-18 02:15:03 +09:00]] 版) [5] [CITE@ja[talking IRCStep]] ([TIME[2011-06-11 22:28:53 +09:00]] 版) (2000年) [12] >>5 で示されている構文: > irc://IRCNetwork名/{チャネル名|ニックネーム} ニックネームが使えるというのはプライベート・メッセージのことを指しているようです。 [49] また、 [[ネットワーク名]]が使えるのも独自と書かれています。 >>15 や >>18 でも行われていますが、別個に採用されていたようです。この当時に他に[[ネットワーク名]]を使える実装があったのかは不明です。 [50] 同名の[[チャンネル]]をいったん [[authority]] を無視して探し、なければ [[authority]] を考慮して接続するという処理モデルも示されています。 * 例 [32] [SRC[>>15]] [PRE(URI example code)[ irc: ]PRE] [57] [SRC[>>53]] [PRE(URI example code)[ irc:// irc:/// ]PRE] [58] [SRC[>>53]] [PRE(URI example code)[ irc:///,needpass ]PRE] [33] [SRC[>>15]] [PRE(URI example code)[ irc://moznet/ irc://moznet ]PRE] [34] [SRC[>>15]] [PRE(URI example code)[ irc://myserver/,isserver ]PRE] [35] [SRC[>>15]] [PRE(URI example code)[ irc://myserver:6667/ ]PRE] [24] [SRC[>>18]] [PRE(URI example code)[ irc://irc.undernet.org/ ]PRE] [25] [SRC[>>18]] [PRE(URI example code)[ irc://irc.ircnet.net/#worldchat,ischannel irc://irc.ircnet.net/%23worldchat,ischannel irc://irc.ircnet.net/#worldchat irc://irc.ircnet.net:6667/%23worldchat ]PRE] いずれも同じ意味です。 [36] [SRC[>>15]] [PRE(URI example code)[ irc://moznet/%26local ]PRE] [37] [SRC[>>15]] [PRE(URI example code)[ irc://somenet/+modeless ]PRE] [47] [SRC[>>44]] [PRE(URI example code)[ irc:///mIRC ]PRE] ;; [CODE[[['''#'''mIRC]]]] [[チャンネル]] [59] [SRC[>>53]] [PRE(URI example code)[ irc:///help ]PRE] ;; [CODE[[['''#help''']]]], [CODE[[[&help]]]], [CODE[[[+help]]]] のいずれになるかは[[鯖]]によることになっています。 [60] [SRC[>>53]] [PRE(URI example code)[ irc:///Mmmm!mandar@*uoknor.edu,isnick ]PRE] [26] [SRC[>>18]] [PRE(URI example code)[ irc://irc.alien.net.au/pickle,isuser ]PRE] [39] [SRC[>>15]] [PRE(URI example code)[ irc://moznet/mozbot,isnick ]PRE] [40] [SRC[>>15]] [PRE(URI example code)[ irc://moznet/mozbot,isnick?msg=uuid ]PRE] [27] [SRC[>>18]] [PRE(URI example code)[ irc://irc.austnet.org/%23foobar?key=bazqux ]PRE] [38] [SRC[>>15]] [PRE(URI example code)[ irc://moznet/chatzilla?msg=I%20am%20reading%20the%20irc%3A%20url%20document ]PRE] [28] [SRC[>>18]] [PRE(URI example code)[ irc://undernet/pickle%25butcher.id.au,isuser ]PRE] [41] [SRC[>>15]] [PRE(URI example code)[ irc://myserver/kilroy,isserver,isnick?msg=are%20you%20here%3F ]PRE] [29] [SRC[>>18]] [PRE(URI example code)[ irc://:pass@irc.efnet.org:194/ ]PRE] [30] [SRC[>>18]] [PRE(URI example code)[ irc://%C4%B0dil:g%C3%BCzel@irc.austnet.org/ ]PRE] [20] [PRE(URI example code)[ irc://#centos@irc.freenode.net ]PRE] ;; [CITE['''['''CentOS-announce''']''' Release for CentOS-5.6 i386 and x86_64]] ([TIME[2011-04-09 08:20:47 +09:00]] 版) [42] [SRC[>>15]] [PRE(URI example code)[ irc://moznet/sekret,needkey ]PRE] [43] [SRC[>>15]] [PRE(URI example code)[ irc://myprivateserver/opers,isserver,needpass,needkey ]PRE] [11] [CODE(URI example)@en[irc:irc.freenode.net#microformats]] [[Tantek]]が使ってた。 ([[名無しさん]] [WEAK[2006-03-04 11:11:30 +00:00]]) [46] [SRC[>>44]] [PRE(URI example code)[ irc://irc.undernet.org:6667/mIRC?secret ]PRE] * メモ [6] [[IRC]] の[[チャンネル]]名は [SAMP[#foo]] のように表します。 [[URI]] による表記は複数の流儀があります。 - [7] [SAMP(URI)[irc://example.net/foo]] : [CODE(char)[#]] を省略。 - [8] [SAMP(URI)[irc://example.net/%23foo]] : [CODE(char)[#]] は[[予約]]されているので[[百分率符号化]]。 - [9] [SAMP(URI)[irc://example.net/#foo]]: [CODE(char)[#]] はそのまま。こうすると [SAMP(URI)[foo]] は[[素片識別子]]扱いになる。 ところで鯖指定無しの - [10] [SAMP(URI)[irc:foo]] のような表記があってもよさそうなものですが、まだ見たことがありません。 ([[名無しさん]] [sage] [WEAK[2005-06-22 03:33:06 +00:00]]) [21] [CITE@en[Come into IRC]] ([TIME[2011-06-11 22:07:20 +09:00]] 版) > [PRE(URI code)[ HTTP://IRC.LC/// ]PRE] [22] >>21 自体は [CODE(URI)@en[[[http:]]]] [[URL]] を使っていますが、 [CITE@en[Use IRC URLs with your browser : irc://]] ([TIME[2011-06-11 22:08:21 +09:00]] 版) ではこれを [CODE(URI)@en[[[irc:]]]] [[URL]] に使う方法が説明されています。 [52] [CITE@en[Internet Relay Chat - Wikipedia, the free encyclopedia]] ([TIME[2011-06-10 22:36:12 +09:00]] 版) > [PRE(URI code)[ irc://[:]/[[?]] ]PRE] >Some implementations allow multiple channels to be specified, separated by commas. [SRC@en[citation needed]]