この記事は Hello World あたたたた Advent Calendar 2025 の記事です。
Delphi XE 以降の新文法や機能を使って、Hellow World あたたたたを実装します。
ここでは、Delphi XE 以降を便宜的に Modern Delphi と呼んでいます。
そもそも「Hello World あたたたた」が何かは 1日目の記事 をご覧ください。
実装例
program Atatata;
{$APPTYPE CONSOLE}
uses
System.SysUtils;
begin
Randomize;
var hako := '';
var running := True;
while running do
begin
var char := if Random(2) = 0 then 'あ' else 'た';
Write(char);
hako := hako + char;
if hako.EndsWith('あたたたた') then
begin
Writeln;
Writeln('お前はもう死んでいる');
running := False;
end;
end;
end.
実行結果
コードと文法の解説
program
Modern Delphi でも program からコードがスタートします。
program Atatata;
本来の Pascal とは違い input, output は不要です(付いていてもコンパイルされますが無視されます)。
program Atatata(input, output);
APPTYPE
APPTYPE コンパイラ指令も従来通り使えます。
{$APPTYPE CONSOLE}
APPTYPE コンパイラ指令は、このアプリケーションがコンソールアプリであることをコンパイラに伝えるものです。
Unit namespace
Modern Delphi では、ユニットを限定する Unit namespace が導入されています。
uses
System.SysUtils;
uses
SysUtils;
乱数の初期化
Modern Delphi でも乱数の初期化は Randomize です。
Randomize;
ただ、Modern Delphi では、Randomize や Random は置き換え可能になっています。
デフォルトでは乱数のアルゴリズムは線形合同法ですが、自由に変更可能です。
詳しくは、こちらをご覧ください。
インライン変数宣言
Modern Delphi では、var セクションによる宣言も可能ですが、インライン変数宣言が推奨されています。
ここでは、変数の宣言と初期値を代入しています。
var hako := '';
var running := True;
変数の型は、型推論によって自動的に決定されます。
ここでは出てきませんが、定数もインライン宣言可能です。
while ループ
Modern Delphi でも while に特に変更はありません。
while running do
begin
// 中略
end;
条件演算子
Modern Delphi では、条件演算子(三項演算子 / if 式)が使えます。
var char := if Random(2) = 0 then 'あ' else 'た';
Write(char);
文字列の結合
Modern Delphi でも文字列の結合は + 演算子ですが、文字列が非常に長い場合などは TStringBuilder が使用可能です。
TStringBuilder を使うと、通常の + 演算子よりも高速に結合可能です。
hako := hako + char
Helper
Modern Delphi では、record helper によって、構造体やプリミティブに対して、メソッドを追加できます。
String 型にはデフォルトで TStringHelper が宣言されており、あたかもクラスのメソッドのように処理を呼び出せます。
TStringHelper が提供する EndsWith メソッドを使って、文字列の最後が あたたたた か判定しています。
if hako.EndsWith('あたたたた') then
begin
// 省略
end;
また class にメソッドを追加する class helper という物もあります。
出力
出力は従来通り Write を使います。
Writeln; // 引数なしで改行のみ
Writeln('お前はもう死んでいる');
Delphi について
Delphi は Turbo Pascal を母体として、1995 年に Version 1 がリリースされました。
それ以降バージョンを重ねて、現在では Windows / macOS / iOS / Android / Linux のネイティブ・アプリケーションが作成できるようになっています。
文法についても、随時バージョンアップされています。
今回使用したものは下表のようになっています。
| 機能 | 導入されたDelphiのバージョン | 年 |
|---|---|---|
| Unit namespace | Delphi XE2 | 2011 |
| TStringHelper | Delphi XE3 | 2012 |
| インライン変数宣言 | Delphi 10.3 Rio | 2018 |
| Random32Proc, RandomizeProc | Delphi 10.4 Sydney | 2020 |
| 条件演算子 | Delphi 13 Florence | 2025 |
現在、開発販売しているのはエンバカデロ・テクノロジーズです。
近年の特徴
Delphi XE2 からクロスプラットフォーム開発環境となっています(XE は Cross-platform Edition の略です)
Windows / macOS / iOS / Android / Linux のネイティブ・アプリケーションが作成できます。
また、Delphi Communitiy Edition という無償版がリリースされています。
詳しくは、こちらをご覧ください。
ちなみに、現在のバージョン番号は
Delphi X.Y.Z L
という構成になっていて、X.Y.Z がバージョン番号、L が地名となっています。
Z はパッチリリース等で追加される場合があります。
X と L は連動しているため、メジャーリリースで地名が変わります。
現在の最新版は
Delphi 13.0 Florene
となります。
Delphi 13.0 Florence について詳しくはこちらをご覧ください。
未だに進化の続く Delphi
Delphi は 2000 年前後に一世風靡しました。
今では当たり前の property や、コード補完は Delphi から誕生しました。
当時は誰もが一度は使う「イケてる」環境だったのです。
ですが、その後、ゴタゴタがあり利用者が減少しました。
(アンダース・ヘルスバーグと Delphi チームの MS への移籍)
しかし、現在でも利用され、ほぼ毎年新しいバージョンがリリースされている「生きている」環境です。
良かったら使って見てください。
コミュニティ紹介
最後に、Delphi のコミュニティを紹介します。
Delphi Discord Server(最も活発)
Delphi に関する質問・最新情報・雑談など、とにかく情報が早いコミュニティです。
お気軽に参加できます。
Delphi Discord Server 紹介ページ
※こちらは招待リンクそのものではありません。招待リンクは遷移先ページにあります。
その他のコミュニティ
Qiita のこちらの記事に、日本語圏で参加しやすいコミュニティをまとめています。

