マイクロサービスの解説(応用情報技術者シラバス用語)
マイクロサービスとはマイクロサービス(Microservices)は、1つの巨大なシステムを、機能ごとに独立した複数の小さなWebサービス(サービス)に分割して開発・運用するシステム設計の手法です。従来のシステムが「すべての機能を1つにまとめた巨大なプログラム(モノリス)」だったのに対し、マイクロサービスでは機能ごとにデータベースやサーバープログラムを分け、それらがネットワークを通じて互いに通信し...
Django、Python、AWS、Linux、セキュリティ、CVE、基本情報技術者、応用情報技術者、ITパスポートの用語を、図解と実務手順で解説します。個人開発kurutann.comの検証記録や障害対応事例も公開しています。
タグ「ソフトウェア」の記事を表示中× クリア
マイクロサービスとはマイクロサービス(Microservices)は、1つの巨大なシステムを、機能ごとに独立した複数の小さなWebサービス(サービス)に分割して開発・運用するシステム設計の手法です。従来のシステムが「すべての機能を1つにまとめた巨大なプログラム(モノリス)」だったのに対し、マイクロサービスでは機能ごとにデータベースやサーバープログラムを分け、それらがネットワークを通じて互いに通信し...
コンテナオーケストレーションとはコンテナオーケストレーションは、アプリを動かすための「コンテナ(OS上で仮想的に独立した実行環境を作る技術)」を、大量かつ自動的に管理・運用する仕組みのことです。Webサービスが大規模になると、何百個、何千個ものコンテナを同時に動かす必要があり、これらを人間が手動で監視・管理するのは不可能です。コンテナオーケストレーション(代表例:Kubernetes)を使えば、コ...
DevOpsとはDevOps(デブオプス)は、システムを開発する「開発(Development)チーム」と、システムを安定稼働させる「運用(Operations)チーム」が密接に連携し、お互いに協力し合うことで、新しい機能や修正をより早く、高い品質でユーザーに提供し続けるための開発手法や組織的な文化のことです。開発チームが「新しい機能をどんどん追加したい」と考え、運用チームが「トラブルを避けるため...
CI/CD(継続的インテグレーション/継続的デリバリー)とはCI/CDは、ソフトウェアの「ビルド(プログラムを動く状態にする処理)」「テスト」「本番サーバーへの配布(デプロイ)」という一連の開発手順を自動化し、安全かつ高頻度でリリースを行うための仕組みです。CI(Continuous Integration:継続的インテグレーション)により、コードを変更するたびに自動でテストが実行されてバグが早期...
テスト駆動開発(TDD)とはテスト駆動開発(TDD:Test-Driven Development)は、実際の製品プログラムを書く前に、まず「そのプログラムが満たすべき仕様を確認するテストコード」を先に書き、そのテストに合格するように少しずつ製品プログラムを実装していくソフトウェア開発の手法です。「①失敗するテストを書く(Red)」「②テストを通る最小限のコードを書く(Green)」「③コードを綺...
リファクタリングとはリファクタリング(Refactoring)は、プログラムの「外側から見た動作(仕様や挙動)」は一切変えずに、プログラムの「内側の構造(コードの綺麗さや整理状況)」を整理して、読みやすく・修正しやすく改善する作業のことです。ソフトウェアは機能追加を繰り返すとソースコードが複雑になり(スパゲッティコード)、バグが発生しやすくなったり開発効率が落ちたりします。定期的にリファクタリング...
アジャイル開発とは アジャイル開発(あじゃいるかいはつ)とは、システムやソフトウェアを迅速(アジャイル:俊敏な)に開発するための手法の総称です。最初に完璧な計画を立てるのではなく、開発対象をいくつかの小さな機能に分割し、「計画 → 設計 → プログラミング → テスト」という短いサイクル(1〜4週間程度)を何度も繰り返しながら、徐々にシステムを完成させていきます。 家づくりに例えると、最初にプレハ...
スクラムとは スクラムとは、アジャイル開発を進めるための具体的なフレームワーク(進め方のルールや枠組み)のひとつです。ラグビーの「スクラム」のように、開発チームが一丸となって緊密にコミュニケーションを取り合い、お互いに助け合いながらプロジェクトを前進させることからこの名がついています。 スクラムでは、1週間から4週間ほどの短い期間(スプリントと呼びます)ごとに小さな目標を設定し、スプリントの最後に...
OSとは OS(オペレーティングシステム)は、コンピュータ全体を管理し、人間や他のアプリケーションソフトウェアがコンピュータを簡単に扱えるようにするための「基本ソフトウェア」です。キーボードやマウスからの入力を受け付けたり、画面に文字や画像を映し出したり、メモリやストレージの割り振りを制御したりする役割を持ちます。もしOSがなければ、私たちは自分で機械語(0と1の組み合わせ)を使ってコンピュータの...
OSとはOS(Operating System、オペレーティングシステム)とは、コンピュータを動かすための最も基本的なソフトウェア(基本ソフト)です。キーボードやマウス、ディスプレイ、ハードディスクなどのハードウェア部品を制御し、WordやExcel、ブラウザなどのアプリケーションソフトウェアが動作するための共通の土台を提供します。OSがなければ、人間が直接コンピュータに複雑な命令を送ることは非常...
プロセスとはプロセスとは、OS(オペレーティングシステム)から見て、現在実行されている「プログラムの実行単位(実行中のプログラム)」のことです。プログラムそのものはハードディスクなどの記憶装置に保存されている静的なデータですが、これをダブルクリックなどして起動し、メモリ上に展開されてCPUによって処理されている状態のものをプロセスと呼びます。各プロセスには個別のメモリ領域(作業スペース)が割り当て...
スレッドとはスレッドとは、プロセス(実行中のプログラム)の内部で、CPUが処理を実行する「最小の処理単位」のことです。一つのプロセスは、少なくとも一つのスレッドを持っています。プロセスが独自のメモリ領域を丸ごと確保するのに対し、スレッドは同じプロセス内のメモリ領域(変数やデータなど)を共有しながら、並行して処理を行います。これにより、プロセスを新しく作るよりも少ない負荷で、複数の作業を素早く同時に...
マルチタスクとはマルチタスクとは、コンピュータにおいて複数のアプリケーションや処理(タスク)を、同時に並行して実行しているように見せる機能や状態のことです。現代のコンピュータは、非常に短い時間(数ミリ秒単位)で実行するタスクを次々と切り替える(タイムシェアリング)ことで、人間にはまるで複数のプログラムが完全に同時に動いているかのように感じさせています。これにより、ユーザーは複数の作業を効率的に行え...
スケジューリングとはスケジューリングとは、OS(オペレーティングシステム)が、限られたCPUの処理時間をどのプロセスやスレッドに割り当てるかを決定し、実行順序を管理・調整する仕組みのことです。CPUの数は有限ですが、動かしたいプログラムは多数存在するため、効率的かつ公平にCPUを使わせる必要があります。代表的なアルゴリズムには、一定時間ごとに順番に処理を切り替える「ラウンドロビン」や、緊急性の高い...
排他制御とは排他制御とは、複数のプロセスやスレッドが、ファイルやデータベースなどの共通の資源(共有データ)に対して同時にアクセスした際に、データの不整合(矛盾)が発生しないようにする仕組みです。あるプロセスが共有データを書き換えている間、他のプロセスが যত্নデータを書き換えたり読み込んだりできないように「ロック(鍵)」をかけ、処理が終わったらロックを解除します。これに関連する概念として「セマフ...
デッドロックとはデッドロックとは、複数の処理(プロセスやスレッド)が、互いに相手が占占有している資源の解放を待ち合ってしまい、どちらの処理も先に進めなくなって停止(フリーズ)してしまう現象です。マルチタスクや排他制御を行うシステムにおいて、設計上の配慮が不足していると発生することがあります。デッドロックが起きると、外部から強制終了するなどの対策をとらない限り、システムが永久に待ち状態になってしまい...
仮想記憶とは仮想記憶(バーチャルメモリ)とは、コンピュータの実装されている物理メモリ(RAM)の容量を超えて、より大きなメモリ空間をプログラムに提供するOSの技術です。ハードディスクやSSDなどのストレージの一部を一時的なメモリ領域として代用することで、物理メモリの限界を超えた大きなプログラムや、多数のアプリを同時に起動できるようにします。メモリ領域を固定サイズの「ページ」と呼ばれる単位に分割して...
ページフォールトとはページフォールトとは、仮想記憶を採用しているシステムにおいて、プログラムがアクセスしようとしたデータ(ページ)が、現在物理メモリ(主記憶)上に存在せず、ハードディスクなどの補助記憶装置(仮想メモリ)に退避されている状態であるときに発生する割り込み信号(イベント)のことです。ページフォールトが発生すると、OSは該当するデータを補助記憶から物理メモリに読み込む処理を行います。その際...
ファイルシステムとはファイルシステムとは、ストレージ(ハードディスクやSSD、USBメモリなど)に保存されるデータを管理し、人間やプログラムが扱いやすいように「ファイル」や「ディレクトリ(フォルダ)」という単位で整理・操作できるようにするOSの機能や仕組みです。ファイルシステムのおかげで、ユーザーはデータが物理的にディスクのどこに書き込まれているかを意識することなく、「絶対パス(ルートからの位置)...
バックアップとはバックアップとは、データの破損、誤消去、コンピュータの故障、災害などの不測の事態に備えて、元のデータとは別の場所に同じデータを複製して保存しておくことです。バックアップの方法には、すべてのデータを毎回コピーする「フルバックアップ」、前回のフルバックアップから変更された分だけをコピーする「差分バックアップ」、前回の任意のバックアップから新しく増えた分だけをコピーする「増分バックアップ...
OSSとはOSS(Open Source Software、オープンソースソフトウェア)とは、ソフトウェアの設計図にあたる「ソースコード」がインターネット等で無償で一般に公開され、誰でも自由に改良、再配布、使用することが許可されているソフトウェアのことです。世界中の優秀なエンジニアが開発に参加し、バグの修正や機能追加が迅速に行われるため、信頼性が高く、現代のITシステムにおいて必要不可欠な存在とな...
ライセンスとはライセンス(ソフトウェアライセンス)とは、ソフトウェアの使用許諾契約や、開発者が利用者に提示する使用上のルール(利用規約)のことです。オープンソースソフトウェア(OSS)であっても、完全にルールなしで何でもして良いわけではなく、著作権の表示義務や、改変したプログラムの公開義務などの条件が定められています。代表的なライセンスには、改変したソフトウェアも同じライセンスで公開することを義務...
ウォーターフォールモデルは、要件定義・設計・実装・テストなどの工程を順番に進める代表的なソフトウェア開発モデルです。基本情報技術者試験で重要となる特徴、メリット、デメリット、手戻りが大きくなる理由、アジャイルとの違いをIPA公式シラバスVer.9.2に基づいて分かりやすく解説します。
アジャイル開発とは アジャイル開発とは、システムやソフトウェア開発において、短期間で動作するプログラムを作り、それを何度も繰り返しながら徐々に完成度を高めていく開発手法です。「アジャイル(Agile)」には「素早い」「機敏な」という意味があります。 従来の開発手法であるウォーターフォール開発では、最初にすべての設計を完璧に決めてから開発を行っていましたが、アジャイル開発では計画を細かく分け、短いサ...