スタックの解説(基本情報技術者シラバス用語)
スタックとはスタック(Stack)とは、データを一時的に保存するデータ構造の一種で、最初に入れたデータが最後に出てきて、最後に入れたデータが最初に出てくる「後入れ先出し(LIFO:Last In, First Out)」というルールで管理される仕組みです。データを積み上げるイメージで、一番上にデータを追加する操作を「プッシュ(Push)」、一番上からデータを取り出す操作を「ポップ(Pop)」と呼び...
Django、Python、AWS、Linux、セキュリティ、CVE、基本情報技術者、応用情報技術者、ITパスポートの用語を、図解と実務手順で解説します。個人開発kurutann.comの検証記録や障害対応事例も公開しています。
スタックとはスタック(Stack)とは、データを一時的に保存するデータ構造の一種で、最初に入れたデータが最後に出てきて、最後に入れたデータが最初に出てくる「後入れ先出し(LIFO:Last In, First Out)」というルールで管理される仕組みです。データを積み上げるイメージで、一番上にデータを追加する操作を「プッシュ(Push)」、一番上からデータを取り出す操作を「ポップ(Pop)」と呼び...
サイバーセキュリティ基本法とはサイバーセキュリティ基本法とは、日本国全体のサイバーセキュリティに関する基本理念を定め、国や地方自治体、重要インフラ事業者などが果たすべき責務や方針を明確にした法律です。インターネットの普及により、サイバー攻撃が国の安全保障や国民の生活に重大な影響を及ぼすようになったため、国が一丸となって防衛力を高めるための「指針」として制定されました。この法律に基づき、国全体のセキ...
テスト駆動開発(TDD)とはテスト駆動開発(TDD:Test-Driven Development)は、実際の製品プログラムを書く前に、まず「そのプログラムが満たすべき仕様を確認するテストコード」を先に書き、そのテストに合格するように少しずつ製品プログラムを実装していくソフトウェア開発の手法です。「①失敗するテストを書く(Red)」「②テストを通る最小限のコードを書く(Green)」「③コードを綺...
SaaS(Software as a Service / サース)とは SaaS(サース)とは、これまでパソコンにCD-ROMなどからインストールして使っていたソフトウェアを、インターネット経由で(主にブラウザを使って)サービスとして提供する仕組みのことです。ユーザーはインターネットにつながる環境であれば、自宅のパソコンでもスマートフォンのアプリでも、同じデータにアクセスして作業を行うことができま...
キューとはキュー(Queue)とは、データを一時的に保存するデータ構造の一種で、最初に入れたデータが最初に出ていき、最後に入れたデータは最後に出ていく「先入れ先出し(FIFO:First In, First Out / 待ち行列)」という規則で管理される仕組みです。列の最後尾にデータを追加する操作を「エンキュー」、列の先頭からデータを取り出す操作を「デキュー」と呼びます。具体例プリンターの印刷処理...
kurutann.comの /myroom/town/ で動く3D MMO風タウン&アクションRPGの全実装を開発者目線で解説。税制・王政・NPC系図シムから城壁の菱形数学、決定論シード生成、冪等報酬、cronなしの経過まとめtick、TypeScript 7.0移行まで、個人VPS 1台でMMOを成立させた設計の記録です。
NISCとはNISC(National center of Incident readiness and Strategy for Cybersecurity:内閣サイバーセキュリティセンター)とは、日本の政府機関や重要インフラ(電力、金融、通信など)を守るためのサイバーセキュリティ対策を、国全体の司令塔として企画・調整する組織です。内閣官房に設置されており、国や社会にとって極めて重要なシステムが...
リファクタリングとはリファクタリング(Refactoring)は、プログラムの「外側から見た動作(仕様や挙動)」は一切変えずに、プログラムの「内側の構造(コードの綺麗さや整理状況)」を整理して、読みやすく・修正しやすく改善する作業のことです。ソフトウェアは機能追加を繰り返すとソースコードが複雑になり(スパゲッティコード)、バグが発生しやすくなったり開発効率が落ちたりします。定期的にリファクタリング...
クラウドコンピューティング(Cloud Computing)とは クラウドコンピューティングとは、自社で高価なサーバーや大容量のハードディスクなどの物理的な機器を購入・管理する代わりに、インターネット(クラウド)経由で、必要な時に必要な分だけ、コンピューターの処理能力やストレージ(データ保存領域)をサービスとして借りて利用する仕組みです。初期費用を抑え、必要な分だけ料金を支払う従量課金制が一般的で...
木構造とは木構造(Tree Structure)とは、データ同士のつながりを親子関係(階層的)で表現したデータ構造です。樹木を逆さまにしたような形で表され、最上位にある一番大元の要素を「根(ルーツ)」、そこから枝分かれした途中の要素を「節(ノード)」、枝の最下端にある要素を「葉(リーフ)」と呼びます。上から下へ一方通行の親子関係があるのが特徴です。具体例パソコンのフォルダ(ディレクトリ)管理がもっ...
中小企業の情報セキュリティ対策ガイドラインとは「中小企業の情報セキュリティ対策ガイドライン」とは、独立行政法人情報処理推進機構(IPA)が作成・公開している、ITの専門知識を持つ人材が不足しがちな中小企業に向けて、セキュリティ対策の進め方を分かりやすく解説した手引書(ガイドライン)です。予算や人手が限られている中小企業でも、まず「身の丈に合った対策」から始められるよう、30項目の基本対策リストや、...
EVM(アーンドバリューマネジメント)とはEVM(Earned Value Management)は、プロジェクトの「進捗状況」と「かかったコスト(予算)」を、どちらも「金額(お金の価値)」という統一されたモノサシに換算して評価するプロジェクト管理の手法です。従来の「スケジュールは予定通りだが、予算は予算オーバーしている」といった感覚的な状況把握ではなく、実行された作業の価値(アーンドバリュー)を...
RFP(Request for Proposal / 提案依頼書)とは RFP(提案依頼書)とは、企業が新しい情報システムの開発や導入を外部のIT会社(システム開発会社など)に依頼する際に、自社が実現したい要件や目的、予算、スケジュールなどをまとめて提示する公式の書類です。RFPを複数の会社に提示することで、それぞれの会社から自社の要望に沿った最適な「提案書」や「見積書」を作成してもらい、公平に比...
二分探索木とは二分探索木(Binary Search Tree)とは、木構造の中でも「各ノード(要素)が持つ子供は最大で2つまで(二分木)」であり、かつデータが一定の配置ルールに従って整理された構造です。そのルールとは、「あるノードを基準として、その左側には親より小さい値、右側には親より大きい値のデータだけを置く」というものです。この配置により、目的のデータを検索するスピードが非常に早くなります。...
クリティカルチェーン法とはクリティカルチェーン法(CCPM:Critical Chain Project Management)は、プロジェクト全体の期間をできる限り短縮し、予定通りの納期に完了させるためのスケジュール管理手法です。従来の管理方法では、各作業の担当者が遅れを恐れて個別のスケジュールにそれぞれ「安全余裕(バッファ)」を隠し持っており、結果としてバッファが使い果たされて遅延が発生しがち...
RFI(Request for Information / 情報提供依頼書)とは RFI(情報提供依頼書)とは、企業が新しいシステム構築の検討を始める初期段階で、複数のIT会社に対して、それぞれの会社が持つ技術や製品の情報、過去の実績などの提供を依頼する書類です。まだ具体的な要件が決まっていない段階で、市場にはどのようなシステムや解決策(ソリューション)があるのかを広く調べ、発注先の候補を絞り込む...
ヒープとはヒープ(Heap)とは、木構造(特に完全二分木)を利用したデータ構造の一種で、「親ノードの値が、子ノードの値よりも常に大きい(または常に小さい)」という親子関係のルールを木全体で保っている状態のことです。このルールを守ることにより、木の一番上(根)には常に「最大値」または「最小値」のデータが配置されることになります。最大(小)値を素早く取り出す用途に適しています。具体例「優先度付きのタス...
リスク対応戦略とはリスク対応戦略は、プロジェクトの遂行において発生する可能性のある様々な不確実なイベント(リスク)に対して、事前にどのように対処するかを決める計画・アプローチのことです。リスクへの対応方法は、主に「回避(発生源を除く)」「転嫁(他者に押し付ける)」「軽減(発生確率や影響を下げる)」「受容(起きたら受け入れる)」の4つに分類され、リスクの影響度や発生確率、対策費用などを考慮して使い分...
要件定義(Requirements Definition)とは 要件定義とは、システム開発のプロジェクトにおいて、開発に取り掛かる前に「新しく作るシステムで何を実現したいのか」「どのような機能を盛り込むべきか」を明確にし、ドキュメント(要件定義書)にまとめる作業のことです。発注元(顧客)と開発会社(システムエンジニア)が話し合い、お互いの認識にズレがないようにすり合わせる最も重要な工程です。ここが...
ハッシュ表とはハッシュ表(Hash Table)とは、「ハッシュ関数」と呼ばれる特別な計算式を用いて、探したいデータの「キー(名前など)」から、そのデータが格納されるメモリ上の「アドレス(インデックス番号)」を直接算出して管理するデータ構造です。最初からデータの場所が計算で分かるため、データ数が膨大になっても、データの追加や検索をほぼ一瞬(一定時間)で行うことができます。具体例会員名簿データベース...
ファンクションポイント法とはファンクションポイント法(FP法:Function Point)は、開発するソフトウェアの「規模」や「開発工数(必要な人数や時間)」を見積もる手法の1つです。プログラムの「行数」を数えるのではなく、ユーザーから見たソフトウェアの「機能(インプット画面の数、レポート出力の数、連携するデータベースの数など)」の件数と、それぞれの「複雑さ(難易度)」を基準にポイントを点数化し...
外部設計(External Design / 基本設計)とは 外部設計(基本設計)とは、要件定義で決まった「システムで実現したいこと」をベースに、システムの「使い手(ユーザー)から見える部分」を設計する工程です。システムの操作画面のデザイン(ボタンの配置や入力項目など)や、どのような帳票(レポート)を出力するか、他システムとどのようにデータをやり取りするかといった仕様を決定します。ユーザーが使いや...
グラフとはグラフ(Graph)とは、データ同士の複雑な「つながりや関係性」を表現するためのデータ構造です。個々のデータを「頂点(ノード)」、つながりを示す線を「辺(エッジ)」と呼びます。辺に矢印(向き)があるものを「有向グラフ」と呼び、一方通行のルートなどを表します。向きがないものは「無向グラフ」と呼び、双方向のつながりを表します。具体例電車の路線図が代表的な例です。各駅が「頂点」、駅間をつなぐ路...
SLM(サービスレベル管理)とはSLM(Service Level Management:サービスレベル管理)は、ITサービスの提供者と利用者の間で、サービスの品質水準(信頼性、可用性、パフォーマンスなど)について事前に合意を取り交わし(SLA)、その合意内容が確実に維持されるように、サービス品質を継続的に測定・評価・改善していく一連の運用管理プロセスのことです。単にシステムを動かすだけでなく、「...