Delphi 10.3 Rio Release 2 リリース

# Delphi 10.3 Rio Release 2

2019/07/19 に Delphi / C++Builder / RAD Studion 10.3.2 がリリースされました！


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12977/57b68193-fd97-f84b-7d14-619e5fdd0f48.png)

# 主なトピック

僕が注目するのは

* macOS 64bit 対応
* インライン変数宣言周りのバグの修正
* IDE の UX 向上

です。

## macOS 64bit 対応
ついに、来ました。
32bit アプリケーションは警告ダイアログが出てましたからね…

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12977/e7c27e9b-1ef2-98f2-bd09-c5671f3ba694.png)

#### macOS 64bit プラットフォームのアクティブ化

ただし、注意しないといけないのは前バージョンがインストールされている（ライセンスが登録されている）場合です。
このままでは macOS 64bit が有効になりません！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12977/0c6e58bd-56e7-0044-794a-ac62654fca49.png)

有効にするためには…ライセンスを一回削除して再度有効化しなければいけません。

> **2019/07/24 追記**
> ライセンスを削除・追加しなくても「更新」で大丈夫だそうです！

手順は次の通りです。

1. `(インストールディレクトリ)\bin\LicenseManager.exe` を起動します。
1. 該当のライセンスを選択して「削除」を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12977/dbe6487d-b564-c413-d08f-ff0fd9751794.png)
1. 次に「登録」を押して再度ライセンスを入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12977/18411ca1-e4e7-1ed5-bc5e-3438a7cf5d9a.png)
1. Delphi を起動します。
1. プロジェクトを作りターゲットを確認すると macOS 64ビット が増えています！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12977/db69f560-1fae-395b-eda9-8f5f63906148.png)  
1. 既存のプロジェクトは一度 .dproj を削除し作り直します  
([プロジェクトを開く]で .dpr を開くと自動的に .dproj が生成されます)

#### macOS 64bit SDK の取り込み

プラットフォームに macOS 64 ビットが現れたら、macOS 64bit SDK を取り込みます。

まずはいつも通り PAServer の更新と起動です。
 `(インストールディレクトリ)\PAserver\PAServer20.0.pkg` を macOS にコピーして PAServer をインストール、そして起動しておきます。

次に [オプション]→[配置]→[SDK マネージャ]→[追加]を押して

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12977/686ec69f-cfdd-4ce6-8864-9bb824159f4b.png)


このダイアログを開き [OK] を押して取り込みます。

この時、何も起きず、ただダイアログが閉じる場合があります。
その場合は以下の方法を試して見てください。

terminal で

```shell
sudo xcode-select -r
```

と打ち、Xocde CommandLine Tools ではなく Xcode が選択されるようにします。

```shell
xcode-select -p
```

として

```
/Applications/Xcode.app/Contents/Developer
```

になっていれば成功です。

#### その他の注意点
macOS 64bit コンパイラが LLVM ベースのコンパイラに変わったことで既存のプロジェクトのビルドが通らなかったり、よりよいコードが組めるようになっています。
いくつかピックアップすると

* 32bit では .o か .dylib しか使えなかったが、今後は .a が使用可能に（ただし .a を使う場合は prefix は無いので IFDEF で分ける必要あり）
* 64bit SDK フレームワークのインポートが必要
* 既存のライブラリが他のライブラリ([libc++](https://libcxx.llvm.org/)など)に依存している場合、[dependency 指令](http://docwiki.embarcadero.com/RADStudio/Rio/ja/%E6%89%8B%E7%B6%9A%E3%81%8D%E3%81%A8%E9%96%A2%E6%95%B0%EF%BC%88Delphi%EF%BC%89#.E3.83.A9.E3.82.A4.E3.83.96.E3.83.A9.E3.83.AA.E3.81.AE.E4.BE.9D.E5.AD.98.E9.96.A2.E4.BF.82.E3.82.92.E6.8C.87.E5.AE.9A.E3.81.99.E3.82.8B)を使う

などです。

詳しくは MVP である Erik van Bilsen さんのブログをご覧ください。
https://blog.grijjy.com/2019/07/19/using-static-libraries-and-assembly-with-64-bit-macos/

※このブログは [Discord の Delphi サーバー](https://discord.gg/W593cak)で教えて貰いました。

## インライン変数宣言周りのバグの修正

10.3.1 までは例えば下記のコードが実行時エラーになっていました。

```pascal
var D := TDictionary<String, Integer>.Create;
try
  D.Add('Bar', 0);
  for var Item in D do // ここで実行時エラー
    Writeln(Item.Key, ' = ',  Item.Value);
finally
  D.DisposeOf;
end;
```

10.3.2 では、この辺りのバグが治り素直にインライン変数を使えるようになりました！

## IDE の UX 向上
10.3.1 で IDE に VCL テーマを適用した結果、IDE の UX が大きく損なわれました…
それが 10.3.2 では、フリッカーや動作の重さ、などが改善されています。
これだけでも 10.3.2 にする価値があります。
ただし、IDE のツールバーが起動時に移動してしまうバグは直っていません…

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12977/b0096edf-aa72-9301-ee75-4594d005f1cb.png)


# まとめ
待望の macOS 64bit サポートです。
また[夏には Android 64bit に対応した Delphi 10.4 β版の提供が予定されています](https://community.idera.com/developer-tools/b/blog/posts/may-2019-rad-studio-roadmap-commentary-ja)。
2019/8/1 から 64bit に対応していないアプリは Google Play にアップできなくなるので、早めに対応して欲しいですね。