コードの気持ちがわかる!プログラミングの英単語
書籍「コードの気持ちがわかる!プログラミングの英単語」から分かるポイントをまとめます。
エンジニアが抑えておくべき英単語150
コードを読み書きするなかで、英語への理解はどうしても避けて通れません。
英語のドキュメントに目を通すほどではなくとも、そもそもコードに出てくる変数や関数の名前が英語の単語からできているからです。
そういった英単語への馴染めなさは、これからエンジニアになるための学習をはじめる方にとってのハードルとなっています。
本書ではそんな「英単語」のうち150の頻出単語に焦点をあて、各単語1ページずつ、やさしく、そして楽しく紹介します。
コードを読むときに詰まってしまわないように、そしてコードを書くときに自分でも自信を持って使えるようになれる一冊です。
こんな方におすすめです。
- 以下のような初級者
- IT業界に入ったばかりで、現在プログラミングを学習中の方
- IT以外の業界で働いていたり学生だったりするなかでITエンジニアを目指している方
- 以下のような中級者
- 一からコーディングをする機会のある方、現状のプログラムを見直したい方
- APIなどの設計をする方、復習・現状の設計を見直したい方
ポイント
プログラミングをするということは、ソフトウェアなどを動かすために、0と1の電気信号を人間のわかりやすい言語で記述するということと言えます。
プログラミングをする上で上手な設計や上手なネーミングは、人間のわかりやすいというところに係ります。逆に、誰にでもわかりやすいようにプログラミングをしなければ、間違った解釈をされて誤ったプログラミングをされてしまい、アプリケーションなどの誤動作を招くことになります。
他の人がそのプログラムを見たときに、誤解なく、こういうことだよねとわかることがとても重要です。
そのためにも、プログラミングをする上で使用する英単語のお作法を知っておくことは欠かせません。
ここでは、そんな英単語のお作法のうち、特に抑えておいた方がよい英単語を厳選して紹介したいと思います。
はじめに
この場で紹介するサンプルコードは、Flutter開発をベースとして、Dart言語の例で記述します。
基本中の基本単語
is / have, has
〜である、〜を継承しているという意味でbool型、boolean型としてよく使われます。
オブジェクト指向プログラミングの「継承」においては、継承先のクラスは継承元をより具体化したものとなるから、「Dog is Animal」というように、以下のコードのようにチェックすることができます。
class Animal {}
class Dog extend Animal {}
Dog dog = Dog();
if (dog is Animal) {
print("dog is Animal");
}
また、他には主にメソッド名やカラム名で形容詞とつなげて「is◯◯」のように使います。
例えば、上記のdogがAnimalかどうかをチェックする部分を関数にした場合には、以下のように、isAnimal()とするのがよいでしょう。
class Animal {}
class Dog extend Animal {}
bool isAnimal(dynamic instance) {
return instance is Animal;
}
void main() {
Dog dog = Dog();
if (isAnimal(dog)) {
print("dog is Animal");
}
}
〜を構成要素として持つという意味で、クラスやモデルがその構成要素としてなにかを含んでいたり持っているかどうかとして、bool型、boolean型としてよく使われます。
リレーショナル・データベースで、テーブルの親子関係を表現する場合、例えば「会社は多くの社員を持つ」ならば「Company has many employees」と言えます。
また、isと同様に、変数やメソッドの命名で使われるようなケースも多くあります。
例えば、以下のコードのとおり、デバイスがネットワーク接続を持っているかどうかを確認するメソッドをhasNetworkと命名することができます。
bool hasNetwork() {
return <ネットワークの接続有無>; //true or false
}
void main() {
if (hasNetwork()) {
print("has network");
}
}
なお、checkNetworkと命名する人がいるかもしれませんが、hasNetworkの方が、返り値がboolean型であるということがよりわかりやすいため、hasNetworkとした方がよいでしょう。
その他にも、デバイスが特定の機能パーミッションを許可しているかどうかを確認するメソッドとして、hasPermissionや、FlutterでiOS/Androidのクロスプラットフォーム開発をしている場合は、デバイスがiOSかAndroidかを確認するメソッドとして、isIOSやisAndroidという命名もよくあります。
生産や前進を表す単語
fetch
行って取ってくるという意味で、主にAPIからデータを取得するメソッドに使用します。
以下のコードのように、外部のリソース(例えば、データベースやAPI)からデータを取得する関数に使用することが多いです。
Data data = null;
bool fetchData() {
if (!hasNetwork()) {
return false;
}
data = "<APIからデータを取得>";
if (data == null) {
return false;
}
return true;
}
void main() {
fetchData();
}
取得するという意味で「get」がありますが、fetchはgetよりもよりアクティブに取りに行くという意味合いが強いです。
また、getはどちらかというと、インスタンスが持つメンバー変数を出し入れする際のset/getの意味で多く用いられるため、外部のリソースから取得する場合には、getと区別するためにもfetchが相応しいでしょう。
尚、データを外部リソースから取得する際は、非同期処理で行うことが多いです。
モバイルアプリであれば、画面でローディングマークをクルクルアニメーションさせている間にバックグラウンドでデータを取得するようなイメージです。(ユーザーに知らせることなくデータ取得する場合にも使えます)
したがって、fetchメソッドでは外部のエラーが返ったり、どのようなタイミングで完了しても大丈夫なように受け口を作ることが必要です。
状態や状況を表わす単語
env, environment
環境という意味で、主に開発環境について使われます。
プロジェクトに参加したときに、セットアップや開発環境、実行環境を整える際に最初に関わるだろうキーワードだと思います。
例えば、開発環境(dev環境/develop環境)、本番環境(prod環境/production環境)、ステージング環境(stg環境/staging環境)、テスト環境(test環境/test環境)、ローカル環境(local環境)などがあります。
これらの定義がなぜ必要とされるかというと、環境ごとにURLを変えたいとか、APIキーを変えたいとか、機能を処理する/処理しないを制御したいとか、環境変数としてコード上で環境ごとに分岐させたいことがあるからです。
例えば、デバッグ情報の出力を開発環境では有効にするが、本番環境では有効にしないようにするなどです。
プロジェクト上のコードの内、env, environmentに関するワードを検索した場合は、その分岐に関わる箇所が検索結果としてヒットするはずです。
したがって、逆に検索するシーンを考えると、env, enveronmentという単語は、環境以外のところでは使用しない方が望ましいです。
async
非同期の、個々が独立しているという意味で、非同期処理を使用する際に使われます。
syncの同期するという意味の逆を指します。
前述のfetchとの相性がよいです。
例えば、GoogleやYahooなどの検索窓で、「a」と一文字入力すると、「a」ではじまるキーワードの候補が表示されます。
これはajaxの非同期処理によって、「a」という文字が入力された時点で通信がなされ、瞬時に候補リストを取得し描画していると思われます。これが非同期ではなく同期通信であれば、画面すべてを描画し直すので、画像ファイルをロードしたりするなど、もっと多くの通信が発生し時間がかかってしまいます。
ちなみに、ajaxの「a」は、asyncのことで、asynchronousの略です。
非同期処理をするメソッドの宣言や呼び出し部分についての例は以下のとおりです。
Future<bool> fetchData() async {
// 非同期処理を行うコード
}
void main() async {
var data = await fetchData();
}
fetchDataが非同期なメソッドだとわかるようにasyncを宣言しています。
それに伴い、返り値は処理が終わった際の将来はbool型を返すということがわかるように、boolではなく、Future<bool>と宣言しています。
呼び出す側は、その非同期のメソッドを同期として処理が終わるまで待ちたい場合は、awaitを付けて呼び出します。するとmain関数が終わるまでfetchDataの処理を待ち、dataには結果のbool型が格納されます。
逆にawaitを付けずに呼び出した場合は、dataはbool型ではなくFuture<bool>型として、結果が確定されない状態の値が取得され、結果を待たずにmain関数はすぐに終わってしまいます。
用途に合わせて宣言や呼び出し側の整合性がきちんと取れるように気をつけましょう。
ログによく表われる単語
deprecated
非推奨の、廃止予定のという意味で、ログや仕様書でよく見ることができます。
プログラムのコンパイル時のwarningや、気の利いたものであれば統合開発環境(IDE)でコーディング中に警告されることでよく目にします。
これは使用しているSDKのバージョンに対してプログラム上で使用している特定の機能やメソッドが古い場合など、将来的に使えなくなることを示すためによく使われます。
インターネットにある情報からコピペして使用した場合などにも、実はその記述が古くて非推奨になっているというケースもよくあります。
たいていは、代替となる機能やAPIが存在するので、警告にしたがってAPIリファレンスや仕様書を確認して最新の記述にしましょう。
無視してしまうという人もいるかもしれませんが、将来的にバグをうんだり突然動かなくなるということになり得るため、気づいたときに対処するのが望ましいです。
まとめ
本書では初心者がはじめに覚えるべき英単語がまとめられており、プログラム言語を問わずどれも納得できるものばかりです。
中級者にとっても今のプログラムが正しくかけているか確認する意味で有効かと思います。
逆に上級者にとっては分かりきったことだと少し物足りない内容かもしれません。
今回は特にコーディング規約などお作法に関わる部分や、前提知識として知っておいた方がよさそうな単語を厳選して抽出しました。
他にもたくさんピックアップしたい単語はあるのですが、それは本書を手にとって見ていただければと思います。
他に紹介されている単語を以下に挙げておきます。
ここから気になる単語だけ調べてみるというのでも良いかもしれません。
基本中の基本単語 |
create / get / find / listen / put / is / have, has / add / del, delete / success / error / push / pull / return / default / interface / commit |
モノの集まりに関わる単語 |
contain / include / length / size / range / join / union / merge / concat / append / rel, relation / association |
生産や前進を表わす単語 |
gen, generate / fetch / factory / construct / compose / skip / continue / next / dev, development / progress / complete / launch / implement / sanitise |
終了や停滞に関わる単語 |
blank / remove / quit / exit / conflict / fault / close |
データやファイルに関わる単語 |
stream / import / migrate / bin, binary / format / store / asset / dump / result / row / col, column / archive / attribute / analyze / alter / conv, convert / parse |
型に関わる単語 |
string / char / varchar / int, integer / float / decimal / set / array / hash / map |
定義に関わる単語 |
func, function / def, define / strict / local / global / scope / refer / annotate / schema |
状態や状況を表わす単語 |
env, environment / status / init, initialize / layout / offset / locale / feature / trait / context / current / async / tmp, temporary / state / prop, property / finally / entry |
権限や要求に関わる単語 |
allow / permit / auth, authorization / private / public / meta / require / depend / request / invalid |
データの受け渡しや伝達に関わる単語 |
flush / dispatch / render / submit / yield / assign / alert / exception / assert / send / path / node |
抽出や限定を表わす単語 |
ignore / except / uniq, unique / filter / trim / select / limit / match |
裏で動いてる雰囲気の単語 |
proc, process / task / service / exe, execute / kill / shell |
ログによく表われる単語 |
warning / abort / failure / var, variable / load / invoke / interrupt / exist / compress / identify / deprecated / halt |
目次
- Chapter 1:基本中の基本単語
- Chapter 2:モノの集まりに関わる単語
- Chapter 3:生産や前進を表わす単語
- Chapter 4:終了や停滞に関わる単語
- Chapter 5:データやファイルに関わる単語
- Chapter 6:型に関わる単語
- Chapter 7:定義に関わる単語
- Chapter 8:状態や状況を表わす単語
- Chapter 9:権限や要求に関わる単語
- Chapter 10:データの受け渡しや伝達に関わる単語
- Chapter 11:抽出や限定を表わす単語
- Chapter 12:裏で動いてる雰囲気の単語
- Chapter 13:ログによく表われる単語
【内容情報】
本書は、IT業界、そしてプログラミングのなかでしばしば使われる英単語を紹介し、読者のみなさんにより身近に感じてもらえるようになることを目指した書籍です。
ですから、堅苦しい英語の本だと思わないでください。ときにはイラストもまじえながら、「お節介でおしゃべりな先輩がペラペラと余計なことも含めて後輩に話しかけているけれど、なかにはためになる部分もある」、そんな本を目指して執筆しています。
「プログラミングの学習をはじめたが、なかなかうまくいかない、挫折しそう」「IT業界に入ったのだけど、やたらと横文字が使用されていて普段の業務の会話がよくわからない」…本書がそんなみなさんの助けとなれば幸いです。【著者情報】
コードの気持ちがわかる!プログラミングの英単語 内容紹介より
松元大地(マツモトタイチ)
1981年大阪市生まれ、札幌育ち。フリーランスのITエンジニアとして活動するほか、ジャンルを問わない文筆業を展開している(本データはこの書籍が刊行された当時に掲載されていたものです)
※書籍に掲載されている著者及び編者、訳者、監修者、イラストレーターなどの紹介情報です。