立石卓也/ソフトウェアエンジニア
北海道大学大学院 理学院
宇宙理学専攻 博士課程
新卒でCCT入社
自然界の最も基礎的なルールの探求
-学生時代の研究について教えていただけますか
物理学の素粒子理論の研究をしていました。
自然界には木、鉄、水、空気など様々な物質が存在しますが、それらは全て様々な種類の「原子」が組み合わさって出来ています、という事を中学の理科や高校の化学で学んだかもしれません。ところが、まだまだその先があります。原子は「原子核」と「電子」からできていて、そのうちの原子核はさらに「陽子」と「中性子」から構成されます。そして、陽子や中性子は「素粒子」と呼ばれるものに分解されます。素粒子物理学は、自然界を形作る最も細かい要素である素粒子を、ひいては自然界の最も基礎的なルールを探求する学問です。
私の研究テーマは、「超弦理論による素粒子標準模型の再現に向けた研究」です。超弦理論とは、素粒子が粒子(点状の存在)ではなく「超弦」と呼ばれるヒモのように伸びた存在であるとする理論です。素粒子にもたくさんの種類があるのですが、それら素粒子の種類がヒモの振動の様子の違いで表現される、とする理論です。物理学には、一見して異なるいくつかの法則が実は一つの法則の見え方の違いである、とする「理論の統一」を目指す考えがあります。超弦理論は、そのような統一理論の候補の一つです。ただし、今のところ実験的には全く手がかりがありません。私の研究は、超弦理論と現在の実験事実(素粒子標準模型)を結びつける試みの一つです。超弦理論にもバリエーションが(無数に)あるのですが、実験事実から「この手のバリエーションはダメ」「この辺なら可能性があるかも」として超弦理論の範囲を絞り込もうとしていました。
少しずつプログラミングに魅了されていった
-学生時代のプログラミング経験について教えていただけますか
学部一年か二年生の授業でRubyを扱いました。
「n面サイコロを全ての面が少なくとも一回ずつ出るまで振り続ける。この試行をt回行って回数の平均値を求めて出力する」という課題を自分で設定して実装したのですが、これは非常に楽しかった記憶があります。それ以来、新しいプログラミング言語の仕様を覚えるときは、とりあえずこの課題を実装して大まかな使い方を覚えています。この時に、数値計算の手段としてのプログラミングにほのかな興味を持ちました。ただし、その後で特に勉強などはしませんでした。
修士になって、研究のためにある計算式を代数的に(x, yなどの変数を使用して)解こうとして行き詰って、代わりに数値的に(変数に値を入れて)解いてみようと思い立ちました。ここではC++を使用しましたが、言語選定の理由は軽く調べて導入が簡単そうだったから程度のことでした。この時に、自分で課題を設定して実装し結果を確認する楽しさを再度経験して、プログラミングに強い興味を抱きました。これ以降、修士や博士の間たまに研究のために数値計算用のコードを書いていました。
この経験から、就職するならIT業界と決めました。そして、就職前の12月頃に、Pythonで「指定した生成元から有限群を生成し、その半直積分解を調べるプログラム」を作成しました。2か月ほど平日も休日も朝も夜もひたすら開発していて、素人の我流ながらかなりの大作が出来上がりました。
建設業界のDXへの挑戦
-CCTで今まで関わったプロジェクトについて教えていただけますか
入社してから今まで、建設業界のDX推進の一環としての業務アプリ群の開発に従事してきました。
このプロジェクトは、とても長期間にわたる開発計画の一部であり、一期開発と二期開発とに分かれています。一期開発が一年四か月程度、二期開発が全体で約二年のうち現在十か月程度です。
一期開発では、騒音計算アプリを担当しました。このアプリは、建物内部で発生した音が建物外部にどの程度届くかを計算するものです。3Dモデルで表現された建物に対して音の伝搬の仕方を計算して、その結果を可視化します。私の担当は、アプリの要となる数値計算部分でした。クライアントからの要件ではシンプルな場合の計算方法が示されたのですが、3Dモデルの自由度を考えると、より複雑な場合の一般化された計算が必要となります。そこで、クライアントに色々な建物形状のパターンを提示しながら「何を計算したいのか」を突き詰めていきました。その後は、目標を達成するための実現可能な計算ロジックを考えて、自分でコードを書いて実装やテストをして、さらに計算速度の向上のために試行錯誤するという事をしました。私は計算が好きだったため、入社していきなり好みにばっちり合った仕事ができてラッキーだなと思いながら楽しく作業していました。
二期開発では、一期開発とはまた別の業務に使用するアプリを複数同時に開発しています。こちらはまだ進行中なのであまり話せることはありませんが、今まで全く馴染みのなかった建設業界の業務を学びながら、クライアントが本質的に望んでいる機能は何かを探りつつ、実現可能で価値の高いアプリの姿を考える、ということをしています。
研究過程で培った様々なスキルを活かしていく
-博士号を取得していますが、仕事において活かされていることを教えていただけますか
研究の専門知識は全く使われませんが、研究活動の中で鍛えてきた能力は非常に役立っていると感じています。具体的には、調査力、プレゼン力、問題発見・解決力、計算力あたりを実感しています。
調査力としては、どこまで分かっていて何が分からないのか、解決のためには何が分かればよいか、分かるためにはどうすればよいか、ということを自分で整理できることが挙げられます。これにより、クライアントの要件の本質を理解するために何を確認すべきかを考える、プログラミングの言語仕様を自分で調べて理解することなどに役立っています。
プレゼン力は、特にクライアントに業務や要件の詳細を質問する際に、分かりやすい質問資料を用意して、こちらが何を聞きたいのか、そのためにはクライアントに何を判断してもらいたいのかを齟齬なく伝えることなどに役立っています。
問題発見・解決力は、クライアントの表面的ではなく本質的な課題は何かを考えて、実現可能な解決策を模索することに役立っています。簡単ではない要件に対して、松竹梅の案を提示して現実的な落としどころを探ることなどができています。
計算力としては、インプットデータの情報量からこの機能が実現できるか、この機能を実現するにはどのようなデータが必要か、という判断において、後から重大な想定違いが生じない程度の精度で算段を立てることができています。技術的にではなく原理的に計算可能かどうかの見切りを付けることは、そう簡単なことではないと思います。