【Delphi / C++Builder 10.2 Tokyo 新機能・改善点】ライブラリ周りの機能など

#【Delphi / C++Builder 10.2 Tokyo 新機能・改善点】ライブラリ周りの機能など
2017年3月15日、東京ミッドタウン カンファレンスホール Room7 で開かれた イベント [0315 in TOKYO](https://community.embarcadero.com/blogs/entry/delphi-c-builder-0315-in-tokyo-japan)にて、ジム マッキースが発表した Delphi / C++Builder / RAD Studio 10.2 Tokyo の改善点新機能をざっくりとまとめておきます。正式リリースとして3月28日を予定しており、すべての機能を保証できるものではありませんが、発表内容の第一報として記載します。

##**FireMonkey アーキテクチャ / Android 向け変更**
**ハイライト**

- [x] "Purgatory"を削除（フォームとコントロールの遅延破棄）
  * TPurgatoryクラスが削除されました
  * TFmxObject.Release（purgatory invocation）への呼び出しは、プレーンな古いTFmxObject.Freeに置き換えられました。
- [x] マルチスレッドグラフィックス：TBitmap、TCanvas、TContext3Dのサポート
  * すべてのプラットフォーム（特にモバイルで重要）
- [x] Android上のDelphiおよびJavaスレッドの統合
- [x] Android zOrderの準備作業とネイティブコントロールのサポート
- [x] すべてのコードがJava UIのスレッドで実行されています
- [x] CallInUIThreadは廃止されました。スレッド同期の必要はありません
<p></p>
- [x] より高速なAndroid UIとスレッドサポートの強化
- [x] MacOSとAndroid用の新しいFMXスタイル
- [x] MultiViewのユーザインタラクション管理の強化
  * Enabledプロパティを使用してユーザー操作をオフに
  * 枠線の外観を管理するための新しいオプション
  * ドッキングパネルモードのためのBottomとTopのとalignments

### TBitmap, TCanvas and TContext3D のマルチスレッドサポート
* TBitmap：完全なマルチスレッドサポート。 同期なしで任意のスレッドで作成、破棄、変更が可能
* TContext3D：一度に複数のスレッドから使用されることをサポートしますが、内部的には直列化
* TCanvas：一度に複数のスレッドから使用されることをサポートしますが、内部的には直列化

一例を記述

```delphi
for I := 0 to 10000 do
begin
  // thread work
  Canvas.BeginScene;
  try
    // drawing code
  finally
    Canvas.EndScene;
  end;
end;
```
もう一つの例

```delphi
Canvas.BeginScene;
try
  for I := 0 to 10000 do
  begin
    // thread code
    // drawing code
  end;
finally
  Canvas.EndScene;
end;
```

###その他のFireMonkeyの変更
* Ttext、TStyleTextObject、TActiveStyleTextObject、TTabStyleTextObject、TButtonStyleTextObjectの各テキストコントロールにICaptionのサポートを追加
* Windows向けのFMX TWebBrowserの改良
* TEditにCharCaseプロパティ を追加
* TStringGridイベントを再び有効に（Re-exposed）
* TListViewItemにTagObjectプロパティとTagStringプロパティを追加
* AndroidでのDelphiとJavaのスレッドの統合：CallInUIThreadは廃止予定
  * すべてのコードがJava UIスレッドで実行されているため、スレッド同期の必要はありません
* FMX.Platform.Device.Android.pas、FMX.Platform.Logger.Android.pas、FMX.Platform.Metrics.Android.pas、FMX.Platform.SaveState.Android.pas、FMX.Platform.Screen.Android.pas、およびFMX.Platform.Timer.Android.pasの拡張によりFMX.Platform.Android.pasが改善されました。 
*  TFormのReleaseメソッドは推奨されなくなりました

##**新しいプロパティ "SystemStatusBar"**
* iOSのシステムステータスバーの動作を変更する2つの新しいプロパティを追加：  
  * SystemStatusBar.BackgroundColor
  * SystemStatusBar.Visibility
* iOSのステータスバーの表示色と塗りつぶし色をツールバーの色に合わせて設定します（例：
![image](https://qiita-image-store.s3.amazonaws.com/0/145847/6c3784b9-8dc7-c7ee-afef-64b8baae829b.png)

##**RTL ライブラリ の変更**
* 更新されたAPIによるAzureとAWSサポートの改善
* HTTPクライアントでの非同期サポートの改善
* ファイルとストリームで新しいMD5とSHA1機能のサポート
* ストリームとファイルのMD5とSHA1ハッシュを計算するためのSystem.Hashサポート（i.e.THashMD5.GetHashBytesFromFile）
* スムースなメインスレッド同期のためのAppTetheringログフィルタリングとSynchronizeEvents
* TTetheringManagerの新しいSynchronizeEventsプロパティとメインスレッドとのイベント同期を制御するTTetheringProfile

###HTTPクライアント
* HTTPクライアントライブラリは、64ビットLinuxをサポート
* HTTPクライアントでの非同期サポートの改善

###64ビットLinuxのRTLサポート
* RAD Studio 10.2 Tokyoは、標準のシステム関数、ストリーム、およびIOUtilsユニットを使用してLinuxファイルシステムをサポート
* 64ビットLinux用の標準RTLパスファンクションも提供

### App Tethering の改善
* TTetheringManagerの新しいSynchronizeEventsプロパティとメインスレッドとのイベント同期を制御するTTetheringProfileを付加
* マネージャとプロファイルは、イベントハンドラがメインスレッド上で実行されるかどうかを制御可能
* ログフィルタリングのサポートが強化されました:さらなるログメッセージを追加

### 新規・改良されたハッシュ関数
System.Hashユニットの次のメソッドは、ストリームまたは文字列を入力パラメータとして受け入れるようになりました。

* THashMD5.GetHashString
* THashMD5.GetHashBytes
* THashSHA1.GetHashString
* THashSHA1.GetHashBytes
* THashSHA2.GetHashString
* THashSHA2.GetHashBytes

System.Hashユニットには、ファイルからハッシュダイジェストを取得するための次の新しいメソッドを追加

* THashMD5.GetHashBytesFromFile
* THashMD5.GetHashStringFromFile
* THashSHA1.GetHashBytesFromFile
* THashSHA1.GetHashStringFromFile
* THashSHA2.GetHashBytesFromFile
* THashSHA2.GetHashStringFromFile

##**おことわり**
本情報は正式リリース前の情報であり、これらの計画は、現在の当社の状況にて確認していているもので、ビジネスデシジョンや市場の状況などで開発計画および優先順位は変更される可能性があります。またここに記載されている仕様や改善点の保証やお約束をできるものではありません