「6さいからのプログラミング」第14話は、基本編の最終回です。第13話までで、どのプログラミング言語を使う場合にも役に立つ基礎知識を一通り解説してきました。最後に基本編の締めくくりとして、世の中の実際のプログラムがどのように作られているのかを紹介します。世の中のプログラムに使われる言語や技術は流行り廃りが激しいため、ここで紹介するものも今後時代遅れになるかもしれません。未来とは全く新しいところから湧くのではなく、常に今の積み重ねで現れますので、どういう流れなのかを把握しておくと新技術にも適応しやすくなるでしょう。Studio」というアプリを使って「C#」で作られることが多いです。これらの言語ではいずれも、視覚的にウインドウ上にボタン等を配置して、「このボタンが押されたときにこの処理を行う」という内容を組み合わせてプログラムを作成します(図2-1)。world!」と表示するC#のソースコードです。このように「○○されたとき××を行う」という組み合わせでプログラムを作ることを「イベントドリブン」といいます。プログラムの規模が大きくなると、データと見た目を分離する「MVVMエムブイブイエム」などの手法も使われることがあります。Frameworkドットネットフレームワーク」と呼ばれる一種の仮想マシンの上で動作します(図2-2)。Frameworkは、ウインドウやボタンを作成する機能などが詰まった便利なプログラム群で、OSの上に構築されています。Frameworkを利用することでプログラムを簡単にすることができます。Frameworkを使いたくない場合は、C++を使ってOSと直接やりとりするプログラムを書きます。Studio上で1行もプログラムを書くことなくウインドウが表示できますが、C++ではウインドウを表示させるだけでも50行ほど書く必要があります(図2-3)。OSやLinuxなど、Windows以外のOSでも動作させる場合は、Javaなどの言語で作られることもあります。3ゲームプログラム次はゲームプログラムについてです。高度なグラフィックスのゲームを作るには、計算がCPUだけでは処理しきれないため、グラフィックスの計算に特化した「GPUジーピーユー」という装置を併用します。GPUはプログラム中から「OpenGLオープンジーエル」もしくは「DirectXダイレクトエックス」などのソフトウェアを通じて操作することが一般的です。GPUはCPU向けの機械語を読み込めないため、CPU向けのプログラムとは別に、GPU専用の「シェーダ」と呼ばれるプログラムを作る必要があります。シェーダはC言語などで書くことはできず、シェーダ専用の言語で書かれます。現在では、OpenGLであれば「GLSLジーエルエスエル」、DirectXであれば「HLSLエイチエルエスエル」などの言語で書かれるのが一般的です。ゲームプログラムは図3-1のように、主に「CPUの処理→GPUの処理→画面に表示」のサイクルを何度も繰り返すことで実行されます。ゲームプログラムこのサイクル1回分のことを「1フレーム」と呼び、一般的なゲームでは1秒間に60フレームもしくは30フレームで実行されることが多いです。最近ではゲームをプログラミング言語で一から作るのではなく、ゲームを容易に作ることができる「Unityユニティ」などの「ゲームエンジン」と呼ばれるソフトウェアが利用されることも多いです。ゲームエンジンを利用するとC++で一から書くよりも簡単に作れますが、作れるものには限界があるため、より高速で凝った処理をしたい場合にはC++などで作られます。4Webプログラム次はWebプログラムについてです。Webサイトは、サーバで処理したWebページを閲覧者の端末に送って、Webブラウザ上で表示する仕組みです。このため、サーバ側とWebブラウザ側との両方でプログラムを動作させることができます(図4-1)。Webプログラムサーバ側は「Perlパール」「PHPピーエイチピー」「Pythonパイソン」「Rubyルビー」などの言語で書かれることが一般的で、アクセスのたびに異なるWebページを生成することができます。図4-2の現在日時は、このWebサイトのサーバ上で生成しており、アクセスするたびに変化します。サーバ側で生成した現在日時Webブラウザ側は、かつては「Flashフラッシュ(ActionScriptアクションスクリプト)」と呼ばれる技術も広く使われていましたが、現在では「JavaScriptジャヴァスクリプト」が主流です。これらはWebページに埋め込まれて送信され、閲覧者の端末上で動作するため、閲覧者がページを読み込み直さなくてもページを更新することができます。図4-3の値はあなたの端末上で生成して更新しています。Webブラウザ側で生成した値5組み込みプログラム次は組み込みシステムについてです。PCのような汎用的なコンピュータではなく、炊飯器に組み込まれたコンピュータのような、特定の目的に特化したハードウェアとプログラムを合わせたものを「組くみ込こみシステム」といいます。組み込みシステムのプログラムでは、限られたハードウェア資源を効率良く活用することが要求されます。そのため、時にはプログラムの読みやすさを犠牲にしてでも処理効率が良くなるように工夫したり、アセンブリ言語で書く必要が生じることもあります。組み込みシステムはPCとは違い、ハードウェアの設計から開発者が行えることが多いため、ソフトウェアでの工夫に限界があるときはハードウェアの工夫で補うことができる自由さがあります。逆に、あまりに負荷の大きいプログラムを書くと発熱が問題になるなど、ソフトウェアがハードウェアの制約に縛られることもあります。6複数人開発の手法さて、ビジネスなどにおいてプログラムの多くは複数人で開発されますが、全員が理解できるプログラムを維持したり同じ目標を共有しなければ破綻するため、個人制作とは違った難しさがあります。大規模開発になると、プログラムのすべてを読むことがほとんど不可能になるため、いかにプログラムの一部を理解して編集し、バグを多く発見するかといった方法が求められます。これらは「ソフトウェア工学こうがく」という分野で研究が進んでおり、(実際にはしばしば妥協されますが)現実的に有用そうだと思われる範囲で開発に採り入れられます。複数人で大規模開発を行う際によく用いられる手法の一例を、図6-1に挙げました。誰が書いても同じようなソースコードの見た目になるように、「コーディング規約きやく」と呼ばれる書き方のルールを定めます。「関数名の先頭は大文字にする」など。機能ごとに、それがどういう機能であるかというルールを文書化します。これらのルールを「仕様しよう」と呼びます。機能を実装する人は仕様を満たすように制作し、機能を利用する人は仕様を信頼して使うことで、バグがあった場合に責任の範囲を明確化できます。テスト作成したプログラムが正しく動作するかについて「テスト」を行います。テストの手法には、各機能ごとに行うものから、全機能を統合して行うものまでいろいろあります。バージョン管理システム複数人が1つのソースコードを書き換えると変更がぶつかるため、「Gitギット」「Subversionサブバージョン」などの「バージョン管理かんりシステム」と呼ばれるツールでソースコードを管理します。サーバ上で管理するソースコードから各開発者がソースコードを取得し、編集したのちにサーバ上に変更を反映せる流れで開発します。その他このほか、開発者全員の目標をすり合わせるための手法や、短期間で素早く開発するための手法など、世の中の動向の変化に伴い新しい手法が提案され続けています。複数人開発の手法の一例7関数型言語とマルチパラダイム最後に、第3話で触れた「関数型言語」が世の中でどのように使われているかを紹介します。LISPやHaskellなどの関数型言語は、研究用途で使われることはありますが、実用的な製品を関数型言語のみで作ることは多くありません。その理由は関数型言語での開発方法があまり確立されていないことや、C++などの広く浸透している言語が使われる前提で世の中が進展していることなどがあります。関数型言語には関数型言語の利点がありますので、部分的に利用されることはあります。その方法には、関数型言語で作った部品をC++などで作った部品と組み合わせて作る方法と、C++などの言語そのものに関数型の機能を取り入れて使う方法があります。後者のような、「オブジェクト指向」と「関数型」のような複数の概念を組み合わせた言語を「マルチパラダイム言語げんご」といいます。以上で、全14回にわたる「6さいからのプログラミング」の基本編はおしまいです。ここで得た知識は、これからどのような言語を使ってどのようなプログラムを書くときにも直接役立つはずです。C言語でRPGを作ってみる前へ目次ホームへ次へ©Kuina-chan1579924069jaf。