ビルドとは
ソフトウェアのビルド(英: build)は、ソースコードファイルを独立したソフトウェア生成物に変換するコンピュータ上で実行されるプロセス、またはその結果を指す。ビルドにおいて最も重要なのはコンパイルプロセスであり、ソースコードファイルを実行ファイルに変換する。
要するに「コードを書いた後に実行できるようするまでにする作業」のこと。これまでは、NetBeansで行ってきた(「ファイルの実行」をクリックすることで、コンパイルが行われ実行された)。
Javaを用いた開発に使われるビルドツール
- Ant
- Maven
- Gradle
- etc…
Android用の開発環境であるAndroid StudioではGradleが採用されている。
NetBeansでGradleを使う
プラグイン
Gradle Supportプラグインをインストールすることで、Gradleベースのプロジェクトを作成・管理することができる。
インストール済みにあることを確認する。
プロジェクトの作成
Single Gradle Projectを選択。
プロジェクト名とメインクラス(メインメソッドを作るクラス)を指定する。メインクラスは完全修飾クラス名(パッケージ名を頭につける)で指定する。
プロジェクトには、メインクラス(Main.java)とビルドスクリプト(build.gradleとsettings.gradle)が作成される。
実行する
Main.javaに書き加える。
1 |
System.out.println("はじめてのGradle"); |
プロジェクトを右クリックして、Runをクリック。
出力ウィンドウに出力される。
外部のライブラリを使う
これまで、JDKに含まれるライブラリ(クラス)を使ってきたが、世の中には様々なライブラリが公開されている。ライブラリをプロジェクトに取り込んで使ってみよう。
GradleはMavenのリポジトリ(ライブラリが保管されているサーバ)からライブラリをダウンロードする機能があるので、Mavenのリポジトリから利用するライブラリを探すのが簡単だ。
今回は、HTMLパーサ(HTMLを解釈してあれこれするためのソフト)のJsoupを使ってみよう。MavenのリポジトリのJsoup 1.10.2のページにある、Gradle用の記述をコピーし、build.gradleのdependenciesにペーストする。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
apply plugin: 'java' sourceCompatibility = '1.8' [compileJava, compileTestJava]*.options*.encoding = 'UTF-8' if (!hasProperty('mainClass')) { ext.mainClass = 'd00000.sandbox.Main' } repositories { mavenCentral() } dependencies { testCompile group: 'junit', name: 'junit', version: '4.10' // https://mvnrepository.com/artifact/org.jsoup/jsoup compile group: 'org.jsoup', name: 'jsoup', version: '1.10.2' } |
プロジェクトを右クリックして、Reload Projectをクリックすると、依存ライブラリがダウンロードされ、プロジェクトに追加される。
Jsoupの利用例
ニュースのサイトからニュースのタイトル一覧を取得しよう。
注意: ブラウザで人間が操作するのではなく、機械的にページを取得する行為は一般に「ウェブスクレイピング(Web scraping)」というが、スクレイピングが想定されていない場合が多い(あるいは明示的に禁止されている)。ウェブから情報を取得するときには、まず専用のAPIがあるかどうか確認しよう。またスクレイピングによって情報を取得する場合も、その頻度を調整するなど、迷惑をかけないようにしよう(提供する側の立場としては、そもそもスクレイピングして欲しくない場合が多い)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
package d00000.sandbox; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import org.jsoup.Connection; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; public class Main { /** * @param args the command line arguments */ public static void main(String[] args) { // 検索する文字列 String searchWord = "静岡"; // ニュースのURL String url = null; try { url = "ニュースサイトのURL/?p="+ URLEncoder.encode(searchWord, "UTF-8") +"オプション等"; } catch (UnsupportedEncodingException ex) { System.err.println("encodingが不正です。"); System.exit(1); } // 取得したページ Document document = null; try { Connection connection = Jsoup.connect(url); document = connection.get(); // 上の2行を1行で書くと // document = Jsoup.connect(url).get(); } catch (IOException ex) { System.err.println("ページ取得に失敗しました。"); System.exit(1); } // 結果の出力 Elements titleElements = document.select("h2"); // CSSのセレクタで要素(複数)を取得 for (Element element : titleElements) { // タイトルの要素を1つ取り出す。 System.out.println(element.text()); // 要素のテキストノードを画面に表示する。 } } } |
例外処理
教科書[P.65]を参照。
ポイント:
- 例外(exception、エラーのこと)が発生したらcatch節に飛ぶ。
- 例外の種類
- チェック例外: 必ずtryでチェックしなければならない。
- 非チェック例外: チェックしなくて良い。例えば、0で除算など。