Hello World あたたたた Delphi編
この記事は Hello World あたたたた Advent Calendar 2025 の記事です。
今日はDelphiで Hello World あたたたた を実装して解説していきます。
そもそも「Hello World あたたたた」が何かは 1日目の記事 をご覧ください。
コーディング例
Delphi IDEでコンパイル・実行できます。
program hello_world;
{$APPTYPE CONSOLE}
uses
System.SysUtils,
System.StrUtils;
var
hako: string;
running: Boolean;
char: string;
lastFive: string;
begin
// ランダムジェネレータを初期化
Randomize;
// 変数の初期化
hako := '';
running := True;
// メインループ
while running do
begin
// 0か1をランダムに決める
if Random(2) = 0 then
char := 'あ'
else
char := 'た';
// 画面に char を出力
Write(char);
// char を hako に追加
hako := hako + char;
// 最後の5文字を取得(文字列が5文字以上の場合)
if Length(hako) >= 5 then
begin
lastFive := RightStr(hako, 5);
// 最後の5文字が「あたたたた」なら
if lastFive = 'あたたたた' then
begin
WriteLn; // 改行
WriteLn('お前はもう死んでいる');
running := False;
end;
end;
end;
// プログラム終了前に改行を追加(見やすくするため)
WriteLn;
end.
コードと文法の解説
プログラムの構造
Delphiのプログラムは program キーワードで始まります。
program hello_world;
-
programの後にプログラム名を指定 - プログラムの最後は
end.で終了(ピリオドが必要)
コンソールアプリケーションの指定
{$APPTYPE CONSOLE}
-
{$APPTYPE CONSOLE}ディレクティブでコンソールアプリケーションとして設定 - これにより、コマンドプロンプトで実行可能なプログラムになります
ユニットの使用(uses)
uses
System.SysUtils;
-
uses節で必要なユニット(ライブラリ)をインポート -
System.SysUtilsは文字列操作などの標準的な機能を提供
変数の宣言(var)
Delphiでは変数を var セクションで宣言します。
var
hako: string;
running: Boolean;
char: string;
lastFive: string;
-
varセクションで変数を宣言 -
変数名: 型名;の形式で宣言 -
stringは文字列型、Booleanは真偽値型(TrueまたはFalse) - ちなみに、定数は
constセクションで宣言
変数の代入
hako := '';
running := True;
-
:=は代入演算子(右の値を左の変数に入れる) - 空文字列は
''で表現 -
Trueは真を表すBoolean値
繰り返し(while)
条件が True の間ずっと処理を続けます。
while running do
begin
// 繰り返したい処理
end;
-
runningがTrueなら続ける -
beginとend;でブロックを囲む - 条件が
Falseになったらループを抜ける
条件判定(if / else)
Delphiの条件分岐は 明確で読みやすい。
if Random(2) = 0 then
char := 'あ'
else
char := 'た';
-
=は「等しいかどうか」を判定 -
thenの後に条件が真の場合の処理を記述 -
elseの後に条件が偽の場合の処理を記述 - 複数行の場合は
beginとend;で囲む
文字の出力(Write / WriteLn)
Delphiには複数の出力関数があります。
Write(char); // 改行しない出力
WriteLn; // 改行のみ
WriteLn('お前はもう死んでいる'); // 改行付き出力
-
Write()は改行しない出力 -
WriteLn()は改行付き出力(引数なしでも改行のみ)-
#13#10などの形でASCIIコードを指定した出力もできるので、Write(#13#10);でも改行を出力できる
-
- 文字列は
''で囲む
文字列の連結
Delphiの文字列は + でつなげられます。
hako := hako + char;
- 前の文字列に後ろの文字を追加する
-
:=で代入
文字列から最後の5文字を取り出す
StrUtils ユニットの RightStr 関数を使うと、文字列の終端から指定した文字数を取得できます。
uses
System.SysUtils,
System.StrUtils; // RightStr関数を使うために追加
// 使用例
lastFive := RightStr(hako, 5);
-
RightStr(文字列, 文字数)の形式 - 文字列の終端から指定した文字数を取得
乱数生成(Random)
Delphiは標準で Random 関数を持っています。
Randomize; // ランダムジェネレータを初期化
if Random(2) = 0 then // 0または1をランダムに生成
-
Randomizeでランダムジェネレータを初期化(プログラム開始時に1回呼ぶ) -
Random(n)は 0 〜 n-1 の整数をランダムに返す - この例では 0 → あ、1 → た という形で使用
Delphiの概要と歴史
Windowsアプリケーション開発の老舗言語。RAD(Rapid Application Development)ツールとして、GUIアプリケーションを短時間で開発できることで知られています。
近年はクロスプラットフォーム開発にも対応し、Windows、macOS、iOS、Android向けのアプリを単一のコードベースで開発可能になりました。
Turbo Pascalの後継として開発されており、C#の開発にDelphi開発陣が参加したことで影響を与えているとの話もある。
Delphiの特徴
- RAD開発: ビジュアルデザイナでGUIを簡単に作成できる
- 強力な型システム: コンパイル時に型チェックが行われるため、バグを早期発見できる
- 豊富なコンポーネント: VCL(Visual Component Library)やFireMonkeyで多くのUIコンポーネントが利用可能
- クロスプラットフォーム: 単一コードベースで複数プラットフォームに対応
- データベース連携: 強力なデータベースアクセス機能を標準搭載
- 高速な実行速度: ネイティブコードにコンパイルされるため実行速度が速い
Delphiの歴史
- 開発者: ボーランド(現在はエンバカデロ・テクノロジーズ)
- 誕生: 1995年
- 名前の由来: 古代ギリシャの都市デルフォイ(Delphi)から。アポロンの神託で有名な場所
- 前身: Turbo Pascal(1983年)から発展
- 現在: エンバカデロ・テクノロジーズが開発・販売。Community Editionが無料で利用可能
Delphi Community Editionについて
今回の動作確認には、Delphi 12 Community Editionを使用しました。
詳細は エンバカデロの公式サイト をご覧ください。
個人的なコメント
DelphiといえばVisual Basicと並びたつRADツールという印象が残っています。
Windowsアプリを初めて作ったときはVisual Basic 2.0だったので、仕事でDephiを使うことになったとき(といっても10年近く前)には懐かしみがあったのも、今は良い思い出です。
おまけ
Cursorが書いてくれたから 説明用はCLIアプリとして書いていますが、IDEは以下のような画面です。

