実行可能ファイル生成のステップ
ソフトウェア開発において、とても重要なポイントとして、
ソースコードから実行可能ファイルを生成するステップが必要となります。
そして、このステップを経て作成されたファイルは、例えばJavaプロジェクトなら、拡張子が『.jar』『.war』にあたるファイルが実行可能ファイルにあたります。
私たちが記述する『ソースコード』からコンピューターが理解できる『実行可能ファイル』を生成するには、
莫大なソースコードのコンパイル
リソースファイルや依存関係の管理
テスト実行
パッケージング
という様な、たくさんの作業が必要となります。
ビルドシステムについて
さて、前述にある通り、実行可能ファイルを用意するには莫大で複雑な作業を必要とします。
そこでビルドシステムという、これらの作業を自動化してくれるシステムを用いることで効率化を図ることが出来ます。
ビルドシステムは下記の様に、様々なものがあります。
Make(主にC言語やC++で使用される)
Apache Maven(Javaプロジェクトでよく使用される)
Gradle( Javaプロジェクトやandroid開発等でよく使用される)
Bazel(googleが開発したシステム)
どれを使うかは、使用言語やニーズによって変わってくるようです。
build.gradleシステムについて
私が今回、独学でSpringBoot学習をするにあたり、大変お世話になっているUdemyの講座のTODOアプリを作成コースを受講したのですが、このアプリではbuild.gradleを採用しているので本節も、こちらのbuild.gradleについてまとめています。
buildシステム設定ファイルには下記のセクションが設けられている。
①Pluginセクション

gradleビルドシステムの機能を拡張する
追加の機能やタスクを利用できる
と言われても、あまりピンとこない自分のために具体的にセクション内で書かれている宣言を書きます。
JAVAプラグインを使用することを宣言したり
JAVAソースコードのコンパイル、JARファイルの作成、テストの実行などをJAVAプロジェクトの基本的なビルドタスクを提供したり
Spring Bootプラグインを使用することを宣言して、Spring Boot固有のビルドタスクが提供したり、
Springの依存関係管理プラグインを使用することを宣言したり
このような宣言をプラグインセクションに書くようです。
②group/version/sourceCompatibilityセクション

Compatibilityとは互換性で、ここでいうグループはプロジェクトのグループ名という事なので、このファイルは名前の通り、プロジェクトのグループバージョンの互換性のためのセクションです。
図では、
SNAPSHOTは『開発中』を表すサフィックスです。
sourceCompatibility =’ 17′ はコンパイルされるJavaのバージョンの数字なので、今回はJava17にコンパイルされるという定義がされている。
③configurationsセクション

ここではビルド構成やコンフィグレーションを定義しています。
CompileOnlyは『コンパイル時にのみ依存関係を使用するライブラリを指定する』定義をしています。
④repositoriesセクション

ここではgradle buildスクリプト内で使用されるリポジトリーの設定を定義しています。
ここでいう『リポジトリー』は、ビルドプロセス中に依存関係の解決や、必要なライブラリのダウンロードを行うために使用されます。
⑤dependenciesセクション

プロジェクトの依存関係を指定するセクションです。
開発にあたり、様々な必要ライブラリ等をここで定義します。
ライブラリの前に書かれているimplementationやcompileOnlyはライブラリが必要とされるタイミングを指している
⑥テストセクション

テストに関する設定が定義されるセクションです。
まとめ
このビルドファイルの中でコンパイル、依存関係の管理、テスト、ライブラリがすべて管理されているのですね。
このファイルを使いこなせるレベルにはいつなるのでしょうか・・・
焦らず行きましょう私!


コメント