IoTで捉えた大量の情報をクラウド上で効率的に処理し、その結果をいち早く提供する仕組みを実現したい!
コンピュータサイエンス学部 先進情報専攻 金光永煥 講師
大学の学部時代は数学を研究していたという金光先生。就職してプログラマーになるまでは、プログラミングにもコンピュータにも興味がなかったそうです。やがて仕事を通じてITの世界の面白さを知り、さらなるステップアップを求めて大学院へ。そこで現在の研究のきっかけとなるテーマに出合い、研究の道へ進んだそう。今回はコンピュータサイエンス学部のコロナ禍における授業体制やご研究についてお聞きしました。
■新型コロナウイルス感染症が流行する中、コンピュータサイエンス学部では、後期の授業をどのように進めていますか?
基本はオンラインで授業を行っています。リアルタイムでの授業とオンデマンド(録画)による授業ですね。ただ、コンピュータサイエンス学部には「プロジェクト演習」など、手を動かす授業もあるので、それらについては一部、対面で行っています。もちろん感染予防対策として学生同士の席は離し、1テーブル4人1組のグループに分けるなど、座る人数を極力減らしています。また、人数の多い授業では、教室を複数に分けて行う場合もあります。前にスクリーンを用意し、そこで映像を共有しながら授業を進めているのです。先生のいない教室には、TA(Teaching Assistant)に入ってもらい、学生からの質問などにもしっかり対応しています。
私自身は、講義形式の授業とプログラミングの演習を担当しています。講義形式のものはオンデマンドで、プログラミングはリアルタイムのオンライン授業です。オンデマンドの方は、時間内にどの学生が視聴し、いつ課題を提出したかをチェックすることで、取り組み度合いを評価しています。
また、プログラミングの演習は、正確には講義付き演習というもので、2コマあるうちの1コマ目が講義、2コマ目が演習というものです。1コマ目は、オンラインを通じてリアルタイムに私の手元を映しながら講義をしています。2コマ目の演習の方は、実は今でも少し苦労しています。というのも、この授業には70人ほどの受講者がおり、その全員が各自のパソコンを使って、自宅でプログラミングの課題に取り組むため、各々の環境によっては、正しく動作しないという問題が起こるのです。そういう想定外のトラブルに対応するために、学生を6グループに分け、それぞれZoomのブレイクアウトルームに入ってもらい、そこにTAがいる状態にしています。また、パソコン環境の不具合やTAで対応できない質問のときのために、別途、相談室というルームを設け、そこに私が常駐する形で対応に当たっています。このように対面であれば、すぐ解決する問題もオンラインを介すと難しい面があることは確かです。ですが、オンライン授業はその録画を学生が復習に活用できるなど、メリットもあります。来年以降、対面授業が普通に行われるようになっても、そういう良い点は残していきたいですね。
■では、先生のご研究についてお聞かせください。
私の研究室では、並列分散処理の研究をしています。簡単に言うと、ネットワークにつながった多数の計算機を連携させて、巨大な仕事を効率良くさせる方法論を研究しているのです。それを実現することで、IoT(Internet of Things)、つまり家電やセンサ、カメラで捉えた大量の情報をクラウド上で効率的に処理し、分析結果が欲しい人にいち早く提供する仕組みを実現したいと考えています。そのために必要な研究として、大きく3つのテーマを扱っています。1つ目が「資源の割り当て・スケジューリング」、2つ目が「ネットワーク」、3つ目が「IoTシステム」です。
1つ目の「資源の割り当て・スケジューリング」の研究から説明しましょう。例えば、1万台のセンサやカメラが捉えた撮影動画などの情報は、絶えずストリーミングデータとしてネットワークに大量に流れ、クラウドに集められるので、それを効率的に処理する必要があります。そのときに、どのように仕事を割り振るかということをクラウド上で行うのが、資源の割り当ての研究です。クラウドとは簡単に言うと、大きなパソコンのマンションのようなイメージです。大きなパソコンのマンション内の、ある部屋にはWindows、ある部屋はMac、ある部屋はLinuxと、計算資源を常駐させることができます。つまり、ひとつのパソコン(マンション)内で仮想的に何個もの部屋のパソコンを動かすことができ、計算資源をうまく活用できるのです。
とはいえIoTのような大量のデータをどの部屋に割り振るかは、クラウドではしてくれません。そこで自動的にどの仕事をどの部屋に任せるかという割り振りする方法を研究しています。特にこの研究室では、仕事を割り振る部屋が持っている能力、つまりその部屋が今から割り振る仕事のエキスパートかどうかまで見定めて、自動的に割り振る手法を開発しています。また、一つのクラウドだけでなく、複数のクラウド間でのやりとりも想定して研究しています。ときには、同じクラウド内で割り振って処理するより、隣のクラウドにある能力の高い計算機に任せたほうが効率的なケースもあります。そういうことも自動的に考えて、クラウド間で仕事を割り振ることのできるアルゴリズムを開発しました。
私の研究室では、この情報指向ネットワーク上で、例えばどのユーザーにどのコンテンツを置いておくと効率が良いかという手法を研究しています。欲しい情報を早くもらうために、あらかじめどのユーザーのところに人気のコンテンツを置いておくと良いかを決めておくわけです。また、ユーザーが持てるデータ量は限りがあるので、容量がいっぱいになる前に、コンテンツを整理して人気のないものは消す必要があります。そのとき、どれを捨てるかということも自動で実行できるようにしています。
■先生の研究室では、独自のワークフローエンジンを開発されたそうですが、それはどのような研究ですか?
1つ目の「資源の割り当て・スケジューリング」の研究と、2つ目の「ネットワーク」の研究を融合させたものになります。今までの話では、ある仕事をこのマンションのどの部屋に割り当てるかという研究でしたが、この研究では、仕事自体がどこにあるかわからないという想定です。こういう仕事をしたいけれど、対象とする仕事がどこにあるかわからないというところから出発しています。その仕事を発見するときに、情報指向ネットワークを使って、「この仕事、ありませんか?」と声をかけると、その仕事を持っている人からもらえるのです。
次に、その仕事を誰に割り振るかというところは、各計算資源が自分の持っている情報を使って、自律的なスケジューリングの技術で行います。例えば自分の友達の中から、その仕事が得意そうな人を選んでそこに割り振るイメージです。さらに一番の特徴としては、仕事の結果をその仕事をした人に持っておいてもらうという点です。そして、他の人が同じような仕事をしたいと言ったときに、その仕事の結果だけを返します。情報指向ネットワークの技術を用いて、もう一度、誰かが同じ仕事をする必要をなくすわけです。つまり処理という仕事をしない分、早く結果がもらえます。
現在、このワークフローエンジンは公開され、誰でもダウンロードして使えるようになっています。今後はこのエンジンをより多くの人に認知してもらえるよう展開していきたいですね。また、外部の企業と積極的に連携していきたいとも考えています。研究という閉じた世界にいると、人に使ってもらえるシステムはなかなかつくれません。実際、この秋からアメリカの企業との共同研究プロジェクトが始まっていて、私は今、その企業のソフトウェアを改善する仕組みを考えているところです。自分のアイデアが世の中で使ってもらえるようになれば、それはとても嬉しいことです。
■最後に受験生・高校生へのメッセージをお願いします。
月並みですが、何事もあきらめないことが大切です。最初は難しいと思ったことでも、何度もチャレンジして壁にぶつかることで、少しずつわかってくることが増えます。そこで大事なのは、自分が今、何がわかっていないのかを明確にすることです。これは受験勉強にも言えることですよね。また、繰り返し難しいことに挑戦すると、粘り強さや忍耐力が身に付きます。これは社会に出たとき、最も評価される部分だと思います。知識や技術は勉強すれば手に入りますが、粘り強さは自分が経験しないと得られないものですから。
また、学生の中には、今、学んでいることが、将来何の役に立つのかと、すぐに考える人も少なくありません。ですが役立つかどうかは、やってみないとわからないことです。学びや経験には効率を求めず、時間をかけてじっくりと積み重ねていってください。
■コンピュータサイエンス学部WEB:
https://www.teu.ac.jp/gakubu/cs/index.html