Delphi

Delphi Community Edition

Delphi Community Edition

ついに!待望の!全ての機能を使える Delphi の無料版が発表されました!!!!!!!


Delphi Community Edition のダウンロードはここから!

Starter Edition では Windows アプリケーションだけしかビルド出来ませんでしたが、この Delphi Community Edition は無料なのに Windows, macOS, iOS, Android のアプリケーションがビルドできるのです!

Delphi Community Edition は、Delphi Professinal 相当の無償版になっていて今まで公開されたどの無償版よりも強力です(ライブラリのソースコードも付いています!!)。
商用や企業での利用には制限がありますが、個人の学習目的などには制限が一切ありません!

※ライセンスに関する詳細はソフトウェア使用許諾およびサポート契約書FAQをご覧下さい。

この記事では Delphi とはなんぞや、というところから、Delphi の学習に役立つページを伝えたいと思います。

Delphi とは

1995 年に発売された統合開発環境で、今現在も開発が続いている息の長い開発環境です。
RAD(Rapid Application Development)環境の走りで、今では当たり前になった Drag & Drop による GUI 構築をメインにした迅速なアプリケーション開発が可能です。

また特筆すべきは、コンパイラが8種類搭載されており、全てネイティブコード(Intel, ARM)にコンパイルされる事です。驚くべき事に Android のアプリケーションすらネイティブコードにコンパイルされます。別途 VM や Runtime 環境を必要とした開発環境とは一線を画す高速化も可能になります。

Wikipedia の Delphi のページは良くまとまっているのでご一読いただくとさらに良いかも知れません。

開発元

エンバカデロ・テクノロジーズで開発・発売されています。
エンバカデロ・テクノロジーズが買収するまでは、Borland で開発・発売されていました。
なお、Delphi は開発元がコロコロ変わるという言説がありますが、それは間違いで、開発元が変わったのはエンバカデロ・テクノロジーズが Borland の開発部門(CodeGear)を買収した1回のみです。
(エンバカデロ・テクノロジーズは IDERA に買収されましたがエンバカデロ・テクノロジーズは依然として1つの法人として存続しており何ら違いはありません)

C++Builder とは

Delphi の姉妹製品で C++ でプログラムできるようにした製品です。
Delphi と C++Builder の両方を合わせた RAD Studio というスイートもあります(ライブラリや IDE は同じため後述の DocWiki などでは RAD Studio の呼称が使われています)。
注意
Community Edition では、Delphi と C++Builder の両方をインストールすることはできません。
それは、有償の RAD Studio の領分になるためです。
どちらか片方をインストールする場合、C++ が大好き!ではないならば Delphi をオススメします。
Delphi は C++ で書かれた DLL や obj をリンクできますが C++Builder 単体では Delphi のソースをビルドしてリンクできないためです(IDE 自身も Delphi で作られているため IDE の拡張もできません) 2018/07/26 修正:C++Builder Community Edition には Delphi のコンパイラも入っていました!ですので C++Builder でも不具合はありません。それでも個人的には Delphi をオススメしますが!

特徴

VCL / FireMonkey という2つのライブラリと、FireUI やマルチデバイスプレビュー、スタイル、データエクスプローラー、Visual Live Bindings, Action, Layout, Anchor など様々な機構によって、極限まで開発者の手間を減らし迅速にアプリケーションを開発できます。

2011 年発売の Delphi XE2 以降は「マルチプラットフォーム開発環境」になっており、現在は Windows, macOS, iOS, Android, Linux (CUI) のアプリケーションを開発できます(ただし Linux 向けアプリケーション開発機能は Community Edition では提供されません)。

また、マルチプラットフォーム開発環境としての最大の特徴は「真のワンソース」の1点につきます。
OS に関わらずアプリケーションを1つのソースで開発できます。つまり、OS ごとに GUI デザイナが別々になったり、フレームワークが別になったりしません。
もちろん、それはデスクトップ向けアプリとモバイル向けアプリでも同様で、解像度や向きに関わらず1つのソースで構築できてしまいます!

実際にどんな風に使うのか、どうやってデザインするのか、ワンソースで全部に対応するってどういう事なのか、を知りたい方は、先日行われた Delphi Community Edition Meet up ! の資料をどうぞ

現在の Delphi!

現在の Delphi はこのような見た目でモダンな感じになっています(ダークテーマ)。

Del.png

用途

  • クライアントアプリケーション
  • サーバサイドアプリケーション
  • Web アプリケーション
  • CUI アプリケーション
  • IoT アプリケーション
  • 3D アプリケーション
  • DLL や Dylib の作成
  • etc.

など何でもこなすオールラウンダーです。
特に Windows では、Win32 アプリケーションだけでなく Windows Bridge による UWP アプリも作成できるので、Delphi でアプリを作れば Microsoft Store, iTunes Store, Google Play などオフィシャルなストアに登録できます。

また、元々は Oracle のデータベースのフロントエンド環境も目指していたためデータベースとの親和性はピカイチで、データベースへのアクセスや REST サーバへのアクセスなどは、コンポーネントを置くだけのノンコーディングで実装できます。

詳しくは主要なアプリケーション種別をご覧下さい。

動作環境

Delphi Community Edition で使う開発環境を RAD Studio IDE と呼びます。
この IDE 自体は Windows でのみ動作します。
IDE の動作環境は以下のようになっています。

  • CPU: Pentium 1.6GHz以上
  • OS: Windows 7 SP1/8/8.1/10(すべて32bit,64bit)
  • 空き容量:6〜60GB以上(エディション・設定に依存)
  • RAM:2GB以上
  • 1,024×768以上の解像度が動作するDirectX 11対応のビデオカード/モニタ

また、これとは別に macOS, iOS の開発をする場合は、それぞれの実機と開発者登録、Xcode Command Line Tools などが必要になります。

ターゲットOS

以下の OS 向けのアプリケーションを開発できます。

  • Windows 32bit
  • Windows 64bit
  • macOS 32bit (64bit 版は次のバージョンで提供予定)
  • iOS Simulator
  • iOS 32bit
  • iOS 64bit
  • Android 32bit (64bit 版は今後のバージョンで提供予定)

詳しくは「サポートされているターゲット プラットフォーム」「 FireMonkey プラットフォームに必要な準備」をご覧下さい。

言語

実務以外にも教育向けも強く意識された Pascal をオブジェクト指向に拡張した Object Pascal という言語を使用します。
教育向けの系譜を汲む Object Pascal は非常に解りやすく読みやすいコーディングが可能です。
もちろん教育だけでなく実務にも利用できるパワフルな言語になっていて、その証拠に Pascal は Pascal で書かれています。そして、それと同じように、Delphi も Delphi で作成されています(セルフホスティング)。

また、現在の Object Pascal は Class / Record Helper, Generics, reference to による無名関数など多くの機能が追加され、現代の他の言語にひけを取りません。
久しぶりに Delphi を触ろうと思っている方は「Delphi 7以降の言語およびコンパイラの新機能」やこちらをご覧下さい。昔は存在しなかった構文などがあると思います。

他の言語に見られない特徴としては、ミックスドランゲージが得意ということです。
直接 API が呼べるので、他の開発環境の様に API が移植されるのを待つ必要はありません。
例えば、下記の例は Java と Objective-C の API を直接呼ぶ様を示しています(言語の機能とライブラリによって実現されています)。

Javaの例
procedure StartIntent;
var
  Intent: JIntent; // 接頭辞 J は Java のクラスを示す。ARCで自動廃棄される
begin
  Intent := TJIntent.Create; // TJ は Java のクラスの ObjectPascal での実体を示す

  // メソッドチェーンも普通に呼び出せる
  Intent
    .setAction(TJIntent.JavaClass.ACTION_VIEW)
    .setData(StrToJURI('URLとか'));

  // Java のメソッドを普通に呼び出せる(TAndroidHelper.Activity はメインActivityを示す)
  TAndroidHelper.Activity.startActivity(intent); 
end;
Objective-Cの例
procedure SetMinSize(const iForm: TForm; const iMinW, iMin: Integer);
var
  Wnd: NSWindow; // macOS のクラスがそのまま使える。ARCで自動破棄される
  Size: NSSize;  // こっちも
begin
  Wnd := WindowHandleToPlatform(iForm.Handle).Wnd; // NSWindow を取り出す

  Size.width := iMinW;
  Size.height := iMinH;
  Wnd.setContentMinSize(Size); // Objective-C のメソッドをそのまま呼び出せる
end;

フレームワーク

Delphi は VCL と FireMonkey という2つのフレームワークが搭載されています。

VCL

Windows 専用のフレームワークで Windows のコントロールや COM コンポーネントなどをラップしています。
Windows 専用のアプリケーションを作る場合は FireMonkey よりも向いています。

FireMonkey

マルチプラットフォーム専用のフレームワークです。FMX と略される事もあります。
VCL とは違い Windows だけではなく macOS, iOS, Android のコントロールをラップした優れたライブラリです。
また、FireMonkey は DirectX / OpenGL で描画されるため VCL に比べてリッチな見た目やアニメーション、エフェクトを簡単に追加できます。

参考になるページ

Delphi の初学者に参考になるページを列挙しました。

なお、Google は使わない方が良いかもしれません。
というのは Delphi は長く使われている開発環境のため Google で期間を指定しないまま検索すると、大変古い情報がヒットするためです。
特に FireMonkey 関連では今では使えないコードが引っかかったりします。
Google を使う場合は期間を指定して、新しい情報がヒットするようにしてください。

Delphi Community Edition Meet up !

2018/08/07 追記
先日、Delphi Community Edition によって Delphi を初めて触る方や久しぶりに触る方々向けのイベントが行われました。
その際の資料も参考になるかと思いますので記載しておきます。
https://yuru-phi.connpass.com/event/95804/presentation/

RAD Studio DocWiki

オフィシャルの RAD Studio DocWiki が一番詳しくオススメです。
Delphi では日本語がプライマリ言語の1つになっているので、日本語で情報が提供されています。
特に最初は

などが参考になるでしょう。

Delphi Community Edition DocWiki

2018/07/21 追記
Delphi Community Edition のリリースに伴って DocWiki にも Community Edition 専用ページがオープンされました。
インストール方法やライセンス情報などが記載されています!

デベロッパーキャンプ

年に2回ほど開催される Delphi / C++Builder / RAD Studio のイベントです。
このイベントの資料がアーカイブページに公開されています。ここには資料の他にセッションを録画したビデオも公開されていて大変有用です。

例えば、拙著で恐縮ですが「Delphiならここまでできる!iOS / Androidネイティブアプリ構築術」があります。この資料では昔 Delphi / VCL を使っていた人向けに FireMonkey を紹介するスライドになっています。

また、デベロッパーキャンプ自体は無料のイベントなので都合が合う場合は参加してみることをオススメします(基本的には東京開催で年に1回ほど大阪でも開催されます)。
特に、懇親会では有識者に直接話しかけることもできます。

Delphi で始めるビジュアルプログラミング

2018/08/07 追記
イベントで配布された小冊子の PDF 版です。
非常に綺麗にまとまっており、これを1冊読むだけで Delphi を使った開発の流れが解るようになっています!
オススメです!!

Delphi Forum

DEKO さんが運営する Delphi のフォーラムです。
フォーラム形式になっているので質問しやすいのがポイントです。

Delphi メーリングリスト

Delphi のメーリングリストです。僕が管理人をしています。
こちらはほぼ質問用のメーリングリストです。
比較的早くレスがつきますが、レスが付かない場合もあります。

Japan RAD Studio User Group

Facebook 内の Delphi / C++Builder / RAD Studio に関するグループです。
質問だけでは無く最新情報や雑談など気楽な雰囲気で投稿できます。
※承認制になっているので、参加リクエストを送ってください。

Delphi Q & A掲示板

MADIAさんが提供している掲示板(トップページは http://madia.world.coocan.jp/
今でも活発にやり取りされています。

Delphi Library [Mr.XRAY]

Mr.XRAY さんが運営するサイト。
VCL と Win32 についての情報量は圧倒的です。
掲示板もあります。

Qiita

Qiita にも Delphi の記事が多数投稿されています。
中でも DEKO さんによる Delphi Starter Edition でメモ帳クローンを作るは初学者必見です。

また毎年開催される Delphi Advent Calendar の記事も参考になりそうです。
2017 年の Advent Calendar
2016 年の Advent Calendar
2015 年の Advent Calendar
2014 年の Advent Calendar

GitHub / BitBucket

様々なライブラリやアプリケーションが公開されています。
拙作ですが、いくつかリンクを貼っておきます。

アプリケーション
ライブラリ
IDE 機能拡張
補助ツール

書籍

OBJECT PASCAL HANDBOOK
Delphi のプロジェクトマネージャであるマルコ・カントゥ氏による ObjectPascal の言語詳細です。
少々高いですが、持っていて損はありません。

Delphiでかんたん iOSアプリプログラミング
拙著な上に5年も前になってしまいましたが、IDE の使い方や言語リファレンスなどは今でも通用します。
現在、新たな本を執筆中です。

Twitter / Qiita のアカウント

独断と偏見で Delphi 関係でフォローしておくと捗るアカウントを列挙しました。
Qiita のアカウントを持っている人は Qiita へのリンクも記載しました。

オフィシャル

Embarcadero Japan
エンバカデロ・テクノロジーズの日本法人のアカウント。
最新情報やセミナー情報等が流れます。

Atanas Popovさん
エンバカデロ・テクノロジーズの社長。アタナス・ポポフさん。特にこれと言ったことはつぶやかないけど社長なので。

Hitoshi Fujiiさん
エンバカデロ・テクノロジーズの日本法人代表。最近つぶやいてないみたいだけど代表なので。

MarcoCantuさん
Delphi のプロダクトマネージャであるマルコ・カントゥ氏のアカウント。
最新情報や Delphi を使ったプログラムなどの情報が流れます。

技術系

Chikako Yonezawaさん / Qiita
エンバカデロ・テクノロジーズの中の人で、イベント「ゆるふぁい」の管理人

井之上@エンバカデロさん / Qiita
エンバカデロ・テクノロジーズの中の人で、Delphi に限らず技術全般に詳しい

DEKOさん / Qiita
Delphi の事何でも知ってるスゴい人

Owl's perspectiveさん
最新情報のキャッチアップがスゴく早いし Delphi にも超詳しいスゴい人

Lynaさん
Delphi の内部の動作だったり言語の詳細を知っているスゴい人
公開されているプラグインが尋常じゃない。例えば痛IDE Plugin

中山雅紀さん
Delphi で 3D といったらこの人!住職であり CG の研究家でもあります!
中山さんの GitHub は必見です!

HOSOKAWA Jun / Qiita
僕です。
僭越ながら Delphi MVP として活動させて貰っています。
好きなフレームワークは FireMonkey。

まとめ

Delphi についてまとめつつ情報源を列挙しました。

ここまで読むと当然、次の疑問がわくと思います。

なぜ流行っていないのか

話だけ聞くと良い事ずくめなのに何故流行っていないのかというと、とても高額だったためです。
しかも機能が限定された Starter Edition ぐらいしか試す方法もありません。
結果、新しいユーザーが増えないという状態になっていました。

しかし、初期のバージョンである Delphi 1.0~7.1 は爆発的に普及しました。
それは、(ソフトウェアは購入する物だった)当時では非常に安価な開発環境であり、その便利さを誰もが気軽に体験出来たからです(たとえば Delphi 1.0 は 29,800 円でした)。
今でもその頃作ったシステムの改修や保守案件があることや、少し古いフリーウェアが Delphi で組まれていたりする事がその証左で、どれだけ普及していたのか推測できると思います。

今回、無償版が出たことで当時のように多くの人に Delphi の簡単で楽しいプログラミングを体験して貰う事を願ってやみません!