競技プログラミングのチャンピオン・林洋が生み出すヒューリスティックを取り入れた最適化アルゴリズム
2022.10.11S0: Solverオプション(最適化) , X1:アスプローバ社員インタビューアスプローバ社 プログラマーインタビュー 林洋
アスプローバ社のプログラマーに、連続インタビューをしています。今回は、林洋(リン・ヤン)さん。中国福建省・厦門の出身で、名門として知られる上海交通大学卒後、名古屋大学に留学し、修士課程を修了して、2019年に入社しました。2010年代から数々のプログラミングコンテストでメダルを獲得しました。1日で書くプログラムの分量は「昔のプログラマーの1か月分の仕事だ」と、凄腕ぶりが社内に衝撃を与えています。
競技プログラミングで鍛えられる
ー プログラミングに取り組むきっかけは何でしょう?
小学校4年生くらいのとき、Adobe Flashというソフトウェアで、ゲームを作り始めました。取り組みやすくて、生成した画像やアニメのサイズが小さく、画面のあるゲームが簡単に作れます。性能はそんなに高くないので、小さいゲームに向いており、昔はよく使われていました。
ー それからプログラミングにのめりこんだのですか。
高校生のころ、競技プログラミングに参加するようになり、一生懸命勉強しました。そういうコンテストでは、一つ間違えると全部だめになってしまうので、正確で速く書くことが必要です。厳しい環境で鍛えられたおかげで、速さが身につきました。
人間的な思考を取り入れる
ー 現在のお仕事はSolverが中心ですか。開発初期のことを教えてください
Solverを始める前、入社して「Asprovaソフトウェア」を触り始めました。一番気になったのは、どうやって最適な結果を計算するのか、ということです。このような問題は理論上、決定版のアルゴリズムはなく、いい最適化アルゴリズムが必要だと思いました。学生時代から組合せ最適化を専攻していましたから、興味が高まりました。
今までのAsprovaにヒューリスティック(人間のひらめき)の要素を入れたのがSolverです。Solverを始めるにあたって、いろいろ決めなければならないことがありました。たとえば、既存ものから改善するのか、簡単なバージョンを作るのか、どこまで機能対応するべきか、メインの最適化方法はどれを使うのか、などです。試行錯誤で進めました。
結果の評価方法もいろいろ考えました。「いい結果」と思われる根拠があいまいだと、「いい結果」は出せないので、「ペナルティ」(理想との乖離具合)と「目的関数」を追加しました。要するに何を目的とするかをはっきりさせることです。
それから、評価計算式をもっと簡単に変更できるようにするため、式の計算機能を強化しました。たとえば、ユーザーが「いい結果」を正確に説明できなくても、「納期遅れ重視」、「段取り重視」、「仕様切り替え重視」などさまざまな評価方法で、結果を示すことができます。
すべてが完璧に行くわけはなく、Asprovaの機能は思ったより複雑で、ユーザーニーズは多様です。機能と汎用性が大きいほど、計算時間も長くなります。バランスをとりながらプログラムを改良していくしかありません。事前にすべて希望機能を知ることもできません。こういった事情が、改善しながら開発を進める「アジャイル開発」をとる理由かもしれません。
いま考えているのは、既存プログラムの変更最小・パフォーマンスへの影響最小・汎用性を保つ—これらを並立させることです。困難ですが面白そうです。実現できたら、将来のプログラミングの作業量がかなり減ります。
ー プログラムを速く書く秘訣はありますか
人それぞれに方法があると思います。考えがまとまってしまえば速いです。考えながら書く人と、考えてから書く人がいるのですが、私は後者ですね。
飲食店はコスパ重視?
ー 日本と中国、アジア諸国、アメリカなどとを比べて、開発環境に違いはありますか?
そこまで分からないです。開発環境は会社によるかもしれません。ツール、ルールはそれぞれ異なると思います。どちらにしても、正式バージョン・最新開発ソフトウェアが望ましいです。最新機能が使えるといろいろ便利です。効率も上がります。個人の成長にもつながります。中国の会社は古い開発ソフトを使うことがあります。
ー 日本の食べ物で気に入った料理やお店があったら教えてください。
海辺で育ったので海鮮が好きです。名古屋にいたときから気に入っている店は「磯丸水産」です。新鮮な海鮮・刺身があります。貝などの焼き物もあります。東京は「焼肉ライク」が印象的です。普通の焼肉店は一人に向いていないですが、ここは一人でも楽しめるように設計されています。しかもおいしいです。
Solverの可能性は大きいと思うので、これから仕事の幅をさらに広げていきたいと考えています。
コラム編集部
最新記事 by コラム編集部 (全て見る)
- 困ったこと35~ 困っているときにサポートしてくれる人がいなかった - 2024年12月18日
- 困ったこと35~ 人材不足で困った - 2024年12月18日
- カンバン方式のタスク管理|効率的な運営方法と成功のポイント - 2024年12月11日