awk から xgawk へ 日 本 GNU AWK ユーザー 会
はじめに 本 日 は 日 本 GNU AWK ユーザー 会 のブースに 来 て いただきありがとうございます 今 年 リリースされたばかりの xgawk 3.1.6 の 機 能 を 主 に 紹 介 させていただいています ご 不 明 な 点 はスタッフまで お 気 軽 にご 質 問 ください また 本 日 の 内 容 は 後 日 以 下 の URL で 公 開 予 定 です http:///osc2008/
awk の 誕 生 ご 存 知 のように awk は 1977 年 に Alfred V. Aho, Peter J. Weinberger そして Brian W. Kernighan の 3 人 によって 作 られ 彼 らの 頭 文 字 を 取 って awk と 名 づけ られました 現 在 オリジナルの awk が 使 われることはなく 1985 年 に 拡 張 された nawk (one true awk) が 主 に 用 いられて います
one true awk から gawk へ 1985 年 にオリジナルの awk から 関 数 定 義 などを 加 え た one true awk がリリースされ そのプログラムの 簡 便 さから 多 くの 人 に 受 け 入 れられることになります 一 方 翌 年 の 1986 年 には GNU 版 である gawk が 開 発 され オープンソースとしての awk として 広 まってい きます gawk には 多 くの GNU 拡 張 がなされ one true awk との 互 換 性 を 保 ちつつ 使 いやすいのが 特 徴 で す
gawk から xgawk へ 近 年 のインターネットやデータベースの 普 及 に 伴 い 従 来 の awk のように 1 行 単 位 で 処 理 できない 構 造 体 テキ ストが 増 えてきました XML のような 構 造 体 に 対 しても awk を 使 いたいという 要 望 は 多 く 2003 年 のクリスマ スに xgawk ( 当 時 xmlgawk) が 誕 生 します
awk の 種 類 awk にはさまざまな 種 類 があります ここでは 代 表 的 な ものを 紹 介 します nawk : Kernighan によってメンテされています mawk : BSD, Debian などでは 標 準 です gawk : 一 般 的 に awk といえば gawk を 指 します xgawk : gawk の 拡 張 版 であり 本 日 のメインです jawk : Java による awk の 実 装 です
xgawk 3.16 の 紹 介
時 間 関 数 拡 張 nawk などには 時 間 関 数 がないため date コマンドと の 組 み 合 わせや srand() の 戻 り 値 を 使 って 計 算 したりす る 必 要 がありましたが gawk 以 降 拡 張 され systime() 関 数 や strftime() 関 数 も 加 わりました xgawk では sleep() 関 数 が 加 わったことで さらにア プリケーションの 利 用 の 範 囲 が 増 えていきます
XML xgawk の 最 初 の 拡 張 である XML パースは libexpat を 用 いています gawk で 使 用 できる TCP / UDP の 通 信 を 使 って Web 上 の RSS 情 報 を 取 り 寄 せ 処 理 することも 可 能 になっています 同 様 に Twitter のクライアントのよ うなものも 作 ることができます ただし well formatted である XML に 限 られていま すので 使 用 する 際 には 注 意 が 必 要 です
MPFR MPFR により 任 意 精 度 の 計 算 も 可 能 になりました 従 来 の 倍 精 度 浮 動 小 数 点 演 算 では 困 難 であった 精 度 の 必 要 とさ れる 計 算 も 可 能 になっています
PostgreSQL xgawk の 拡 張 として libpq を 用 いて PostgreSQL へ アクセスすることができます これにより awk で 扱 えるデータベースは CSV, TSV のような 行 単 位 のテキストだけでなく PostgreSQL にも アクセスして 処 理 が 可 能 になっています
GD GD の 拡 張 機 能 が 加 わりました 今 までグラフィックス を 扱 えなかった awk にとって 大 きな 進 歩 ですが 使 いど ころが 悩 ましい 拡 張 です
xgawk は 使 われているか? xgawk はいくつかの Linux ディストリビューションで 使 われているようです また 日 本 では Anarchy Golf で 使 われていますが こ れらの 拡 張 は 行 なわれていないようです の Web ページは 最 新 版 xgawk で 動 作 させています http:///osc2008/
求 められる 拡 張 xgawk で 多 くの 拡 張 が 行 なわれてきましたが 我 々 日 本 人 にとって 重 要 な 拡 張 がなされていません それは 文 字 コード 変 換 です xgawk には XML の 場 合 のみ 文 字 コー ド 変 換 が 行 なわれますが 通 常 処 理 に 反 映 されていませ ん これは 今 後 の 課 題 と 言 えるでしょう また gawk 3.1.5 からバイト 単 位 の 処 理 から 文 字 単 位 の 処 理 になり 文 字 のバイト 数 が 取 得 できないため 日 本 語 で 書 かれた 文 書 の 整 形 などの 処 理 が 難 しくなってしまい ました これも 今 後 の 課 題 といえます
gawk の 日 本 語 化 以 前 jgawk, gawk + multi byte extension といった 日 本 語 を awk で 扱 うための 拡 張 がされていた 時 期 があり ました これらは 日 本 人 には 非 常 に 受 け 入 れやすいもので あり awk ブームの 火 付 け 役 でもあります しかし オープンソースでは 日 本 独 自 のパッチを 当 てる のではなく upstream に 説 明 して 修 正 してもらうのが 本 道 であると 考 えています 中 には gawk そのものではな く glibc に 依 存 するようなものもありますが 対 応 して いきたいところです
gawk の 日 本 語 化 以 前 jgawk, gawk + multi byte extension といった 日 本 語 を awk で 扱 うための 拡 張 がされていた 時 期 があり ました これらは 日 本 人 には 非 常 に 受 け 入 れやすいもので あり awk ブームの 火 付 け 役 でもあります しかし オープンソースでは 日 本 独 自 のパッチを 当 てる のではなく upstream に 説 明 して 修 正 してもらうのが 本 道 であると 考 えています 中 には gawk そのものではな く glibc に 依 存 するようなものもありますが 対 応 して いきたいところです
awk のコミュニティ
コミュニティ 日 本 語 を 扱 う 上 での 問 題 や 日 本 で 使 う 人 の 手 助 けとなる ように 日 本 GNU AWK ユーザー 会 を 2004 年 に 立 ち 上 げました 未 だに 組 織 としては 未 熟 ですが gawk や xgawk に 対 して 何 件 かバグ 報 告 や 改 善 要 望 を 出 したり 翻 訳 活 動 を 行 なっています イベントとして 毎 年 の LL Conference には 協 賛 また は 参 加 しています ご 興 味 があれば ぜひ 参 加 してみてください
翻 訳 についての 注 意 gawk 3.1.6 から GPL Ver. 3 になりましたが po ファイルに 反 映 されていないため 日 本 語 ロケールだと GPL Ver. 2 の 表 示 になってしまいます ご 注 意 くださ い こうした 翻 訳 活 動 はコミュニティとして 進 めていきま す
さいごに これから awk はどうなっていくのでしょうか? マス コットとして 用 いられている great auk (オオウミガラ ス) は 地 面 に 落 ちている 石 を 拾 うよりも 簡 単 に 捕 獲 するこ とができたため 絶 滅 してしまいましたが awk は gawk / xgawk と 進 化 していきます awk は 常 に プログラムの 良 きツールとして プログラ ムそのものとして 利 用 していただけるような awk に 進 化 していくことと 願 っています