エンジニアの会話に出てくる単語って、なんとなく意味を感じ取って、結局ちゃんと調べずにいるものがあったりするんじゃないかと思います。そんな単語をこの機会に調べてみました
ドメイン
インターネット上の住所のようなもので、インターネット上に存在するコンピューターを特定する際に使用される、一定のルールに従って作られた文字列のことを指す。
yahoo.co.jp
google.com
www.amazon.co.jp
ただし、ビジネス用語としては、企業が定めた自社の競争する領域・フィールドのことを指す(この場合、事業ドメインと呼んだりもする)。
ドメインモデリング
システムに関する業務知識(ドメイン)を簡潔に整理(要約・モデル化)し、その関係性がわかるようにすること。
因数分解
中学校の数学で習った因数分解は、
X² × Y² =(X × Y)(X × Y)
といったもの。ビジネス用語として使われる場合は、ある数字を構成している要素を細かく分解するといった意味で使われる。
例えば、年収1000万稼ぎたい場合、
年収1000万 = 年俸1000万
年収1000万 = (月給50万 × 12ヶ月)+ 賞与100万 + (副業収入月25万 × 12ヶ月)
1つの会社に勤めて1000万を目指すのか、副業など込みで1000万を目指すのかは大分戦略などが異なってくる。
エンジニアリング
ITにおいてのエンジニアリングとは
プログラムやシステムを構築し成果物を生成する技術
のことを指している。
ロジカルシンキング
物事を論理的に考えること。日本語に訳すと論理的思考。
キャッチアップ
ビジネスシーンだと、まだ目を通していない内容、事柄を後から追って理解、把握する行動を指す。
「追いつく」といったニュアンスで使われることが多い。
使用例:「新技術とかはどうやってキャッチアップしてる?」「主に技術ブログからですかね。」
デファクトスタンダード
事実上の標準という意味で使われる。
使用例:『日本製のパソコンは「WindowsOS」がデファクトスタンダードだよね。』
CI/CD
「Continuous Integration/Continuous Delivery」の略で、日本語に訳すと継続的インティグレーション/継続的デリバリー。
CI/CDは1つの技術を指すものでなく、ソフトウェアの変更を常にテストして自動で本番環境にリリース可能な状態にしておく、ソフトウェア開発の手法を意味する。
継続的インテグレーションとは、ソフトウェア開発のプロセスを自動化することで開発者がソースコードをコミットし、共有しているリポジトリにマージされることでビルドとテストが自動的に実行される手法。
継続的デリバリーは継続的インテグレーションを拡張した手法で、ビルドやテストだけでなく、リリースプロセス全体を自動化し、ビルドとテストを実行した後、テスト環境またはステージング環境にデプロイして、システムテストやUIテストをおこない、準備ができたら、リリースの承認を求め、承認されたらリリースが実行される。
CI/CDを取り入れることで、バグを素早く発見したり、変更を自動でリリースしたりできるようになる。
アジャイル開発
システムやソフトウェアの開発手法の1つで、『要件定義→設計→開発→実装→テスト→運用』といった開発工程を機能単位の小さいサイクルで繰り返す。優先度の高い要件から順に開発を進めていき、開発した各機能の集合体として1つの大きなシステムを形成し、「プロジェクトに変化はつきもの」という前提で進められるので仕様変更に強い。
“アジャイル(agile)”という単語の意味は「素早い」「機敏な」。加えて、「頭の回転が早い」というニュアンスが含まれてる。
GPL
GPL(ジーピーエル)とは、General Public Licenseの略で、ソフトウェアの利用許諾条件などを定めたライセンスの一つ。
プログラムの複製物を所持している者に対し、概ね以下のことを許諾するライセンス。
プログラムの実行
プログラムの動作を調べ、それを改変すること
複製物の再頒布
プログラムを改良し、改良を公衆にリリースする権利
LGPL
Lesser General Public Licenseの略。
GPLから条件を少し弱めたライセンスで、GPLでは派生ソフトウェアにもGPLを適用することが求められるが、LGPLが適用されたソフトウェアを実行時に動的にリンクしてその機能を使用する場合、リンク元のソフトウェアには同じLGPLを適用しなくてよく、商用ソフトウェアのようにソースコードを非公開としたり再配布等を制限することもできる。
コピーレフト
ソフトウェアの著作権に関する考え方のひとつ。改変や修正を受けて再配布されるフリーソフトウェアにはさらに改変・再配布の自由を認めるというもの。
リバースエンジニアリング
既存ソフトウェアの動作を解析するなどして、製品の構造を分析し、そこから製造方法や動作原理、設計図、ソースコードなどを調査する技法。
レプリケーション
データベースの複製を別のネットワーク上などにも置き、その複製を同時のタイミングで更新していくこと。
RDBMS
RDBMS(アールディービーエス)はRelational DataBase Management Systemの略。
リレーショナルデータベースを管理するためのソフトウェアの総称。
代表的なRDBMSはOracle Database,PostgreSQL,MySQLなど。
ガバレッジ
所定の網羅条件がテストによってどれだけ実行されたかを割合で表したもの。
モック
テスト対象に依存関係が必要な場合のために使うダミーで、ある意味テストの一部。テスト対象からの出力を受けるダミー。例えば、お誕生日メール送信バッチのテストをする際に、送信先をテストメールアドレスに変更してバッチを動かしたりする場合、そのテストメールアドレスがモック。
これと似たもので、テスト対象に都合の良いデータを出力してくれるダミーのことをスタブと呼ぶ。
ネスト
構造化プログラミングにおいてプログラムを構築する手法の一つで、あるルーチンやデータブロックの中に、別のルーチンやデータブロックがはめ込まれること。入れ子構造とも呼ぶ。
RFP
RFP(アールエフピー)とはrequest for proposalの略で、企業が情報システムやITサービスなどを調達する際に、発注先となるITベンダに具体的なシステム提案を行うよう要求すること、またはその調達要件などを取りまとめたシステム仕様書を指す。
CentOS
Linuxの種類のひとつで、Red Hat Enterprise LinuxのクローンOS。
OSコマンドインジェクション
攻撃者が脆弱性を持つアプリケーションを通じて不正なOSコマンドを送信することにより、攻撃対象となったPCやサーバに不正アクセスを行うサイバー攻撃。
不正なOSコマンドを送信する具体例としては、wgetコマンドを実行して不正なprogramをダウンロードし、chmodコマンドで実行権限を設定し、その不正なprogramを実行させたりなど。
クレデンシャル
ネットワークセキュリティの世界で使用された場合には、IDやパスワードをはじめとする、ユーザ等の認証に用いられる情報の総称を意味する。また、クレデンシャルスタッフィング(Credential Stuffing)攻撃とは、別名パスワードリスト型攻撃と呼ばれ、ユーザーアカウント情報の流出を悪用し、自動でさまざまなサービスに不正アクセスしようというサイバー攻撃のこと。
WAF
WAF(ワフ)とはWeb Application Firewallの略で、Webサーバの前面に配置して通信を解析し、Webアプリケーションの脆弱性を突いた攻撃からWebサイトを守るためのセキュリティ対策。
リバースプロキシ
逆プロキシともいい、外部(インターネット等)からのアクセスをWebサーバの代理で受ける仕組みのこと。
ロードバランサーも似ているが、一番の違いは、webサーバはクライアントにではなくリバースプロキシに応答を返し、リバースプロキシがクライアントに応答を返す点。
マイアイサム
MySQLのストレートエンジンの一つMyISAMの読み方。以前はMySQLのデフォルトストレートエンジンだったが、最近は InnoDB(イノディービィー)の方がデフォルトになっている。
ストレートエンジンとはテーブルにデータを書き込んだり読み出したりする部分を担っているプログラムのこと。
ポスグレ
PostgreSQL(ポストグレスキューエル)の呼び名。PostgreSQLはMySQLのライバルで、どちらもオープンソースRDBのデファクトスタンダード。どちらかというと、PostgreSQLが多機能、MySQLがシンプルという感じだったが、最近はMySQLもできることが増えてきた。
Window関数
Window 関数は別名 OLAP(分析)関数と呼ばれる、分析SQLを書く上でとても役立つ機能。
sum(),min(),max(),count()などの集約関数と組み合わせて使用されることが多い。
共通テーブル式
共通テーブル式とは、一時的な名前付き結果セットのこと。「WITH」から始まる構文を使うことで使用できる。
( ※その他 単語じゃないけど会話に出てきた本 )
『プログラマが知るべき97のこと』
オライリーから発売された人気の技術書。著名な現役プログラマ97人によるエッセイ集。
通称「きのこ本」「97きのこ」。
『リーダブルコード』
数多くの開発者から支持を受け、読み継がれてきた名著。良いコードを書くためのtipsが詰まっている。
『Webを支える技術』
Webの基本技術について丁寧に解説されている名著。HTTPやURI(URLのタイプミスじゃないよ)、RESTについて歴史や設計思想なども含めて知ることができる。
参考文献
ビジネスを因数分解しましょう
エンジニアリングとは。IT業界におけるエンジニアリングとその役割
ロジカルシンキングとは?これならわかる論理的アプローチ入門
「キャッチアップ」の意味は?ビジネスシーンではどう使う?
独自ドメイン?サブドメイン?ドメインについて理解しよう!
CI/CDのエキスパートが解説:CI/CDとは何か? なぜ今、必要とされるのか?
CI – 継続的インテグレーションとは?
CD(継続的デリバリー)
「アジャイル開発」とは? 特徴とメリット・デメリットをわかりやすく簡単に解説
ストレージエンジンの種類とデフォルトストレージエンジンの設定
デファクトスタンダードって何?
コピーレフト型と非コピーレフト型OSSライセンスの違いとは?
Window 関数を使いこなす(集約関数系)
レプリケーションとは
[図解]スタブとモックの違い
OSコマンド・インジェクションとは?その攻撃手法や対策を徹底解説
プロキシサーバとリバースプロキシサーバの違い
リバースプロキシって何?触りだけ学んだサーバー/インフラ入門
【3分でわかるシリーズ】CentOSとは?
ドメインをモデリングするには
あとがき
そういえば意味知らなかったな、という単語はいくつかありましたでしょうか?
私にとっては全部常識なんですが...という単語ばかり載せてしまっていたらすみません
(また、間違っている箇所ありましたら遠慮なくコメントでご教示下さい!)
初めてのジーズアドベントカレンダーだったので面白いことをやってみようと準備していたのですが、
期限内に出来上がらず、結局無難なまとめになってしまいました。
クリスマスまでには、予定していた記事もあげられたらなと思います