ソフトウェア工学研究の日々

ソフトウェア工学の学術研究を紹介しています。ソフトウェア開発に関する調査と実験が大好きです。

模擬授業「ソフトウェアの生態系」質疑応答

公立はこだて未来大学オープンキャンパスの模擬授業にお越しいただいた皆様、ありがとうございました。今回の模擬授業では、ソフトウェアの生態系に関する歴史的な話と、最新の研究から得られているいくつかの知見をご紹介しました。

SLIDO を使ってみたところ、授業中にたくさん質問をいただきました。時間内に答えきれなかったもの、授業後に口頭でいただいた質問もありますので、ここに整理しておきます。質問は、ここに掲載する都合上、私が記述を改めているものがありますのでご了承ください。

1. プログラムの構造上バグの修正が不可能であったり、困難であったりする事態が起こることはありますか。    

あります。プログラムが複雑すぎて直し方がわからない、プログラムをハードウェアに組み込んでしまって書き替えられないなどといったことが原因です。一度こうなってしまうと、使い方の工夫でどうにかするしかありません。

2. プログラミングを学ぶ為のおすすめの書籍などはありますか?

教科書は、ターゲット層がけっこう違うので、本屋さんなどで最初のあたりを読んでみて、自分に理解できそうな内容かを確認することをお勧めしています。初心者のために(厳密さは犠牲にしながら)難しい書き方を避けているものや、ある程度プログラミングの知識を持っている人向けの本などがあります。

雑誌などでも4月頃に入門記事が出たりしますので、色々な説明を、何度も読むのも良いと思います。

3. 一部のバグを解決すると、今までうまくいっていた所でバグが起きたり、何かが成り立たなくなって進まなかったりするのですか 。

あります。通称「モグラたたき状態」で、こうなった時点でかなり危険な状態です。こうならないよう、つくる段階で気をつける必要があります。

4. 他の分野などと関連して進められるようなことなどはありますか? 

ソフトウェア関係でいうと、自然言語や教育、チームワークのやり方など、言語や社会的な側面に関連します。情報技術全般に、情報+○○として、今までやってきたことをコンピュータでどう扱っていくか、という組み合わせの研究も多いと思います。

5. ソフトウェア開発にグリッチなどの概念はありますか?

ここでの「グリッチ」は、ゲーム等で裏技的に使われるバグ(あるいは障害)のことでしょうか。ソフトウェア開発の観点では、こういうものがなるべく発生しないようにする、ということと、発生しても大きな問題にならないようにする、というセキュリティ的な考え方はあります。

6. 学生時代に行っていたプログラムのバイトというのはどのようにして知りましたか。当時どれほど技術を持っていましたか。 

サークルの先輩による紹介でした。プログラミング技術としては、仕様書を読んでプログラムを書けていたので、それなりだったと思います。プログラミングの能力だけでなく、書いたプログラムをテストしたり、仕様書の不備を見つけたりといった、多くの知識はアルバイト先で身につけられたと思っています。

7. ゲーム開発のソフトウェアで既存ソフトウェアの利用の例はありますか?

ゲーム自体を扱うときは、「なるべくそのまま動かす」印象があります。また、知り合いの範囲でいうと、最新の環境で最高の性能が出るように、自分で素早く書く技術が求められている印象です。

8. AIなどを利用したバグのチェック・修正する技術はありますか?また、その技術について現在どのような課題がありますか? 

もちろんあります。しかし、修正内容自体が正しいかどうかを人間が理解できるとは限らないですし、AI が間違った修正例を出してくることもあるので、しっかり確認する作業が必要で、まだまだ改善の余地があります。

9. 既存ソフトウェアの利用について著作権法にあたる場合はありますか。

はい、あります。ソフトウェアの利用は勝手にやっていいわけではなく、ルールを守って行う必要があります。

10. 今からできる準備とかやっといた方がいいこととかありますか? 

高校3年生の場合は、数学、英語をしっかり勉強してほしいところです。数学は理論で使いますし、英語は、最新の文章を読んだり、書いたり、海外の人とコミュニケーションを取ったりと、勉強したらしたぶんだけ役立つことがあります。

あとはプログラミング言語を使ってみること、また、コンピュータで何ができるのか、コンピュータに親しんでおくと良いと思います。

11. 未来大で学ぶなら、今のうちからプログラミングを学ぶべきでしょうか。

必須ではありませんが、この分野に飛び込んでみたいと思っているなら、やってみてはどうでしょうか。

プログラミングを勉強するためだけに勉強していると長続きしないので、何かプログラムを自分なりに作ってみるのが良いと思います。

12. 自分でプログラムを書くとき、気をつけていることは何ですか。

自分が作ってみようと思ったソフトウェアの核となるところだけ、とにかく早く「動く」状態に持って行くことです。他人に見せたりして話をすると、モチベーションが上がってきます。

プログラムの構造は気をつけているつもりですが、それでもなかなかうまくいかず、後で直すことも多いです。

13. 最近AIによるコーティングが話題ですが、それによりプログラマーやエンジニアの仕事内容はどのように変わっていくと思いますか。

「よくあるプログラム」は AI が書いてくれるようになると、そのぶん、新しいプログラムを書いたり、創造的な仕事になると期待しています。コンピュータに何をさせたいかは人間が決めることなので、システム全体の動作の仕組みを考える人としての側面が強くなりそうに思います。

14. 昨日初めてGitHubを使ったのですが、プログラムを作っていくうえでGitHubを使うことはありますか?

私は愛用しています。たくさんの機能がありますが、とりあえず自分のプログラムの保管場所と思うだけでも十分に便利です。

15. ソフトウェア開発におけるおすすめのフレームワークIDE はありますか?

作りたいソフトウェアの形、使うプログラミング言語によって、ここはかなり違ってきますので、フレームワークについてはお答えできません。

開発環境については、無料で使える範囲で十分高機能なので、お金をかけない範囲で試してみると良いと思います。書籍で、使い方を説明しているものとセットで選ぶのもありです。

16. この分野の魅力だと思うところは何ですか?

プログラマ、ソフトウェア開発者が持つ共通の価値観や仲間意識みたいなものが感じられることがあるのは面白いと思っています。以前指導していた学生が、海外の人とやりとりをしていたとき「英語では通じなかったけどプログラムを書いたら通じた」ということがあり、通じるものがあるんだなと感心したことがあります。

(質問ここまで)

来場いただいた皆様、質問いただいた皆様、ありがとうございました。模擬講義の内容とこの質疑が、高校生の皆さんが将来を考える際のお役に立てば幸いです。