三項演算子が追加されたObjectPascalを見てPerlの未来を想う

ht-kittan
2025-08-28
2025-08-28


8月の初め頃に「ObjectPacalに三項演算子が追加される」というニュースを見て、「ぇ?いまさら?」と思うとともに、こんなにレガシーで枯れたプログラミング言語に対して、基本レベルの言語文法が追加されることに、ある種の感慨深さを持って見ています。

RAD Studio 13 で導入予定の新機能:Delphi 言語の条件演算子(三項演算子)


三項演算子とは?

ある変数に対して選択的に値を代入したい場合に利用できる演算子です。
なくても if文 で代用できるので「なくても別に困らない」構文ですが、1行でスッキリ書ける所がポイントです。

三項演算子を使わずに、例えばPHPで下記にような処理が想定される場合、

# if 文で書く場合:PHP
if( $num >= 10){
    $target = 100;
} else {
    $target = 1;
}
nのレスポンスが返ってきますのでスマート電球のデバイスIDを控えます。

三項演算子を使うと、同じ処理が下記のように1行でスッキリ書けます。

# 三項演算子で書く場合:PHP
$target = ($num >= 10) ?  100 : 1;

三項演算子を実用で使うかどうかは賛否や好みがありますが、「条件判断による2択での選択的代入」という状況では、構文自体が「選択的代入」であることを示せるので、三項演算子の使用に適しています。
一方で、「if文」の代用として何でもかんでも三項演算子で書くのは推奨されません。開発会社によっては、if文の代用での三項演算子の使用を禁止しているところもあります。

慣れればパッと見て全容が判りやすいことや、ひと目で選択的代入であることが理解できるので、状況次第では有用です。また、多様な書き方が許容されているということは、プログラミング言語の豊かさとも言えるでしょう。

三項演算子は、いろいろな言語に似たような構文で用意されています。

# JavaScriptの三項演算子
target = (num >= 10) ? 100 : 1;
# Rubyの三項演算子
target = (num >= 10) ? 100 : 1
# Perlの三項演算子
$target = ($num >= 10) ?  100 : 1;
# C++の三項演算子
target = (num >= 10) ? 100 : 1;
# Pythonの三項演算子
target = 100 if $num >= 10  else 1;

多くは C言語の構文を踏襲した「条件式 ? trueのときの処理 : falseのときの処理」構文でありとても似ていますね。Pythonだけは、自然言語的に理解しやすい構文で「新しい言語」という印象であることがわかります。

昔話:レガシーな言語を振り返る

私は、若い時(20年以上前)に一時期DelphiすなわちObjectPascalがメイン言語だった時代があります。その前にC言語系を触っていた身からすると「三項演算子ほしいな」と思ったことは何度かありました。そこから二十数年、いまさら追加されるとは本当に驚きです。

COBOLやPerlなどと同様「一世を風靡したのにオワコンに向かっている」とかなり前から言われていたObjectPascalです。しかし、三項演算子くらいの基本レベルの文法追加が行われるということは、積極的にプログラミング言語としてのアップグレードが行われ続けているということであり、開発元はもちろんのこと、開発者コミュニティも「まだ終わってない」という風に感じます。

私は最近ではいろいろな言語を必要に応じて使っていますが、長い間、Perlをメイン言語として仕事で使ってきました。「一番たくさん自分でソースコードを書いた言語」はおそらくPerlだと思いますし、かつては胸を張って「Perlエンジニア」を名乗っていました。ですので、ちょっとした羨望の眼差してこの「ObjectPascalへの三項演算子の追加」を見ているところもあります。

オワコン仲間としてPerlとObjectPascalを眺めてみる

Perl:Perl6が出るや出ないやで迷走してRakuと名前を変えて出たものの受入れられず、その後2020年頃に謎のPerl7が発表されたり、未だにPerlとしては 5.X系(2025年8月27日時点で5.42.0)が正統血統として認識されているPerl。

ObjectPascal:プログラミング言語として近代的な要望を取り込みながら、Delphiの名のもとに単一の企業が(何度か買収が行われて母体は変わっているものの)一定のポリシーを持って開発を続けているObjectPascal。

# ObjectPascalの三項演算子
Target := if Num >= 10 then  100  else  1;

こちらが今回追加されている ObjectPascalの三項演算子です。
C言語をベースとしている他のレガシー言語の「条件式 ? trueのときの処理 : falseのときの処理」構文ではなく、どちらかというとPythonに似ていて、さらに「if文の延長」として書けるような文法的な配慮がなされているように思います。
私のような「古参」のプログラマとしては「こんなの三項演算子に見えないよ」と思ってしまうのですが、古い構文様式にとらわれず「今だったらこういう構文で良いハズ」という、言語開発元の強いこだわりを感じます。こういった所がObjectPascalが「オワコンになりきらない」という要因なのかもしれませんね。

印象論だけでなく、もう少し「社会的な立ち位置」も見ていってみましょう。

Object Pascalが未だ現役である理由
  • レガシー資産と長期稼働システムの存在
    金融・製造・医療分野などでDelphi製アプリが稼働し続けている点が考えられます。これらの企業では「稼働が止まることのリスク」が非常に大きく「動いているものを壊さない」という合理的判断から維持・更新が続けられています。

  • 生産性とRAD思想
    DelphiのRADツールはGUIアプリケーション開発を効率化し、特にWindowsネイティブアプリの分野で開発スピードと完成度を両立させました。この「手堅い開発体験」は代替が難しいものだと想定されます。

  • コミュニティとベンダーの継続的支援
    Embarcadero社が製品として継続的にDelphiならびにObjectPascal更新しており、ライセンスを払い続ける法人顧客がいるため、開発環境が存続。さらに、コミュニティベースでのOSS的なライブラリや情報発信も続いています。

  • 「脱メインストリーム」であるがゆえの安定性
    トレンドから外れたがゆえに競争過多の波を受けず、ニッチな領域で「安定した開発言語」として機能しています。

レガシー資産として金融分野などで使われ続けていることで「エンジニアとしてまだ食い扶持がある」という世界観は、COBOLも同様ですね。COBOLエンジニアが一周回って一定の高い需要がある点は、「オワコンになりきらない」という点でよく似ているように思います。

Perlが厳しい理由・Perlの課題
  • レガシー資産が少ない
    ObjectPascalやCOBOLなどのように、基幹システムや金融系システムなど、社会的に「更新が容易ではない」システムにおいて採用されているケースが比較的少ないという点があります。システム更新のサイクルが早い分野での採用が多かったため、更新に際して「モダンな新言語」に取って代われました。

  • Web領域の主役交代
    かつては「CGIの王者」であったPerlだったが、PHPやPython、Rubyの登場でPerlが担ってきたWeb開発の座を失いました。
    近年はJavaScript(Node.js)やGo、Rustがそのポジションを拡大しています。

  • 文法・モジュールの複雑さ
    Perl特有の「表現力の高さ」と「TMTOWTDI(同じことをやる方法がいくつもある)」思想は、初心者や新規参入者にとって障壁になりがちです。

  • 後継プロジェクトの混乱
    Perl 6(後のRaku)との長期にわたる混乱は、言語ブランドとコミュニティの結束を弱めました。近年ではPerl7と言う名の実質的なPerl5の発表もあり、混乱は拡大しています。


Perlにも未来はあるか?
  • テキスト処理・正規表現の強み
    Perlの象徴ともいえる正規表現や文字列処理能力は依然として優秀です。
    この高いテキスト処理能力は、ゲノムデータの解析など大量のテキストデータを扱うバイオインフォマティクス分野で有効であり、分野によってはPerlが依然として第一線であるケースが存在しています。

  • 後方互換性の保持
    Perlは言語思想の根幹に「後方互換性を維持する」というものがあります。「メジャーバージョンが5のままなのだから当然」という風に考えることもできますが、セキュリティパッチなども含めた言語アップデートサポートが続いているなか、「言語をアップデートしてもある程度は動いてくれる」という点は大きなメリットです。

  • 「世界」の目線では復権の兆しが出てきている?
    検索エンジンデータを基にした海外のプログラミング言語ランキング「TIOBEプログラミングコミュニティーインデックス」によると、2025年のPerlのランキングは驚くべきことに9位で、ObjectPascal(10位)よりも上です。Perlを「オワコンに追いやった」とされるPHP(15位)やRuby(26位)などよりも上位に来ています。
    注目すべきは 2024年の25位から16位も順位を上げている点で、上記のようにゲノム解析などの分野で活発に使われている可能性を示唆する結果となっています。ちなみに、ObjectPascalも前回の12位から順位を上げての10位です。

まとめ

ここまで見てきたように、一度は「オワコン」と思われた言語でも、しぶとく生き残りバイオ分野など「現代的なニーズ」に合わせて再び活用をされ、復権をする可能性もあります。
多様な現代においては、単一のプログラミング言語で「万能」「最強」ということにはならないのかもしれませんね。
AIでコードを書く時代のいま、多数の言語を並行で活用するハードルは以前よりも下がっています。「実現したいこと」に合わせて開発言語を選び、多様性を確保していくという選択肢もあるのかもしれません。