竹内先生の研究の概要を教えて下さい。
研究分野は無線通信です。携帯電話や無線LANなど、物理層というのですが実際に電波を送り、送った情報をどの様にして推定するのかというアルゴリズムの研究をしています。具体的には、自分で新しく提案した推定方法のアルゴリズムの性能を評価するには、大学レベルの実機実験では難しいため、コンピューター上でC言語を使用しシミュレーションの実験をしています。
昔の無線通信の業界で使用されるのはハードウェアでした。電気電子工学を行っていた人達が実機を作って送った情報を推定するという分野だったのですが、最近はソフトウェア化してきています。デジタルサンプルで送られてきた情報をサンプリングして、コンピューター上に取り込んで動かします。
スカイプなどのP2Pの技術に関してもこの中に含まれるのでしょうか?
そうではないです。端末一個、基地局一個の間の話です。先ほどハードウェアやソフトウェアと言っていたのは、昔は基地局に専用ハードウェアを置いていました。
しかし、近年では汎用的なコンピューターを置いて仮想化し、専用ハードウェアのようにして扱おうとしています。まだ実現はしていないのですが、そういう方向性がやっと見えてきたという感じです。このような研究は基礎研究のため、10年先を見て行動しています。
現在では多くの人がスマートフォンを使用していますが、そのような端末に使われる通信は今後どの様に変化していくのでしょうか?
先ほど10年先と言ったのは、例えば今LTE3.9Gですがもうじき4GLTEアドバンスという物になります。無線通信業界はすでに次の5Gを見ていまして、東京オリンピックまでになんとか作りたいという話しが出ているのですが、差し当たり2020年代までにやろうとしています。世界的にも4Gが出来たので次は5Gという話しになっています。
そこでまず、例えば通信速度で10倍出さないといけない等の要件が出されます。今まででしたら下り回線のデータをダウンロードする方だと1Gbps出さないといけない等の要件がありました。そして次の5Gだと10倍の10Gbpsにしなければならなかったり、通信を確立する前の遅延時間を短くしないといけない、などその手の要求を色々積み上げて生み出すわけです。そうしますと、パラダイムシフトが必要で、単純に周波数帯を広くすることや使える通信チャンネルを増やすなど、そういう物では厳しいので根本的な情報の送り方や推定の仕方の改良が必要です。
一つキーワードを上げるとすると、大規模MIMOと言って、MIMOというのは「マルチプルインプット マルチプルアウトプット」の略でアンテナをたくさん持っているという意味なのですが、例えば1つの基地局にアンテナが10〜16本あるとすると、無線LANのアクセスポイントも大体3~4本でしょう。それを100本単位のアンテナを持っていることによって、先ほど言った通信レートを10倍にしないといけないという事を解決するために産業界で取り組もうとしています。
歴史を振り返ってみると、私が属しているような研究分野では10年前の2000年代始め頃から行われていました。100本や1000本など用意した場合にどのような事が起こるのかという研究をしていたのですが、その頃は「アンテナ100本も用意できるわけないじゃないか」と批判されていました。
そういう時代は人に発表する時に、「小さいたかだか10本くらいのシステムの場合にも同じ説明になっているのですよ」と様々な工夫をして話すのが大変だったのですが、現在では実際にもう作られようとしているわけです。
作ろうとした理由も、10年間の蓄積や、実際に作ったとしたら素晴らしい世界が待っているということを我々の様な学者が研究をしたり、生み出してきたからなのです。そうして、やっと技術的にもアンテナを多数持っているようなものが実現可能になってきました。
授業で教鞭も執られているということですが、プログラミングを学んでもらう上で「もっとこういう風に教えられたら良いな」と感じることはありますか?
今一番問題と感じているのは、物事の一般化が出来ない人が多い事です。例えば、プログラミングでソースコードを書く時はnなど実際に値を定めない文字を使いますが、それを3にしないとできないという学生がいます。
先ほど言った話しにも関わっていて、ソフトウェア化するとあらゆる状況を想定して、それに関する対処を全て決めないと動かないため、何か一つでも見落としていたらリコールになってしまいます。nを3にした場合のケースしか考えていない場合、それが4になってしまったら対応出来ないという問題を抱えているので、重要な問題です。
それはソースコードを書く技術というより、もっと背後にある数学的な考え方であったり、アルゴリズムとしての考え方であったりするので、もっと基礎的な部分の考え方の底上げができればと思います。
現在行われている研究または、授業の中で工夫されていることはありますか?
与えられた問題を解くというより、問題を作るというタイプの問題を出すことです。例えば誤り訂正符号という物があり、情報を送って誤りが生じた時にそれをちゃんと訂正できるように仕掛けを入れておきましょうという問題があります。そういった問題を訂正出来る様な、自分で物を作る創造性を重視しています。研究は勉強とは違い、誰も解いた事のない問題を解くわけです。
私自身の現状もそうですが、一番困る事は何かというとテーマを見つける事です。正直、テーマが見つかってしまえば研究の8割程度は終わってしまっていると思います。ある程度どういう結果が出るのかという予想をしながら、自分の力で答えを出せるかというトレードオフを見つけるわけです。
もちろん、とても難しい問題を解いた方が周りから称賛されるでしょうが、解けないまま終わってしまう可能性もあります。問題の難易度と驚き度で、そういうトレードオフを見つけて、うまい問題設定を見つけて答えを出します。それはやはり与えられた問題を解く能力とは違うと思います。
最後に、読者や学生の方に一言コメントお願いします。
最初に言いましたように、世の中のシステムはソフトウェアが増えてきています。今までハードウェアで動かしていた物がソフトウェアになり、新しい分野が生まれている状況です。そのため自分の技術を活かす場所はSEだけではないと思います。携帯用のゲームを作りたい、アプリを作りたいというパッと思いつくような物だけではなく、もっと広い視野を持って身に付けた技術を活かしてもらいたいと思っております。エンジニア就活をご覧の皆さんもぜひ、広い視野を持ち、問題を新たな目線で見てみると良いかと思います!