[前回記事] [トップ] [次回記事]

2004年7月号掲載 よしだともこのルート訪問記

第93回 コードという世界共通語で、海外の精鋭と腕を競いませんか?
〜ACM国際大学対抗プログラミングコンテスト審判を訪問〜

鴨 浩靖(かも ひろやす)さん
奈良女子大学 理学部 情報科学科 助手
1998年からACM国際大学対抗 プログラミングコンテスト 審判
Jacques Garrigue/雅利賀 惹玖(ガリグ ジャック)さん
京都大学 数理解析研究所 助手
2001年からACM国際大学対抗 プログラミングコンテスト 審判
※所属部署・肩書は取材当時(2004年5月)のものです。

ACM国際大学対抗プログラミングコンテスト(ACM/ICPC)とは
ICPCは、International Collegiate Programming Contestの略称。ACM国際大学対抗プログラミングコンテストは、大学生を対象とした世界的規模のプログラミングコンテスト。1977年に米国アトランタでの開催以来、2004年で29回目を迎える。日本でのアジア地区予選は、1998年以降毎年実施され、2004年は11月21日に愛媛大学で開催。上位入賞チームが世界大会に出場できる。
http://www.acm-japan.org/icpc-j.html

■予選参加から世界大会出場への道

よしだ(以下、Y):鴨さんと雅利賀さんは、ACM注1国際大学対抗プログラミングコンテストの審判をなさっているということで、今回お伺いしました。早速ですが、審判をされている方は国内に何人いらっしゃるのですか?

鴨さん(以下、鴨):我々審判をしているメンバー(審判団)は12名おり、審判長、審判団顧問、審判アドバイザも入れると15名となります。日本ではこのコンテストの歴史が浅いので、まだ、コンテスト出場者出身の審判はいませんね。

Y:コンテストはどのように行われるのですか?

鴨:コンテストへの参加チームは、選手3名とコーチ(教員あるいは大学院生)1名からなります。参加資格は、「学部に入学してから5年以内、ACM/ICPC地区大会出場が4回を超えない、決勝大会出場が2回を超えない」です。高等専門学校の4、5年生や短期大学生も参加資格があります。プログラミングに使用する言語は、2003年はC、C++、Java、Pascalのいずれかでしたが、2004年の国内予選使用言語は、C、C++、Javaのいずれかになりました。

雅利賀さん(以下、雅利賀):スポンサーが推進しているのはJavaですが、勝つチームが使っているのはCとC++ですね。Pascalは、2、3年前までは中国のチームがよく使っていましたが、最近は彼らも使わなくなりました。

鴨:日本の大学のチームが出場する場合、オンラインで実施される国内予選に出ます。それに勝ち残ったチーム注2が、アジア地区予選注3に出場できる資格を得ます。またアジア地区予選は、アジア10か所でほぼ同時期に開催され、上位入賞したチームが世界大会に出場できます。そして、世界大会で世界チャンピオンが決まるという仕組みになっています。
 2003年の大会では、世界75か国から3150チームが地区予選を戦い、そこで勝ち上がった73チームが2004年3月31日にチェコ共和国プラハで行われた「第28回ACM/I
CPC World Finals」に参加しました。そのとき1位になったのは、ロシア連邦のSt. Petersburg University of Information Technology, Mechanics, and Opticsでした。日本から世界大会に参加した、東京工業大学のチームは、27位でした。

Y:今年の大会の日程はどうなっていますか?

鴨:2004年の大会は、オンラインでの予選(以下、オンライン予選)への参加申し込み締め切りが6月25日で、オンライン予選が7月2日の夕方にあります。その後、9月から12月にかけて世界各地で地区予選を行い、日本国内でのアジア地区予選は、愛媛大学で11月21日の実施となっています。そして、2005年4月6日に、中国の上海で世界大会が実施される予定です。

雅利賀:オンラインでの予選という性質上、登録されたコーチを試験監督者に据えてもらって、各チームにそれぞれの大学で試合に挑んでもらいます。正解数の多いチームから上位となり、正解数が同数の場合は、所要時間とペナルティが少ないチームが上位となります。誤答はペナルティとして20分加算されます。

Y:どのように問題が提供されて、予選通過チームが決まるのですか?

鴨:国内予選の競技ルールはWebサイトで説明注4しています。オンライン予選の実施時間がきたら、あるWebページで問題文とサンプルデータが公開されます。3人1チームの選手は、プログラムを書き、手元の計算機で実行させて、プログラムとテストデータの出力結果をメールで指定されたメールアドレスに送ります。
 それをメールで受けた審判システムは、事前に用意しておいた正解と出力結果とをマッチングさせて、正解となったらもう1つのテストデータをメールで送ります。 出場者は、もう1度それを手元の計算機で実行させて、出力結果をメールで送ります。それが正解にならないと、つまり同じプログラムソースを2種類のテストデータで走らせて正解にならないと、その問題が解けたことにはならないというわけです。

雅利賀:だから、テストデータを受け取った後でプログラムの間違いに気が付いて修正した場合は、その後でさらに2種類のテストデータを走らせる必要があります。

Y:ということは、審判はかなり多くのテストデータを用意する必要があるのですね。

鴨:仕組み上は「テストデータが尽きたら失格」もありなんですが、それはまずありません。プログラムが正しく書けていれば、どんなテストデータでもきちんと動くのが普通ですから。テストデータ作りも審判の重要な仕事で、へぼい(失礼!)プログラマが間違えそうなところを鋭く突くようなデータを作らねばなりません。

Y:ソースコードのきれいさは関係なく、何問解けたかの勝負なのですね。

鴨:はい。解けた数が同じなら、短い時間で解けたチームが上位になります。
 オンライン予選はだいたい3時間程度で、その間に5問出題されます注5。解くためにかかった時間の計算方法は、開始時から何分後に解けたかを、1問正解するごとに開始時間からの経過時間に足していきます。このため、簡単な問題から順に解くと良いわけですね。
 たとえば、すごくやさしい問題と普通にやさしい問題があったとしましょう。すごくやさしい問題を10分かかって解き、その後普通にやさしい問題を20分かかって解いた、つまり開始時間からは30分後とすると、そこまでの合計時間は10+30=40分となります。逆の順番に解いたとすると、同じように開始時間からは30分後に2問とも解けていても、合計時間は20+30=50分となります。

Y:なるほど。よりやさしい問題から順番に解くのが有利なんですね。

雅利賀:でも、問題を見ただけで、どっちが簡単かを判断するのは意外と難しいもので……(笑)。

鴨:問題は英語で出題されますから、英語力でも差が付きます。これは、世界大会の問題が英語なので、そこで勝つチームを選ぶ必要があるためです。ただし、今年のオンライン予選では、日本語による出題も含まれることになりました。

■2004年の日本でのアジア地区予選は愛媛大学で

Y:日本でのアジア地区予選(以下、アジア予選)の様子を教えていただけますか?

鴨:今年のアジア予選は、愛媛大学総合情報メディアセンターで、2004年11月20日、21日に実施します。オンライン予選で勝ち残った参加者のアジア予選への旅費は、スポンサー注6から出してもらえます(ただし、コーチの旅費は本人持ち)。
 アジア地区予選は、日本以外にも、韓国や中国、フィリピン、シンガポールなどで、ほぼ同時期に実施されます。国内予選の上位のチームは、ほかの国で実施されるアジア地区予選に派遣されます。自分で旅費を出すなら、アジアのほかの地区予選に行ってもかまいません。

雅利賀:オンライン予選とは違い、アジア予選では選手は1か所に集まります。前日に登録、開会式、オリエンテーション、トライアルユース(試用)、希望チームだけが参加するJavaコンテストがあります。夜にはパーティがありますが、通常、選手は翌日のことで頭がいっぱいですね。2003年の場合、大会当日は、8時から受付が始まり、9時から14時までの5時間をかけてコンテストを行いました。問題数は8問で、1位と2位のチームはそのうちの6問を正解しました(コラム1)。
 コンテスト終了から表彰式までの間に、選手は貸切バスで市内観光などに出かけます。そして夕方に、表彰・懇親会、閉会式が行われます。その翌日にも、希望者向けに遠足が実施されます。
 プログラミング環境は、現地の大会開催大学が用意します。2003年の会津大会では、OSはUNIX(Solaris)でした。以前はWindowsだったのですが、トラブルが多いので、UNIXになりました。今年もおそらくUNIXでしょうけど、言語の環境が動けばよいので、それがSolarisになるかLinuxになるか、そのほかのものになるかは未定で、大きな問題ではありません。
 オンライン予選では、選手はプログラムとテストデータの結果を提出していましたが、アジア予選では、選手はプログラムだけを審判に送ります。審判は別室でそのプログラムをコンパイルして実行させて、テストデータを走らせて、正解かどうかを判断します。アジア予選のテストデータがどのようなものなのかは秘密です。データのサイズだけは公開されていますが。

鴨:審判団には、どのチームがプログラムを提出したのかは知らされません。5時間にわたって実施されたコンテストの残り時間が10分ほどになると、審判団はものすごく忙しくなります。ダメモトでどんどんプログラムが送られてきますから。
 問題が解けたチームのテーブルには、問題ごとに色分けされた風船が届けられます。風船を手にしたスタッフが会場内に入ってくるたびに、正解したチーム以外にはプレッシャーがかかります。余裕のあるチームは、その風船の色を見て、「何番の問題がやさしそうだ」と判断して、その問題に取り組むことも可能です。ただし、我々審判団は別室にいますから、この風船が届けられる様子は見たことがありませんが。
 コーチは会場には入らせてもらえず、別室にいます。ただ、結果はWebページ上で逐次更新されるようになっていますので、通常、コーチはドキドキしながらそれを見つめているそうです。

Y:「3人1チームでPCが1台という環境が、いまの時代ではちょっと時代遅れかな」という意見を聞いたことがあります。3人でやることに意義はあると思いますか?

鴨:使えるキーボードが3人に1つというのは、いまとなってはつらいでしょうけど、3人でやることには意義があります。プログラミングは、本来1人でやるものではなく、うまく仕事を分けることも重要なのです。また、実際、隣に人がいることで、バグを見つけてもらいやすいというメリットもあります。

Y:鴨さんは、以前笑い話として「3人中1人が優秀なプログラマであればいい」と話していませんでしたっけ?

鴨:「1人が優秀なプログラマ、1人は英語が短時間で読める人、残りはお茶くみ」と笑い話でいってましたね。

雅利賀:3人目のお茶くみ役は、数学がちょっとできると都合がいい。問題に数学記号が出ることがあるので。

Y:出場チーム名に、deadbeefやsync^3といった、昔のプログラマしか知らないような用語を使っている点も、以前、鴨さんが「いまの大学生が、若いのになぜこんなのを知っているのだろう……」と笑い話にしておられましたね(コラム2)。

 アジア予選はスポンサーのおかげで、遠足があったり、パーティがあったりと、楽しめそうなイベントになっていますね。出場チームの感想文を読むと、他チームとの交流が楽しかったという方もいて、アジア予選に出場できると、学生時代のいい思い出になりそうですね。
 ただ、大会で使われているであろう総額からすると、2003年の国内予選参加大学注7の数からしても、それほど知名度が高いとはいえないのが残念な気がします。ロボットコンテストほどの派手さがないためにマスコミの取材が少ないのはしかたがないとしても注8
鴨:京都(京都リサーチパーク)で1999年12月3、4日にやった際は、NHK京都が取材に来て、お昼のニュースで15秒間流してくれました。

Y:今回雑誌で宣伝することで、オンライン予選への出場チームが飛躍的に(笑)増えてもかまわないんですか?

雅利賀:はい。オンライン予選は基本的に自動なので、まったく問題はありません。

Y:日本で、このコンテストを盛り上げる最大の方法は何でしょう?

雅利賀:日本のチームに優勝してもらうこと!

Y:世界大会で?

雅利賀:その前に、まずはアジア地区大会で優勝してもらうこと(笑)。日本で実施されているアジア地区大会で、これまで日本チームが優勝したことはなく、最高で2位ですから注9

鴨:2003年には、日本での国内予選2位だった東京工業大学が、別の国でのアジア地区大会(マニラ大会)で優勝し、チェコでの世界大会へ出場できましたけどね(世界大会では27位)。これまでの世界大会での日本チーム最高順位は、東京大学の11位です注10

■世界水準における日本チームの弱さを分析

Y:世界的に見て、どこの地域が強いのですか?

雅利賀:世界的には、東ヨーロッパが強くて、その次が北米です。アジアでは中国が強くて、日本は西ヨーロッパと同程度ですね。
 たとえば、2003年の世界大会の結果は、1位はロシア連邦、2位はスウェーデン、3位はベラルーシ共和国、4位はロシア連邦で、5位にやっと米国が入っています。上位12位までのチームの国名は、ロシア連邦(3チーム)、米国(3チーム)、スウェーデン、ベラルーシ、カナダ、台湾、ポーランド、中国でした。毎年強い東ヨーロッパと北米が、2003年もやはり強かったですね。

Y:日本チームが、もっと上位に食い込んでも不思議ではないと思うのですが、なぜ東ヨーロッパや中国が圧倒的に強いのでしょうか?

雅利賀:その国で1番頭の良い子供が、どの分野に流れるかも重要なファクターになるのです。日本だと医学部に流れますよね。
 フランスでは、頭の良い子供は数学に行くのですが、こういうものには興味を持たないので……。フランスの教育制度では、「きちんと証明ができる子供が賢い」とされています。このコンテストでは、短時間で問題を数多く解くことが重要で、似た問題をどれだけ多く解いたのかで勝負が決まってきます。しかしフランス人は、そのための特訓を絶対やらない。
 一方、東ヨーロッパの国は特訓をやります。また、中国はとくにやります。2年前の金沢大会に来た中国チームは、過去問題や類似問題を800問解いたと話していました。1問平均1時間として、800時間。800時間というと、1日8時間取り組んだとして、100日ですからね。我々だったら1問につき2〜3時間かかりますけど(笑)。

鴨:我々審判団が3人一緒にチームを作っても、優勝した中国のチームには絶対勝てない。

雅利賀:さらに、我々審判団が美しい模範解答を必死に書いたとしても、優勝した中国のチームのほうがもっときれいなプログラムが書ける。

鴨:一般的に、早く書くチームのほうが、プログラムはきれいですね。

雅利賀:日本チームでも、コーチが特訓しているところはやっぱり強いです。

鴨:京都のある私立大学の計算機科学科では、「アドバンストプログラミング」と称して、ひたすらプログラミングコンテストの過去問題を解く授業(半期、1コマ)があります。実は私がその科目の非常勤講師に行っているんですけどね。過去に、この学科のチームが予選を勝ち進めなかったことが、この授業をスタートさせるきっかけになっているそうです。
 コンテストの過去問題は、各地区のものも含めてWebサイトですべて公開されていますから入手しやすく、大学などでのプログラミング教育にも役立つはずです。これらの問題は、すでに1歩目を踏み出しているプログラマが、「2歩目」を踏み出すのにいいと思います。
 「とりあえず動くプログラムが作れました。ただし、本格的なデータを入れると結果が出るのが1年後」というようなへぼいプログラムを書いてしまう初心者が、計算時間のことも考えて、プログラムを書けるようになる訓練にはちょうどいいレベルの問題が出題されていると考えると良いでしょう。

雅利賀:問題のレベルはいろいろで、やさしい問題はけっこう簡単ですから、初心者も挑戦できるはずです。まだ学内に出場チームがないような大学の人にも、ぜひ挑戦していただきたいですね。

■数学者とコンピュータの出会いはLaTeXから

Y:ところで、雅利賀さんは、京都大学(以下、京大)の学生にプログラミングを教えているのですよね?

雅利賀:京大の数理解析研究所に来る学生(学部4回生)には、Scheme、O'Caml(Objective Caml)、C、Javaなどを教えますが、その時点でまだ何もプログラミングの経験のない学生もいます。

Y:数理解析研究所に来るような学生は、すぐにバリバリ書けるようになりますか?

雅利賀:プログラミングは得意不得意がありますからね。一般論としては、数学者がとくにプログラミングが得意というわけではない。

鴨:1970年代は、理学部の全学科の中で最もコンピュータを使っていなかったのが数学科だったという話です。京大に限らず、どこの大学でも。
 私が大学院生の1990年ごろが、やっと数学者にコンピュータが急速に普及していった時期だといえます。LaTeXが、数学者にコンピュータを使わせるようにしたキラーアプリケーションでした。
 私が知っている限り、数学者の間にコンピュータを普及させたアプリケーションの順番は、LaTeX、電子メール、FTPですね。当時、HTTPはまだなかったですから。
 まず、自分で論文を書くためにLaTeXを使って、それをFAXや郵便ではなくて電子メールで送るようになりました。しかし、これも大勢の送信相手に個別に電子メールでデータを送っていては大変ということで、FTPサイトに置き始めたという順番です。そして、それらすべてを実現する環境としてEmacsが存在しました。
 ちょうど、1990年に京都でICM(世界数学者会議)が開催されて、切手まで発行された大きな大会だったのですが、京都近辺にはその準備に走り回っている人がけっこういたんですね。その人たちは電子的な手段で連絡を取り合っていました。その後、日本の数学者が急に電子メールを使い始めたという印象を、私は持ちました。

■「これはプログラムで解ける」と実感できる経験の必要性

Y:プログラムを書くことって、それを職業にしていない限り、別にできなくても生きていけるわけで……。その魅力は何でしょうか?

雅利賀:問題が解けることに、意義があります。普段の生活の中で、「これはプログラムを書けば解ける」と分かることがまず役立ちますね。ただプログラミングの難しいところは、役に立つプログラムは、1時間といった時間内ではなかなか書けないことですけど。それでも、1時間で書ける便利なプログラムというものはありますし。

Y:いまなら、お金を出さなくてもプログラミング環境は手に入りますね。

雅利賀:コンテストで使える言語ではありませんが、手軽に書けるものとして、Basic、JavaScript、Perl、Python、Rubyなどがあります。逆に、うちの学生が使っている、SchemeやO'Camlといった理論的な言語を使うのもいいでしょう。これらを使うと、プログラムが短くきれいに書けます。
 1つ悲しいのは、現在主流のコンピュータ環境、WindowsでもMacでも、ユーザーがプログラムを書くことを想定していない点ですね。Macでは開発環境を導入すると、またWindowsではWindows Script Hostを利用してスクリプトは書けますが……。
 Linuxについても怒りたいのは、最近のディストリビューションには、普通にセットアップすると、コンパイラがインストールされないものがある点です。ライブラリをインストールすると、今度はヘッダーが付いてこない。プログラムを書くことが想定されていないのですね。しかし、ほとんどの問題、とくにコンピュータの問題の多くは、プログラムを書かないと解決しないのです。

Y:教育用プログラミング言語としては、アラン・ケイ博士がSqueak注11というオブジェクト指向プログラミング環境を推進してますよね。

鴨:私は、教育用プログラミング言語の存在には懐疑的です。小学校の高学年か中学生になったら、プログラミングのプロに通用している、本当の言語を使わせれば良いのです。その点では、Rubyのようなシンプルな言語は、最初に学ぶ言語としてもお勧めできます。

Y:ちなみに、お2人がプログラムを書き始めたのは、何歳ぐらいからですか?

雅利賀:パリにコンピュータを触らせるためのセンターがあって、そこでLogoでプログラムを書いて亀を動かしたのが、11歳ぐらいのときです。その後は家で、Basic、Pascal、Cを使い出しました。

鴨:私は初めて書いたのは、10歳のときですね。当時、NHK教育テレビで、プログラミングの番組(コンピュータ講座)をやっていたので、手元に動かす環境もないのに、Basicでプログラムを書いてましたね。もう残ってないので、はたして動くプログラムだったのか不明です。

Y:鴨さんが、コンピュータ関係のクラブに入られたのは中学からでしたっけ?

鴨:クラブに入ったのは高校からです。電子計算機研究同好会というすごい名前でした。

Y:そしてその後が、京大マイコンクラブなんですね。その話は、次回たっぷりと伺います(笑)。


 昔のコンピュータ利用者なら普通にあった経験を、いまの若者にも感じてもらえるように願います。ACM国際大学対抗プログラミングコンテストのますますの発展を、応援しております。本日はありがとうございました。
 来月号の訪問先は、ACM国際大学対抗プログラミングコンテストにも出場した実績を持ち、数々のソフトウェアを生み出したことでも有名な、京大マイコンクラブです。お楽しみに。

「熱気あふれる?コンテスト会場」

コラム1 2003年 アジア地区予選 会津大会 問題B 「ラグランジュの四平方定理」(参考訳。原文は英語)

 任意の正の整数が四個以下の正の平方数(すなわち、正の整数の平方)の和として表現できる事実は、ラグランジュの四平方定理として知られている。その定理の最初に公表された証明は、Joseph-Louis Lagrangeにより1770年に与えられている。しかし、あなたの使命は、原証明を解説することでも新証明を発見することでもなく、表現の個数を数えることで特定の数について定理が成り立っていることを示すことである。
 与えられた正の整数nに対して、四個以下の正の平方数の和として表現の総数を報告しなさい。足し算の順序は無視する。たとえば、4の2乗+3の2乗と3の2乗+4の2乗は同じ表現とみなす。
 たとえば、25の場合を確かめてみよう。整数25には1の2乗+2の2乗+2の2乗+4の2乗と3の2乗+4の2乗と5の2乗の三つの表現がある。したがって、この場合は3を報告しなくてはならない。4の2乗+3の2乗と3の2乗+4の2乗を別々に数えないよう、注意してほしい。

●入力仕様

 入力は、各行にちょうど一つの整数を含む多くとも225行からなり、そのあとにちょうど1個のゼロを含む行がある。
 最終行を除く入力行に含まれる各整数は正であり、215より小さい。最終行は入力終了を示すものであり、入力データの一部ではない。

●出力仕様

 出力は、一行にちょうど一つの整数を含む行で構成されていなくてはならない。その他の文字は出力中に出現してはならない。
 入力の整数nに対応する出力の整数は、nを四個以下の正の平方の和で表す方法の個数である。

●入力例

1
25
2003
211
20007
0

●入力例に対する出力

1
3
48
7
738

コラム2 出場チーム名のdeadbeefやsync^3について 〜今の大学生がなぜこんなのを知っているのだろうの巻〜  鴨 浩靖、よしだともこ

 deadbeefとは、バイナリに目印をつけたいときに使う数値(16進)です。16進ダンプを行って、意味がありそうな文字列が出てくると、目立つのですぐ分かるというわけです。たとえば実行例Aのように使います。
 そうすると、16進ダンプの中にdeadbeefが浮かび上がって、変数ayayaがオブジェクトファイルayaya.oの中にどのように格納されるか、一目で分かります。ちなみに、ダンプ(dump)という英語には、「ごみの山、ごみ捨て場」といった名詞や「放り出す」という動詞以外にも「大便をする」という俗語表現もあるようです。
 次に、sync^3という記述は、syncの3乗、つまりsyncコマンドを3回入力するという意味です。こんな感じで使います。

# sync
# sync
# sync
(電源をプッチンと切る)

 大昔、UNIXマシンをシャットダウンした後、主電源を自分の手でプチッと切る前に、syncコマンドを3回入力する習慣がありました。syncは、synchronize(同期を取る)の意味で、ハードディスクのファイルシステムにファイルの内容を書き込んで終わらせるために実行されていました。いまでは、UNIXマシンのシャットダウン時に人間が手でsyncを入力する必要はなくなっていますが、syncそのものは現在のUNIXにも存在しています。

実行例A deadbeef利用例
$ cat ayaya.c
int     ayaya = 0xdeadbeef;
$ cc -c ayaya.c
$ od -X ayaya.o
0000000 7f454c46 01020100 00000000 00000000
0000020 00010002 00000001 00000000 00000000
0000040 0000012c 00000000 00340000 00000028
0000060 00070001 002e7368 73747274 6162002e
0000100 74657874 002e6461 7461002e 73796d74
0000120 6162002e 73747274 6162002e 636f6d6d
0000140 656e7400 deadbeef 00000000 00000000
0000160 00000000 00000000 00000001 00000000
0000200 00000000 0400fff1 00000000 00000000
...
0001040 00000001 00000000 00000000 000000e6
0001060 00000043 00000000 00000000 00000001
0001100 00000000
0001104

注1 ACM(Association for Computing Machinery)
ACMは、1947年に創立された、世界最初かつ最大規模の計算機・情報処理関係の学会で、日本では国際計算機学会とも呼ばれる。コンピュータ業界と科学者の交流の場を提供することを目的に、現在は、IBM、Intel、Hewlett Packard、Microsoftなどがスポンサーになって設立されている。会員数は約7万5000人で、世界100以上の国に支部が存在する。ACMのSpecial Interest Groups(SIGs)には34の分野があり、論文誌の発行、学会の開催などの研究活動を行っている。
http://www.acm.org/

注2 国内予選で勝ち残ったチーム
アジア地区予選出場チームは、国内予選の結果で選抜される。しかし、大学対抗コンテストという性格上、同一大学からの出場チーム数の制限があるため、大学によっては上位でも勝ち残れない場合がある。たとえば、2003年度の予選通過には5問中2問正解していればよかったのだが、この制限のために5問中4問正解しても予選通過できないチームがあった。

注3 アジア地区予選
日本でのアジア地区予選は、1998年に初めて早稲田大学で開催された。以後、京都大学、筑波大学、はこだて未来大学、金沢工業大学、会津大学(開催順)で開催されている。

注4 国内予選の競技ルールはWebサイトで説明
使用できるプログラミング言語、Webアクセスの制限、利用できるツールなどの競技条件をWebサイトに記載している。
http://www.ehime-u.ac.jp/ICPC/jp/domestic/rule.html

注5 3時間程度で、その間に5問出題されます
2003年は、全問正解は1チームだけだった。

注6 スポンサー
主催としてACM/ICPC愛媛大会実行委員会、愛媛大学、ACM日本支部、後援には愛媛県松山市など、協賛には情報処理学会、日本ソフトウェア科学会などの名があがっている。
http://www.ehime-u.ac.jp/ICPC/images/domestic04.pdf

注7 2003年の国内予選参加大学(50音順、大学を略)
会津、愛媛、大阪工業、岡山県立、香川、神奈川工科、金沢工業、京都、京都工繊、京都産業、熊本、慶應、神戸、埼玉、静岡理工科、信州、専修、創価、中部、津田塾、桐蔭横浜、東京、東京工業、東京都立工業高専、東北、南山、新潟国際情報、日本、はこだて未来、広島、北海道、山形、立命館、早稲田(以上、34校)。

注8 京都の実施の際の取材
京都で実施された大会は、ascii24.comで詳しい取材記事が掲載されている。http://ascii24.com/からキーワード検索して閲覧できる。
http://ascii24.com/news/i/topi/article/1999/12/07/605860-000.html

注9 日本で実施されているアジア地区大会での優勝チーム
アジア地区大会は過去6回実施されているが、日本チームが優勝したことは1度もない。優勝チームの国名は、シンガポール、韓国、中国。2003年の会津大会では、1位と2位を中国のZhejiang Univ(浙江大学)が独占したという悲しい状況。

注10 世界大会での日本チーム最高順位
2002年に開催された世界大会では、東京大学が11位にランクインした。
http://www-6.ibm.com/jp/NewsDB.nsf/2003/04025

注11 Squeak
プログラミング教育を目的に開発された、Smalltalkベースのオブジェクト指向言語。

私のUNIX #19 〜Jacques Garrigue/雅利賀 惹玖さんのUNIX〜

●OS環境:FreeBSD(ルーター、ラップトップ、ワークステーション)、Solaris(SAPRCとx86)、Mac OS X(家族用)

 好みはFreeBSDですが、最近はMac OS Xの手軽さも気に入っています。パソコン歴は高校生のころのPCから始まりましたが、そのときのOSはDOSで、Windowsは1.0と2.0以外にまともに使ったことがありません。大学に入ってからSun OSを使い始め、その後はさまざまな環境を渡り歩きました。Mach、Data General DG-UX、OSF/1、IRIXなど変ったものがありましたが、最近はSolarisとFreeBSDの2本立てに落ち着きました。本当は家のPCを含めてFreeBSDに環境を統一できるといいのですが、ハードウェアやソフトウェアの多様化がそれを難しくしています。

●ウィンドウマネージャ:

 こだわっていて、いろいろ試しました。どうもtwm系では満足できず、AfterStepやFvwm95あたりで初めて機能と見栄えのバランスを重視したものに巡り会えました。しかし、設定が難しかったので、探究を続け、一時期wm2(設定はコンパイル時にしか決められない、すばらしく単純なもの)に一本化していました。いまでも、新しいアカウントをもらうと、それを真っ先にインストールしたりします。しかし、時代はKDEやGNOMEを到来させ、KDEをしばらく使った後、GTK+でのプログラミングが多いせいで(できの悪い)GNOMEに移りました。GNOMEの初期のウィンドウマネージャはEnlightenmentでしたが、機能面ではやや弱いものの、この上ない見栄えを楽しませてくれました。最終的には、Enlightenmentと決別したGNOMEに愛想を尽かし、同じGTK+ベースのXfce4に落着きました。

●シェル:tcsh

 csh、lcsh、tcshの順番で進んできました。shと構文が違い、スクリプトを書くときは不便ですが、コマンドライン利用では慣れてしまったので、変えられません。

●シェルの設定:

 次のように設定しています。

set prompt = "%m-%C1> "
alias 色々

 コマンドラインのシェルに求めているのはファイル名補完とコマンド履歴だけで、それ以上の設定の必要性を感じません。

●エディタ:GNU Emacs 21

 Emacsは、エディタの同義語といって差し支えないでしょう。主にGNU Emacs 21を使っていますが、Ctrlキーはあまり使わず、マウスやカーソルキーを使っています。
 ファンクションキーも自分の好みに割り当てを決めていますので、他人のEmacsを使うと不便に感じます。Emacsを多用しているのに、なぜかsuするときはviになってしまいます。rootが「~」を残すのが恥ずかしくて。

●日本語入力:

 日本人でないせいか、SKKでないと苦労します。SKK入力の「呼吸」がいちばん捕みやすい。

●そのほかのこだわり:

 ミーハーな割には主にコマンドラインを使う。玄人好みなのに、GUIの使いやすさと美しさにこだわっている。一見、時間の無駄に思えるが、GUIへのこだわりは毎日使っている環境を楽しくする必要性からきている。快適かつ知的、なんてね。

[前回記事] [トップ] [次回記事]

Last modified: Mon May 21 13:26:30 JST 2007 by Tomoko Yoshida