2014年1月17日

第55回プログラミング・シンポジウム参加報告


はじめに


先日の1月10日(金)~12日(日)の3日間、伊豆の伊東温泉で情報処理学会の第55回プログラミング・シンポジウム(通称プロシン、http://www.ipsj.or.jp/prosym/55/55program.html)が開催されました。実は昨年のプロシンで Kompira について発表(※)したのですが、その発表内容が案外に良かったらしく、山内奨励賞というのをいただけることになり、その表彰式と受賞講演のために、今年も参加してきました。

プロシンは、毎年この時期に伊豆や箱根など東京近郊の温泉地で開催され、プログラミングに関連した話であれば何でもOKという自由な雰囲気のシンポジウムです。参加者のバックグラウンドは大学や研究機関、企業などの研究者やソフトウェア開発者、また年齢も20代から80代?までと幅広く、この業界のコミュニティの新年会的な感じで(特に夜の部は)盛り上がります。ちなみに夏のプロシンというのもあり、こちらは最近では都内で1日開催されているので、参加されたり耳にした方もいるかもしれません。

さて、私は初日の午前中は客先での打ち合わせがあったため、伊東に到着したのは午後4時半くらいと表彰式の直前となってしまいました。以下では私が聴講したものをいくつかピックアップして簡単に紹介していきたいと思います。

1日目


京都大学の馬谷先生の「JVMバイトコードへの低水準操作を簡潔に記述可能なマクロシステム」では、JVMバイトコードに対する書き換え操作をbc-macroという独自のマクロ展開ツールを用いて行う手法について発表していました。一般的にはJVMのバイトコードをいじる場合、ASMで低水準な操作として記述するかAspectJなどのアスペクト指向プログラミングを用いてバイトコードの特定の個所にコードを織り込んでいくようですが、前者はどうしても記述が煩雑になる一方、後者では柔軟性が乏しいという課題があります。馬谷さんは今では絶滅危惧種の(と会場では呼ばれてました)Lisperらしくマクロを用いてJVMの木構造を書き換えるツールであるbc-macroを開発したとのことです。ちなみにbc-macroはClosure言語のライブラリとして実装されているそうです。発表では、bc-macroを用いて末尾再帰の最適化を行う例を示していました。

2日目


琉球大学の河野先生による「AgdaでのProgramming技術」という発表では、Haskellのモナドをきちんと理解するために、Agdaを用いて圏論の性質を証明しようという試みでした。ちょっとAgdaは強力な型システムを持ったHaskellライクなプログラミング言語とみなすこともでき、型を証明したい命題とし、その型を満たすラムダ式のプログラムを証明とするカリー・ハワード同型対応にもとづく証明支援系です。この発表を聞いて私もAgdaで遊んでみたくなりました。


慶応大学の服部先生による「変数名を用いないプログラミングの試み」は、変数名を用いないでどこまでプログラミングが可能か?ということを追求した発表でした。プログラムを作成する際、変数名を考え出すのに結構時間がかかってしまうことは、プログラマの皆さんなら同意してくれるかと思いますが、ならばいっそのこと変数名無しでプログラムを作成してみたらどうなるか、という話です。関数型言語界隈の人たちはここで、コンビネータをつかったプログラミングのことか?と想像するでしょうが、さにあらず、ここではC言語風の手続き型言語を用いて例によるプログラミングという手法を使っていました。例によるプログラミングというのは、Excelのマクロ記録みたいなやつで、実際の操作を与えるとプログラムを作成してくれるというやつです。ここでは、変数を一切用いずにかわりに具体的な数値や文字列と記号のみでプログラムを記述し、そこから、普通の変数名の埋め込まれたプログラムを推測することをやっていました。さすがに例として示されたプログラムはかなり長くなったり、かえって読み難くなったりして、実用性には乏しいかと思いますが、試みとしては面白かったと思います。

2日目の昼には、招待講演として明治大学の杉原先生が「視覚の数理モデルと錯視図形の設計法」というタイトルで登壇されました。「不可能モーション」という動画がYouTubeにアップされ(http://www.youtube.com/watch?v=hAXm0dIuyug)話題となったり、日本テレビ「世界一受けたい授業」に出演されたりしてますのでご存じの方も多いかと思います。この講演では、人間の錯覚を利用して、一般には不可能な動きや、エッシャーのだまし絵に出てくるような形の物体を紹介していました。杉原先生は、平面に書かれた立体図をコンピュータに理解させる研究をなさっていたようなのですが、ある時、エッシャーのだまし絵のような不可能な平面図をコンピュータに入力したところ、コンピュータが可能な3次元の解を出力したために、このような可能性に気がついたとのことです。

2日目の夕方には、別の山内奨励賞受賞者である電通大の中野先生による受賞講演がありました。中野先生は、昨年のプロシンで「ジグソーパズルによる関数型プログラミング」という発表をされたのですが、今回の受賞講演では、ジグゾーパズルプログラミングの発想が誕生するまでの経緯についての話でした。そもそもジグゾーパズルプログラミングでは、ジグゾーパズルのようなピースをうまくはめ込んでいくことで、3進2進変換のような計算処理をジグゾーパズルで実現できるという大変ユニークな内容です。詳しくは論文(https://ipsj.ixsq.nii.ac.jp/ej/?action=pages_view_main&active_action=repository_view_main_item_detail&item_id=95547&item_no=1&page_id=13&block_id=8)を見ていただくとして、今回の受賞講演では、この発想がコラッツ問題に取り組んでいる際に気がついたという話を紹介していました。

3日目


電通大の鈴木さんによる「無音動画に対する効果音貼付けシステムの開発」では、効果音を自然な形で引きのばしたりして尺を調整し、音のついていない動画に張り付ける手法を説明していました。爆発音や破裂音の場合、そのまま繰り返して長さを調整することはできないため、この手法では、元となる音と、ピーク部分を除去した波形を重ね合わせることで自然に聞こえるようにしていました。

東京理科大の酒井さんの「コンパイラ共通基盤COINSのLLVM向け拡張」という発表では、コンパイラ共通基盤 COINS の中間表現を LLVM の中間表現に変換する手法について説明していました。これによって、COINSで実現されている様々な最適化手法とLLVMが持っている様々なバックエンド対応のいいとこどりができるようです。発表では、いくつかのベンチマーク結果も紹介していました。

おわりに


以上、ご紹介したように、プログラミング・シンポジウムでは、発表のテーマがかなり多岐にわたっており、普段あまり触れることのない分野についても最新の研究成果や研究の動向を知ることができる貴重な場かと思います。また機会があれば、参加してみたいと思います。

---
※ 発表スライドと論文はこちらにあります(2014年1月17日追記)