一、フレームワークアーキテクチャのアップグレード
1.1 モジュール化の再構築
API 11以前:
// 統一エントリーポイントで全モジュールをロード
import ability from '@ohos.ability';
import data from '@ohos.data';
API 12+:
// 必要に応じてサブモジュールをインポート
import UIAbility from '@ohos.app.ability.UIAbility';
import relationalStore from '@ohos.data.relationalStore';
主な変更点:
- 元の
@ohos.abilityをapp.ability、service.abilityなどのサブモジュールに分割 - データ管理モジュールの細分化:
data.storage、data.relational、data.distributed - 新たに
@ohos.ai人工知能専用モジュールを追加
二、UI開発パラダイムの革新
2.1 宣言型UIの全面的なアップグレード
API 11以前(Web開発モデルに類似):
// hmlテンプレート
<div class="container">
<text class="title">{{ title }}</text>
<input type="button" value="クリック" onclick="handleClick"></input>
</div>
API 12+(ArkTS宣言型):
// ArkUI 3.0コンポーネント
@Entry
@Component
struct TopPage {
@State message: string = 'こんにちはHarmonyOS'
build() {
Row() {
Text(this.message)
.fontSize(24)
.fontColor(Color.Blue)
Button('タップ')
.onClick(() => {
this.message = '新しいメッセージ'
})
}
.margin(16)
}
}
主な変更点:
- HML+CSS+JSの3点セットを廃止し、全面的にArkTSへ移行
- コンポーネント属性のチェーン呼び出しが従来の属性設定に取って代わる
- 状態管理が
@State、@Link、@Propデコレーターにアップグレード
三、分散機能の強化
3.1 デバイス発見プロトコルのアップグレード
API 11でのデバイス発見:
// 従来のBluetooth発見
let deviceManager = deviceManager.createDeviceManager()
deviceManager.startDeviceDiscovery({
discoverMode: DiscoveryMode.PASSIVE,
filters: [{ deviceType: DeviceType.SMART_PHONE }]
})
API 12スーパーターミナル発見:
// スーパーターミナルに基づく発見
import { ConnectionType, DeviceFilter } from '@ohos.distributedHardware'
DeviceManager.findDevices({
connectionTypes: [ConnectionType.WIFI_DIRECT, ConnectionType.NFC],
filters: [
DeviceFilter.withCapability('印刷'),
DeviceFilter.maxDistance(15)
]
})
主な変更点:
- 新しい
ConnectionType列挙型:WIFI_DIRECT、MESH、NFCなど - デバイス能力フィルタリングメカニズムの導入
- 空間距離の制約条件をサポート
四、セキュリティシステムの再構築
4.1 権限管理モデルのアップグレード
API 11での権限申請:
// すべての権限を一度に申請
requestPermissions(['ohos.permission.CAMERA', 'ohos.permission.MICROPHONE'], (result) => {
console.log('権限結果:' + result)
})
API 12での動的分段化認証:
// 必要に応じて機密権限を申請
import { SensitivityLevel } from '@ohos.security'
accessControl.requestPermission({
permission: 'ohos.permission.BODY_SENSORS',
sensitivity: SensitivityLevel.SENSITIVE_HEALTH_DATA,
rationale: '心拍数変化の監視に使用'
})
新機能:
- 権限の機密度レベル:SENSITIVE、CRITICALなど
- 実行時の動的権限取り消しメカニズム
- 権限使用シナリオの説明をサポート
五、メディアサブシステムの再構築
5.1 カメラ制御APIのアップグレード
API 11でのカメラ設定:
// 旧版カメラ設定
let camera = Camera.createCamera()
camera.setPhotoQuality(QualityLevel.HIGH)
camera.setPreviewSize(1920, 1080)
API 12でのプロフェッショナルカメラ制御:
// 新版カメラ設定のチェーン呼び出し
CameraManager.getCamera(CameraType.BACK).then(camera => {
camera.configure()
.setOutputFormat(ImageFormat.YUV_420_888)
.setStabilizationMode(Stabilization.ELECTRONIC)
.setExposureCompensation(0.7)
.apply()
})
主な改善点:
- プロフェッショナルな写真パラメータのチェーン設定をサポート
- 電子手ぶれ補正、マルチフレームノイズリダクションなどの制御項目を追加
- 低光環境の自動強化アルゴリズムを改善
六、データ管理機能の強化
6.1 リレーショナルデータベースのアップグレード
API 11でのデータベース操作:
// 旧版SQLite操作
const db = relationalStore.getRdbStore(context, {
name: 'mydb.db',
securityLevel: relationalStore.SecurityLevel.S1
})
db.executeSql('CREATE TABLE IF NOT EXISTS STAFF (ID INTEGER PRIMARY KEY, NAME TEXT)')
API 12での型安全ORM:
// 新版ORMモデル
@Database({ entities: [Staff], version: 1 })
class AppDatabase extends OrmDatabase {}
@Entity
class Staff {
@PrimaryKey()
id: number
@Column()
name: string
}
const db = new AppDatabase(context)
db.staffDao.insert(new Staff(1, 'Bob'))
主な変更点:
- デコレータードリブンのORMモデルの導入
- コンパイル時SQL検証をサポート
- デバイス間データ同期機能を強化
七、ネットワーク通信の改善
7.1 HTTPクライアントのアップグレード
API 11でのネットワークリクエスト:
// 旧版HTTPリクエスト
let http = http.createHttp()
http.request('https://api.example.com/data', {
method: http.RequestMethod.GET,
header: { 'Content-Type': 'application/json' }
})
API 12での強化型Fetch API:
// 新版Fetch API
const response = await fetch('https://api.example.com/data', {
method: 'GET',
headers: new Headers({
'X-API-Key': 'my-secret-key'
}),
cachePolicy: CachePolicy.NETWORK_ONLY,
retryPolicy: {
maxAttempts: 3,
backoffFactor: 2
}
})
新機能:
- リクエスト再試行ポリシーの設定をサポート
- 内蔵のレスポンスキャッシュ管理
- 改善されたCookie処理メカニズム
八、開発ツールチェーンのアップグレード
8.1 ビルド設定の変更
API 11 module.json:
{
"module": {
"name": "entry",
"type": "entry",
"srcEntry": "./ets/MainAbility"
}
}
API 12 module.json5:
// 新版設定ファイル
module: {
name: "entry",
type: "entry",
srcPath: "./src/main/ets",
compileMode: "esmodule",
buildFeatures: {
arkTSX: true
}
}
主な変更点:
- 設定ファイルがJSON5形式にアップグレード
- ArkTSXコンパイルオプションをサポート
- コンパイル時型チェック設定を新たに追加
九、アップグレード移行ガイド
9.1 一般的な移行シナリオの解決策
シナリオ1:旧版Abilityの移行
// 旧版Page Ability
export default class MainAbility extends Ability {
onInit() {
// 初期化ロジック
}
}
// 新版UIAbility
@Entry
@UIAbility
export default class MainAbility extends UIAbility {
onCreate() {
// ArkUIエンジンを使用して初期化
}
}
シナリオ2:データストレージの移行
// 旧版軽量ストレージ
preferences.getPreferences(context, 'mystore', (err, pref) => {
pref.put('key', 'value')
})
// 新版永続ストレージ
import { PersistentStorage } from '@ohos.data.storage'
const storage = await PersistentStorage.getStorage('mystore')
await storage.set('key', 'value')
十、将来の進化方向
10.1 近日公開予定のAPI変更
- AI融合開発:新たに
@ohos.ai.nlp自然言語処理モジュールを追加 - 空間コンピューティング:
@ohos.ar拡張現実APIの準備 - 量子セキュリティ:実験的な量子暗号通信API(
@ohos.quantum)