2024/04/21_配列(array)
■配列(array)って何?
・イメージとしては、変数という箱が複数くっついたもので、
その分だけ値を入れておけるようになった箱の集まりのようなもの
・最も基本的なデータ構造の一つで、ほとんどのプログラミング言語に存在するよ
・単純に複数の変数(データ)を連続的に並べたデータ構造で、
複数の要素(値)の集合を格納・管理するのに用いられるよ
→各それぞれの変数(データ)をその配列の「要素」と言うよ
■配列のメリット
私のような初学者だと、ふと「普通に変数じゃダメなの?」と疑問に思うときがある。
そこで配列のメリットを調べてみた。
A.概要
メリットは、変更や拡張が容易になること。
配列を用いることで、
・変数をいくつも用意する手間がかからない
・添え字演算子による統一的なアクセスおよび一括処理が可能
・処理すべきデータ個数が増減したときにも対応しやすくなる
B.詳細
配列を使わない方法では、次のように個別に用意する例がある。
int score1;
int score2;
int score3;
int score4;
int score5;
int score6;
// 例えば標準入力経由で各生徒の得点を各変数に読み込んだとする。
double mean = (double)(score1 + score2 + score3 + score4 + score5 + score6) / 6;
だが、この方法では手間がかかるし、生徒数が増減したときに、変更や拡張が大変になってしまう。
より良い解は6要素の配列を使うこと。
int score[6]; // 6要素の配列が作られる。
// 例えば標準入力経由で各生徒の得点を配列scoreに読み込んだとする。
double mean = 0;
for (int i = 0; i < 6; ++i) {
mean += score[i];
// 配列の各要素へは、変数scoreを通してscore[0]からscore[5]のようにしてアクセスする。
}
mean /= 6;
このように配列を用いることで、添え字演算子(配列やリストなどのデータ構造から要素を取得するために使用される演算子のこと)による、統一的なアクセスおよび一括処理が可能となる。また、処理すべきデータ個数が増減したときにも対応しやすくなる。
■注意点
注意点としては、配列の要素は同じ型のものにするのが原則!
例えば数字なら数値型、文字なら文字列型と列の要素の型を統一する必要がある。
ただし言語によっては要素ごとに異なる型のデータを格納できる言語がある模様。
■補足:「添字」って?
「添字」は配列の要素を識別するための番号で、配列の箱に0から順番に割り当てられている。「0」から始まるところがポイント。
データ全体はコード中で配列名で指し示されていて、各要素は通し番号などの添字で区別される。
例えば、長さ5の整数型の配列変数xを宣言すると、x[0]からx[4]まで5つの整数型の変数が用意され、それぞれ独立に整数値を格納することができる。
【参考引用元】
① 配列とは|「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典
② 配列とは - 意味をわかりやすく - IT用語辞典 e-Words
2024/04/13_JRE(第2回)
■背景
この記事の続編として書きました。
■JDKとの違い
「JDK」と「JRE」の区別がわかないということはよくあることだと思う。
私もいまいち区別ができなかったので、イメージがしやすい様に調べた。
「JDK」(Java Development Kit)とは、Javaプログラミング言語で開発するのに、必要なツールセットのこと。開発者は、このJDKを使用して、Javaアプリケーションを開発する。
これに対して、「JRE」はJava開発キット(JDK)の一部で、JDKに含まれている。
JDKをインストールするとJREも同時にインストールされる。JREはJavaアプリケーションの実行に必要な基盤であり、JREをインストールしておくことで、Javaアプリケーションを実行することができる。
■要はJREは実行することが役割
要はJREは、Javaアプリケーションを実行するのが役割ということ。
具体的な例としては、コンピュータにJDKではなく、JREのみ導入されていると、javacコマンドは使えないけど、javaコマンドは使えるなど。
JDKからjavacなどの開発用途のツールを除き、実行専用のツールのみを含んだのが、JREというパッケージ。
ただ昔は、JRE単体としてオラクル社などが無償で公開していたが、近年はJDKのみしか配布されない傾向にあるみたいなので、両方使えることがほとんどみたい。
■感想
JDKが開発ツールで、JREが実行用のツールというイメージは結構わかりやすく、区別しやすくなったなと。
厳密には違うんだろうけど、区別のイメージとしては理解しやすいなと思った。
2024/04/06_JRE
■きっかけ
流石にJREは初歩なので、知っているから調べることないだろと思っていたが、この記事を書いているときに、抽象的にしか知らなかったので興味が出て、調べてみた。
■JREって何?
「Java Runtime Environment」の略称で、Java 開発キット (JDK) の一部。
Javaアプリケーションプログラムを実行するために必要なランタイム環境を提供するソフトウェアのこと。
これくらいのざっくりした内容は知ってるけど、具体的なことがわからない。
■具体1
「JRE(Java Runtime Environment)」には、以下が含まれている。
Javaプログラムを実行するエンジン
②JavaクラスライブラリJavaプログラミング言語の標準クラスやAPIが含まれている
③その他のランタイムコンポーネントJava実行環境の正常な動作に必要な補助的なファイルや機能が含まれている
上記によって、Javaアプリケーションの実行や動作に必要な機能を提供している。
■感想
調べてるうちにどんどん興味が湧き、深掘りしていったが、結構長くなりそうなので一旦ここで区切ろうと思う。ただ調べると意外に面白かった。
2024/03/24_JREシステム・ライブラリって何だ?
■きっかけ
この記事きっかけで調べてみた。
■JREシステム・ライブラリって何だ?
簡単に説明すると、
Java Runtime Environment(JRE)の一部で、Javaプログラムの実行に必要な標準のJavaクラスライブラリやランタイム環境のこと
ランタイム環境というのは、簡単に理解すると、
ソフトウェアが実行される際に必要な環境やライブラリのこと
■ざっくりとは理解したが
上記でなんとなくは理解したが、具体的に何を指しているのか知りたくなった。
具体的に説明すると
「JREシステム・ライブラリ」には多くのクラスやメソッドが
含まれているが、代表的なパッケージをいくつか挙げると
以下のようなものがある
1. java.lang パッケージ
Javaの基本的なクラスやデータ型(例:String、
Integer、Object)が含まれている
2. java.util パッケージ
様々なユーティリティクラス(例:ArrayList、HashMap、
Date)が含まれている
3. java.io パッケージ入出力操作を行うためのクラス(例:File、InputStream、
OutputStream)が含まれている
4. java.net パッケージネットワーク通信を行うためのクラス(例:URL、
URLConnection、Socket)が含まれている
5. java.awt パッケージ抽象ウィンドウツールキット (AWT) のコンポーネント
(例:Frame、Button、TextField)が含まれている
6. java.swing パッケージSwingコンポーネント(例:JFrame、JButton、JTextField)が
含まれている
7. java.lang.reflect パッケージリフレクション機能を提供するクラス(例:Class、Method、
Field)が含まれている
■要は「ライブラリ」
「JREシステム・ライブラリ」という小難しい言葉で、ピンときていなかったが、結局は「ライブラリ」だとということ。
上記に記載したようなパッケージ、クラスを含んだ「ライブラリ」だということ。
■「標準ライブラリ」との関係性は?
上記に記載したようなパッケージを含んでいるとことは、きっと「標準ライブラリ」と関係があるのではと思い、そこも調べてみた。
「JREシステム・ライブラリ」は「標準ライブラリ」を含んでいて、それ以外にもJavaプログラムの実行に必要なその他のリソースを含んでいるみたいだった。
■感想
大分「JREシステム・ライブラリ」がわかったので、良かった。
ただ「標準ライブラリ」を含んでいるので、「JREシステム・ライブラリ」のバージョンとJavaのバージョンが密接に関係しているのはわかっているけど、「JREシステム・ライブラリ」のバージョンを変えたら、Javaのバージョンが変わるという流れではないみたい。
あくまでもJavaのバージョンは、「JRE」によって決まるみたいなのだけど、「JRE」がよくわからないので、そこをしっかりと理解しないとなと思った。
※参考元は主に生成AIで調べた内容なので、具体的な記事はなし
2024/03/16_ビルドエラー(アンバインド)
■きっかけ
業務でEclipseでコンパイルをしたときに、次のビルドエラーが発生し、解消方法を調べたので、アウトプットしてみた。
■エラー内容
業務であるプロジェクトを新規チェックアウトし、ビルドしたところ、突然次のビルドエラーが出た。
「プロジェクト'xxx(チェックアウトしたプロジェクト名)'のクラスパス・コンテナー'JREシステム・ライブラリー[JDK5]'がアンバインドされています」
対象プロジェクトの「ビルドパスの構成」から「ライブラリー」タブを確認したら、
❌のアイコンに
「JREシステム・ライブラリー[JDK5](アンバインド済み)」
と表示されていた。
■解消手順
下記で手順を行ったら、解消された。
- 対象のプロジェクトの「ビルドパスの構成」から「ライブラリー」タブを選択
- 「JREシステム・ライブラリー[JDK5](アンバインド済み)」を「除去」する
- 「ライブラリーの追加」を選択し、そのウィンドウを表示
- 「JREシステム・ライブラリー」を選択し、「次へ」を押下
- 「ワークススペースのデフォルトJRE(D)(jre 1.8.0_202)」を選択し、「完了」を押下
2024/03/09_マッピングについて簡単に調べてみた
■きっかけ
この記事を書いてる時に、「マッピング」という言葉が出てきたので、興味本位で調べてみました
■マッピングって?
マッピングとは、ある情報に関して「位置付けを割り当てること」や「対応付けること」などという意味で、さまざまな分野で使われる用語である。
殊にデータ処理などの分野では、異なるシステムの項目や要素のうち、同じものを指し示しているものを関連付ける作業や処理をデータマッピングという。
これにより、一方のシステムの特定の項目の内容を変更すると、もう一方のシステムに自動的に伝達されて対応付けられた項目に反映されるといった処理を行うことができるようになる。
要は、「関連付ける」ということで、「何かと何かを対応させて関連付けること」ぐらいの理解でいいと思う。
■難しいやつ
調べていたら、次の説明も見つけた。
O/Rマッピング(Object / Relational Mapping)と言った場合には、C言語などオブジェクト指向言語で扱われるオブジェクトと、RDB(リレーショナルデータベース)のレコードを対応付け(マッピング)することを意味する。O/Rマッピングを行うことによって、RDBのレコードをオブジェクトとして直感的に扱えるようになり、RDBに関わるプログラムをシンプルに記述することが可能となる。
まあ、これも「関連付ける」ぐらいの理解でいいかなと。
【参考先】
マッピングとは - 意味をわかりやすく - IT用語辞典 e-Words
2024/03/03_マップって何?(ざっくり概要)
■きっかけ
現場でよく「マップ」とか、「マップに詰める」という言葉をよく聞き、しっかり調べることなく、今まで来たので、今回しっかり調べようと思い、アウトプットがてら、記事にしてみた。
■マップって?
ざっくりと、説明すると
この「マップ」というのは、データ構造のマップ(Map)のことを指している。
複数のデータをまとめて管理するデータ構造の一種で、あるデータと別のデータを
一対一に対応付けて、保存するものを「マップ(Map)」という
一対一に対応付けるというのは、
「キー」を「値」に紐付けること。
だから、
「キーを値にマッピングする」という意味合いで、「マップ」と呼ばれている。
■ちなみに
Mapにはいくつかの別名があり、「連想配列」(associative array)、「ハッシュ」(hash)、「辞書」(dictionary/ディクショナリー)などと呼ばれることもある。
■感想
現場で「マップ」というのは、「ハッシュマップ」のことというのはわかっていたが、「連想配列」と言う人も結構いて、やっぱり同じことを言ってるんだなと思った。
また「キーを値にマッピングする」という意味合いで、「マップ」と呼ばれるというのは、面白かった。
ちなみに下記のような注意点も記載があり、自分に当てはまったので、それも記載しようと思う。
■注意点
プログラミング経験者のなかには、「Mapは配列のようなものだ」というイメージをもっている人もいるでしょう。たしかに、どちらも複数のデータを格納しておけるデータ構造だという点については共通です。加えて、インデックス(添字)で要素にアクセスできる配列と、キーで値にアクセスできるMapは使い方も似たところがあります。ただし、配列ではインデックスに整数値しか指定できません。これに対し、Mapには整数以外の型もキーとして使用できるなどの特徴があります。
#エンジニア初心者 #アウトプット