3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

DelphiAdvent Calendar 2016

Day 20

Delphi7で止まっていたロートルがBerlinを触ってみた

Posted at

これは Delphi Advent Calendar 2016 20日目の記事です。

Delphi 10.1 Berlin Starter Edition がリリースされ、無料でDelphiに触れることができるようになったので勢いで触ってみました。

これまでのDelphi経験

業務アプリケーション開発でDelphi 4、Delphi 7を使用しました。HTML、CSS、JavaScriptだと3日かかる作業がDelphiだと1日で終わるというGUI開発の生産性の高さに魅了され、Delphiが世界を席巻してくれることを夢見続けています。

よく使っていたVCL

簡単なCRUDなら以下のVCLだけで済ませられましたね。
TMainMenuTActionListTToolBarTImageList の組み合わせは素敵でした。

TPanel、TMainMenu、TActionList、TToolBar、TImageList、TLabel、TEdit、TListView

本記事の趣旨

Delphi 10.1 Berlin でどんなところが変わり、改善されたのかを実際にアプリケーションを開発しながらまとめてみます。ちなみに Starter Edition での内容です。なお、Delphi 7までで個人的に感じていたところは以下になります。

Delphiの良いと感じていた点

  • コンパイル、起動が速い
  • ビューを直接いじりながら画面デザイン、コンポーネント配置ができる
    • Shiftキー+方向キーで1px単位で位置調整できるのは最高
  • 標準のVCL、クラスライブラリだけでも十分に開発できる
  • 各コンポーネントのイベントハンドラの作成、把握が容易
  • 困ったら F1 ヘルプでたいてい解決できる
  • 初期Delphiの主要開発者だったアンダース・ヘルスバーグ氏が ネ申

Delphiの残念に感じていた点

  • 有料で結構なお値段
  • IDEとしてのエディット機能が貧弱
    • リファクタリングがつらい・・・
  • Windowsでしか動かないし(Kylyxなんてなかった、いいね?)、Windowsのバージョンアップ対応が大変

Delphi 10.1 Berlin の良い点

あまり大きな違和感を感じなかった

操作感、コンパイル・起動速度は変わらずですね。
かつてのVCLも健在で以前の開発スタイルでも問題なさそうです。

Delphi_run.gif

エディタのフォントが充実

Ricty が標準で入っているのは嬉しいですね。

image.png

Windows 10コンポーネント

TSplitViewTToggleSwitchTSearchBox といった今風なコンポーネントが追加されています。 TMainMenu から TSplitView を使用したメニューに切り替えるのが良さそうです。

Delphi_menu2.gif

FMXが利用できる

マルチプラットフォーム向けのFMX(FireMonkeyフレームワーク)が使えます!

残念な点・ハマった点

画像のインポート

TImageList に画像を追加したら何故か黒く潰れてしまいました。

image.png

原因は TImageListColorDept が初期状態だと cdDeviceDependent になっていたことでした。
cd32bit に変更したらちゃんとインポートできました。 Starter Edition だと cd32bit を選択するしかないようです。

image.png

ジェネリクスの使用にはGenerics.Collectionsのインポートが必要

unit BookUnit;

interface

uses
  System.Classes;

type
  TBook = class
  private
    FTitle: String;
    FTags: TList<String>;
  public
    constructor Create(Title: String; Tags: TList<String>);
    function GetTag: String;
  end;

ジェネリクスがいつのまにかにサポートされたという事で上記のようなコードを書いてみたらコンパイルが通らない?

[dcc32 エラー] BookUnit.pas(12): E2003 未定義の識別子 : 'TList<>'

Delphi ジェネリクス で泣きそうになりながらググっていたら Generics.Collections というワードを発見。uses節に追加したらコンパイルが通りました!
これはハマる人が多そうだな・・・   。

リファクタリング機能、クラス補完機能が備わっていない

残念ながら Starter Edition にはリファクタリング機能、クラス補完機能がありませんでした。
Ctrl + Shift + C で実装の雛型が作成されないのは戸惑いますね。
Ctrl + Shift + ↓ Ctrl + Shift + ↑ で定義と実装の行き来ができないのもコーディングのリズムに大きく影響を受けました。

Windows用の32ビットEXEしかビルドできない

Windows用の32ビットのEXEしか作成できませんでした。
でも、無料版でそれなりに動くアプリケーションを開発できるのはプログラミング初心者には良い素材に思います。

まとめ

Starter Edition は機能制限はあるもののDelphiの良さを感じるには十分な内容が備わっていると思います。HTMLやCSS、JavaScriptに疲れた人やGUIに興味のあるプログラミング初心者には是非お勧めしたいですね。 Professional の廉価版のお手頃なライセンスが登場してくれることを祈ります。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?