第9章ソフトウェア工学
Road Ahead for Software Engineeringソフトウェア工学のこれから
People have vastly different opinions as to what software engineering will be like twenty or thirty years into the future. One day, revolutionary discovery or invention may change our society in a radical way—or not. Nobody can predict when or what specific scientific breakthroughs will happen, and discoveries can shape our future in ways that are hard to imagine today. Based on our experience of the past twenty or more years, however, we can make some predictions about where software engineering may be in 2040.
英語のヒント
20年後、30年後のソフトウェア工学がどうなっているかについて、人々の意見は大きく異なる。ある日、革命的な発見や発明が社会を根本から変えるかもしれないし、変えないかもしれない。科学のどのような突破口が、いつ開かれるかは誰にも予測できず、発見によって、今日では想像しにくい形に未来が変わることもある。それでも、過去20年以上の経験に基づけば、2040年のソフトウェア工学について、ある程度の予測はできる。
Evolution of Programmingプログラミングの進化
We can, for example, predict that the evolution of current programming languages will be driven by changes in hardware and that the tools developers use will improve. But with the evolution of AI and machine learning, will software developers become obsolete? Under current circumstances, the answer is no. AI can, however, help with some developer’s tasks, such as testing, debugging, and refactoring. While we can expect that intelligent bots will be members of development teams, they will not fully replace software developers.
英語のヒント
たとえば、現在のプログラミング言語の進化はハードウェアの変化によって進み、開発者が使うツールも向上すると予測できる。だが、AIと機械学習の進化によって、ソフトウェア開発者は不要になるだろうか。現在の状況では、答えは否である。ただし、AIは、テスト、デバッグ、リファクタリングなど、開発者の作業の一部を支援できる。知的なボットが開発チームの一員になることは期待できるが、ソフトウェア開発者を完全に置き換えるわけではない。
Future of Software Developmentソフトウェア開発の未来
Now let’s discuss three questions about the future of software development:
ここで、ソフトウェア開発の未来について三つの問いを考えよう。
1. What programming languages will we use? We can expect that current programming languages will evolve, perhaps even become obsolete, by 2040, but it is hard to imagine that languages like Java, Python, C, C#, and C++ will disappear entirely because there is so much code written in these programming languages.
1. どのようなプログラミング言語を使うようになるだろうか。現在の言語は2040年までに進化し、場合によっては時代遅れになるとも考えられる。それでも、Java、Python、C、C#、C++のような言語が完全に消えるとは想像しにくい。これらの言語で書かれたコードが、非常に多く存在するからである。
2. Can we get to the point where all software is written, and we do not need any software development? Absolutely not in the near future. We are not at the end nor in the middle of a technology revolution—we are at the beginning. The importance of software in society will grow, and software systems will become more sophisticated. For example, with the Internet of Things (IoT), we will connect thousands and thousands of smart devices to the Internet, and they all will need software.
英語のヒント
2. ソフトウェアがすべて書き上がり、ソフトウェア開発が一切不要になるところまで到達するだろうか。近い将来については、決してそうならない。私たちは技術革命の終わりでも中間でもなく、始まりにいる。社会におけるソフトウェアの重要性は増し、ソフトウェアシステムはさらに高度になる。たとえばモノのインターネット(IoT)では、膨大な数のスマート機器をインターネットへ接続し、そのすべてにソフトウェアが必要になる。
3. Does it make sense to learn programming today? Absolutely. With the increased use of smart, connected devices, the integration of technology is getting more rather than less prevalent in almost all facets of life, and technology continues to offer an advantage to businesses to operate quicker, better, and more effectively than the competition. Given this, software development will become more important.
英語のヒント
3. 今、プログラミングを学ぶ意味はあるだろうか。間違いなくある。ネットワークにつながるスマート機器の利用が増える中で、生活のほぼあらゆる側面への技術の統合は、減るどころか、ますます広がっている。技術は、競合他社より速く、優れた形で、効果的に事業を進める強みを、引き続き企業にもたらす。このことを踏まえれば、ソフトウェア開発の重要性はさらに増していく。
Additionally, electronics (including computer hardware) and the way computer programming is applied continue to evolve. In the early 2000s, mobile computing and Wi-Fi connectivity changed the way computing happened. In the past decade, connectivity continued to evolve, and many new types of smart devices needed new code. Over the next few decades, changes in the core of computers, such as the creation of quantum coprocessors, have the potential to revolutionize software development yet again.
英語のヒント
さらに、コンピューターハードウェアを含む電子技術と、コンピュータープログラミングの適用方法は、進化を続けている。2000年代初めには、モバイルコンピューティングとWi-Fi接続が、コンピューティングのあり方を変えた。その後の10年間も接続性は進化を続け、多くの新しい種類のスマート機器に、新しいコードが必要となった。今後数十年には、量子コプロセッサーの創出など、コンピューターの中核の変化が、再びソフトウェア開発を革命的に変える可能性を持っている。
In 2021, the U.S. Bureau of Labor Statistics predicted that over the next decade, the number software engineering jobs in the United States will increase by 25%8 . This is, in part, because technology continues to infiltrate our daily lives. For example, many grocery chains are updating their shopping carts to include sensors that record all of the items you add to the basket area. As this automation continues and expands, it will require a lot of software developers. The current push for autonomous vehicles will be accomplished as a result of sensors and a large number of software engineers creating hundreds of thousands of lines of code. It will take years of testing, debugging, and refactoring before autonomous vehicles are as commonly accepted as a mobile phone is today. It will be software engineers who make that happen.
英語のヒント
2021年、米国労働統計局は、今後10年間で、米国のソフトウェア工学の仕事の数が25%増加すると予測した8。その一因は、技術が日常生活に浸透し続けていることである。たとえば、多くの食料品店チェーンは、買い物カートを更新し、かごに入れた品物をすべて記録するセンサーを取り付けている。このような自動化が続き、広がるにつれて、多くのソフトウェア開発者が必要になる。現在進められている自動運転車の実現には、センサーと、何十万行ものコードを書く大勢のソフトウェアエンジニアの力が必要になる。自動運転車が、今日の携帯電話のように広く受け入れられるまでには、何年ものテスト、デバッグ、リファクタリングが必要である。それを実現するのは、ソフトウェアエンジニアである。
8 Bureau of Labor Statistics, U.S. Department of Labor, Occupational Outlook Handbook, Software Developers, Quality Assurance Analysts, and Testers, at https://www.bls.gov/ooh/computer-and-information-technology/software-developers.htm (visited June 04, 2023).
8 米国労働省労働統計局『職業展望ハンドブック』「ソフトウェア開発者、品質保証アナリスト、テスター」。https://www.bls.gov/ooh/computer-and-information-technology/software-developers.htm(2023年6月4日閲覧)。