SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

かまぷとゆうこのデベロッパーズ☆ラジオ

AWKブーム第1世代は「アイドル辞書」で学んだ――日本GNU AWKユーザー会 斉藤さん

かまぷとゆうこのデベロッパーズ☆ラジオ #1 日本GNU AWKユーザー会 斉藤博文さん


  • X ポスト
  • このエントリーをはてなブックマークに追加

「AWK != Perl」ってあえて言っちゃう

ゆうこ AWKを知ったのはどういったきっかけなんでしょうか。

斉藤 AWKはですね、もともと私、大学の学生寮に住んでて、そこでいろんな大学の学生さんがいたんですが、東大の文学部の友人がパソコン好きで、パソコン雑誌を見てたんですね。

かまぷ その当時のパソコンて、ちなみにどんなパソコンなんですか。

斉藤 PC-9801の、何ですかね……まだ16bitです。32bitではない。それで、彼がそのパソコン雑誌の中に「面白い記事があるんだけど、知ってる?」って言って飛んできて、多分『月刊アスキー』だと思うんですけど、それを見ると、ダジャレ生成機みたいなものを作ってました。例えば「ふとんがふっとんだ」みたいに、「ふとん」と「ふっとん」という非常に似ている言葉同士を集めて、それで何か面白い言葉作れませんかっていうの。そして、文字と文字とが何文字離れているかという「文字間距離」などのアルゴリズムを紹介していた記事があって。当時は全然、文字間距離だとかAWKもわかんないし、ただなんかこの「AWK」という言語ってすごく面白いことができるんだと。

 当時はWebも無かったので、今までプログラムっていうと、数字を計算したり、グラフを描いたりだとか、そういう世界だったのが、ああなんか、文系の世界に降りてきた言語かなと思って、非常に衝撃を受けましたね。

かまぷ AWKに出会う前は、どんなプログラムをやってたんですか。

斉藤 実は昔、プログラミング言語マニアで。いろんなものをかじってます。FortranだとかForthだとかCOBOLだとか、CだとかBASICだとか、もうほとんど。

かまぷ 手続き型。

斉藤 いろんなものをずっと触ってました。とはいえ、実際に使えるものってBASICとC言語ぐらいしかないのですが、C言語って、今とはちょっと別の意味でしんどくて。当時はパソコン自身がフロッピーディスクで動いてたんですよね。で、フロッピーディスクで動くとなると、Cコンパイラが入るか入らないか。

ゆうこ ああ、容量が。

斉藤 そういう世界で頑張るのが結構しんどい。そうすると、基本はBASIC使ってました。で、BASICやCって、面倒くさいところがあるんですよね。何かと言うと、普通に我々ってマウスダブルクリックでファイルを開くっていう、すごく単純な作業でファイルを見ることができるじゃないですか。ところがBASICやCは、ファイルを開くために手続きがいるんですよね。例えばPerlとかでも、とってもまじめに書くといろいろファイルオープンして、ファイルハンドラを指定して、ファイルをクローズするみたいな手続きがいるんですけど。

 AWKは実はそれが全くなかった。波カッコでくくってあげると、自動的に引数に与えたファイルを自動的に開いてくれる。今まですごく面倒くさかった作業が、「なんでAWK使うとこんなに便利なんだ!」と衝撃受けましたね。

ゆうこ なるほどですね。

かまぷ 人に歴史あり、コンピュータに歴史ありですね。

斉藤 とりあえず、自分に合った言語を探してたんですよね。C言語がすごいとか、これからの主流になるとかってのは分かってたんですよ。ただやっぱり、当時はポインタを始めよく分からなかったので、もっと簡単な言語ってないのかなって、探してた。探してて、先ほど言ったFortranやCOBOL、当時は人工知能に向いてるって言われてたPascalやForthだとか、そういう言語も触りつつ、自分に合ってるのは何だろうなって探していました。

かまぷ で、もうAWKに出会ったらAWK一番。

斉藤 AWK一番ですね。

かまぷ 前田敦子みたいな感じ。

斉藤 不思議なぐらいで。なんかAWKユーザーってそういう人、結構多いんですよ。もうAWK一番だと。で、AWKとPerlってよく比較されるじゃないですか。よく似たプログラミング言語ですよと。できた年も、実は1年くらいしか違わないんですよ。違わないんだけど、AWKユーザーはPerlがどうも嫌いで、他の言語を敵視まではいかないですけど、「俺たちは違うんだ」みたいな感じで。

 よくプログラムで否定する時ってあるじゃないですか。否定ってうのは、プログラムの条件文で、例えば無限ループを作りなさいみたいなのでもいいんですけど、絶対に条件を抜けないでほしい、というものを作る時に、わざと「AWK != Perl」って書いたりして。別にそう書かなくてもいいはずなのに。「我々はこいつらと違うんだ」というのでループを回すという。

かまぷ Perlだと勝手に抜けちゃうんですか。

斉藤 いや、「2つが違う間はループを抜けません、2つが一緒になったらこのループ抜けます」みたいな、そういう条件分岐を作るのに、「AWKとPerlは等しくない」という条件で、無限にループを回すという。

かまぷ あえて嫌味を言っちゃうのがAWKユーザー。

斉藤 AWK使いってAWKer(オーカー)っていうんですけど、AWKerのクセですね。たまにそういう人いますね。

かまぷ AWKとPerlの違いってひとことで言うとなんですか?

斉藤 今で言えば、ライブラリですね。やっぱりPerlのCPANの強力さはケタ違いですし。最近だとPythonや、他の言語でもライブラリが豊富にありますけど、AWKだけ実は整備されてないんですよね。

ゆうこ あるにはあるんですか。

斉藤 あるのはあるんですけど。なんでか考えてみたんですけど、結局簡単だから自分で作れちゃう。

ゆうこ なるほど、人に共有するまでもないと。

斉藤 ほとんどの場合、それぐらいできるでしょっていう。GNU AWKのメンテナーもそっけなくて、「何かこういうのない?」って聞いたら、「それって自分でできるよね」っていう回答をする。

ゆうこ 試される感じですね。

次のページ
AWKを勉強するには「アイドル辞書」が役立った

修正履歴

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
かまぷとゆうこのデベロッパーズ☆ラジオ連載記事一覧

もっと読む

この記事の著者

近藤 佑子(編集部)(コンドウ ユウコ)

株式会社翔泳社 CodeZine編集部 編集長、Developers Summit オーガナイザー。1986年岡山県生まれ。京都大学工学部建築学科、東京大学工学系研究科建築学専攻修士課程修了。フリーランスを経て2014年株式会社翔泳社に入社。ソフトウェア開発者向けWebメディア「CodeZine」の編集・企画・運営に携わる。2018年、副編集長に就任。2017年より、ソフトウェア開発者向けカンファレンス「Developers...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

かまた ひろこ(カマタ ヒロコ)

イベントとお酒と人が好き。TechLION/TechGIRL/Linux女子部界隈で活動。社会人ディベートサークル、JBDF役員。2014年よりSoftwareDesignにて軽酔対談『かまぷの部屋』を連載、2016年2月で終了。(特技:傾聴)

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/9478 2016/06/21 19:28

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング