HarmonyOS:システムアーキテクチャとArkUIでの開発

著者: IT Sectr 公開日: 2026-02-07 読了時間: 11 分

HarmonyOSは、クロスプラットフォームアーキテクチャをサポートする分散マイクロカーネル上に構築されたHuawei独自のオペレーティングシステムです。アプリケーション開発は、ArkUIフレームワークを使用してDevEco Studio環境でArkTSおよびC++で行われます。このシステムは、スマートフォン、タブレット、時計、IoTデバイスのシームレスな統合を目的としています。Huaweiによると、HarmonyOSは世界中で7億台以上のデバイスにインストールされています。

重要なポイント

  • HarmonyOS — 独自のマイクロカーネルとマルチデバイスアーキテクチャを備えたHuaweiの分散OS
  • ArkTS — HarmonyOSエコシステム向けのTypeScriptベースの主要開発言語
  • ArkUI — SwiftUIやJetpack Composeと同様の宣言的UIフレームワーク
  • DevEco Studio — エミュレータとPreviewを備えたIntelliJベースの公式IDE
  • 分散アーキテクチャにより、アプリケーションは複数のデバイスで同時に実行可能

HarmonyOSとは?

HarmonyOSは、Huaweiによって開発された分散オペレーティングシステムで、2019年に同社の新しいデバイスにおけるGoogleサービスへのアクセス制限への対応として初めて発表されました。HarmonyOSはLinuxとは異なる独自のマイクロカーネル上に構築されており、スマートフォン、タブレット、スマートウォッチ、テレビ、車載システム、IoTデバイス間でのシームレスな動作を目的としています。

Huawei(HarmonyOSエコシステムレポート、2026年)によると、このシステムは3億台のスマートフォンを含む7億台以上のデバイスにインストールされています。中国市場がインストールの95%を占めています。HarmonyOS 5.0(NEXT、2024年)以降、システムはAndroid AOSPとの互換性を完全に廃止しました。すべてのアプリケーションはArkTSまたはC++でArkUIを使用して記述する必要があります。

HarmonyOSの主な特徴は、その分散アーキテクチャです。アプリケーションは複数のデバイスで同時に実行でき、インターフェースを画面間で移動できます。例えば、ユーザーが電話でナビゲーションを開始すると、インターフェースが車の画面に表示されます。再コンパイルや追加コードは不要です。

HarmonyOSのバージョン履歴

HarmonyOS 1.0(2019年) — スマートフォンではなくSmart Screen向けの最初のバージョン。HarmonyOS 2.0(2021年) — スマートフォン、タブレット、時計に対応、AOSPアプリケーションのサポート。HarmonyOS 3.0(2022年) — 分散アーキテクチャの改善、Super Device、Multiscreen Collaboration。HarmonyOS 4.0(2023年) — ArkUI 3.0、Live View、パフォーマンス改善。HarmonyOS NEXT(5.0、2024年) — AOSPを完全に廃止、ネイティブHarmonyOSアプリケーションのみ。

HarmonyOSバージョン主な革新
1.02019Smart Screen TV向け初版
2.02021スマートフォン、タブレット、AOSP互換性
3.02022Super Device、Multiscreen Collaboration
4.02023ArkUI 3.0、Live View、Celia Voice Assistant
NEXT (5.0)2024AOSP完全廃止、マイクロカーネル、ArkTSのみ

HarmonyOSアーキテクチャ:分散マイクロカーネル

HarmonyOSのアーキテクチャは、AndroidやiOSとは根本的に異なります。モノリシックなLinuxカーネルの代わりに、HarmonyOSは独自のマイクロカーネルを使用し、最小限の特権機能(メモリ管理、プロセススケジューリング、プロセス間通信)を実装しています。他のすべてのサービスはユーザースペースで実行されます。

マイクロカーネルとセキュリティ

HarmonyOSのマイクロカーネルは約10,000行のコードで構成されています(Linuxカーネルは2,000万行以上)。コードベースが小さいほど攻撃対象領域が小さくなります。システムは形式検証 — カーネルコードの正当性の数学的証明を使用しています。HarmonyOSは、生体認証、決済、暗号化キーのためのハードウェアレベルのTrusted Execution Environment(TEE)をサポートしています。プロセス間通信はIPCを介して実装され、AndroidのBinderよりも5倍高速です。

4層のアーキテクチャ

HarmonyOSのアーキテクチャは4つの層で構成されています:Kernel Subsystem(マイクロカーネル+ドライバ)、System Service Layer(システムサービス:分散データ、ファイルシステム、セキュリティ)、Framework Layer(ArkUI、マルチメディア、テレフォニー、AIサービス)、Application Layer(ユーザーアプリケーション)。各層はIPCを介して下位層から分離されています。

分散ファイルシステム

HarmonyOSは分散ファイルシステム(DFS)を提供し、すべてのユーザーデバイスのストレージを単一の仮想スペースに統合します。アプリケーションはデバイスを指定せずにURIでファイルにアクセスします。システムはリクエストをファイルが物理的に保存されているデバイスにルーティングします。DFSはエンドツーエンドの暗号化と頻繁に使用されるデータの自動レプリケーションをサポートしています。

cpp
// HarmonyOS分散ファイルシステムの操作
#include <dfs/storage_manager.h>
#include <uri/uri_helper.h>

using namespace OHOS::Storage;

// 分散デバイス上のファイルURIの取得
Uri GetDistributedFileUri(const std::string& localPath) {
    DistributedFileManager manager;
    auto deviceList = manager.GetOnlineDevices();

    for (const auto& device : deviceList) {
        Uri uri = manager.GetFileUri(device.deviceId, localPath);
        if (uri.IsValid()) {
            return uri;  // いずれかのデバイスでファイルが見つかりました
        }
    }
    return Uri::Empty();
}

// リモートデバイスからのデータ読み取り
std::string ReadDistributedFile(const Uri& uri) {
    DistributedFile file(uri);
    if (!file.Open(OpenMode::READ_ONLY)) {
        return "";
    }

    char buffer[4096];
    size_t bytesRead = file.Read(buffer, sizeof(buffer));
    file.Close();

    return std::string(buffer, bytesRead);
}

この例では、DistributedFileManagerがユーザーのオンラインデバイスすべてからファイルを検索し、分散URIを返します。DistributedFileは、アプリケーションに対して透過的に、IPCを介してリモートデバイス上で物理的にファイルを開きます。開発者はデータがどこに保存されているかを知る必要はありません。システムが自動的にリクエストをルーティングします。

ArkUIとArkTS:インターフェース開発

ArkUIは、Huaweiによって開発されたHarmonyOSの宣言的UIフレームワークです。インターフェースは、SwiftUI(iOS)やJetpack Compose(Android)と同様に、リアクティブなデータバインディングを持つコンポーネントの階層として記述されます。ArkTSは、TypeScriptをベースに、追加の静的型付けと、@Component、@State、@Prop、@Linkのデコレータを介したArkUIとの統合を備えた開発言語です。

ArkTSの基本概念

ArkTSは、UIフレームワークとの調和のためにTypeScriptを拡張します:@Component — UIコンポーネントを宣言するためのデコレータ、build() — UI要素のツリーを返す必須メソッド、@State — 変更が自動的にコンポーネントを再描画するリアクティブ変数、@Prop — 親からの入力プロパティ、@Link — 双方向バインディング。すべてのArkUIコンポーネントは、修飾子(.width、.height、.backgroundColor)を使用したチェーン構文を使用します。

java
// ArkTS — ArkUIのユーザープロファイル画面
@Component
struct ProfileScreen {
    @State userName: string = "アンナ・ペトロワ";
    @State avatarUrl: Resource = $r("media.avatar_default");
    @State isLoading: boolean = false;
    @Prop onEditClick: () => void;

    aboutToAppear(): void {
        this.loadUserData();
    }

    async loadUserData(): Promise<void> {
        this.isLoading = true;
        try {
            const data = await UserService.getProfile();
            this.userName = data.name;
            this.avatarUrl = data.avatarUrl;
        } catch (error) {
            console.error("読み込みエラー", error);
        } finally {
            this.isLoading = false;
        }
    }

    build(): void {
        Column() {
            if (this.isLoading) {
                LoadingProgress()
                    .width('50%')
                    .height('50%');
            } else {
                Stack({ alignContent: Alignment.Center }) {
                    Image(this.avatarUrl)
                        .width('100%')
                        .height('100%')
                        .objectFit(ImageFit.Cover);

                    Column() {
                        Text(this.userName)
                            .fontSize('24fp')
                            .fontWeight(FontWeight.Bold)
                            .fontColor(Color.White);

                        Button("編集", {
                            type: ButtonType.Capsule,
                            stateEffect: true
                        })
                            .onClick(() => {
                                this.onEditClick();
                            })
                            .margin({ top: '12vp' });
                    }
                    .alignItems(HorizontalAlign.Center)
                    .width('100%');
                }
                .width('100%')
                .height('300vp');
            }
        }
        .padding('16vp')
        .width('100%')
        .height('100%');
    }
}

// アプリケーションエントリポイント
@Entry
@Component
struct MainApp {
    build(): void {
        Column() {
            ProfileScreen({
                onEditClick: () => {
                    console.info("プロファイルエディタを開く");
                }
            });
        }
        .width('100%')
        .height('100%');
    }
}

ArkTSのProfileScreenコンポーネントは、リアクティブ変数の@State、入力コールバックの@Prop、Column/Stack/Text/Image/Buttonを基本UIコンポーネントとして、async/awaitによる非同期データローディングを示しています。読み込み中はLoadingProgressが表示されます。すべてのサイズはvp(仮想ピクセル)で指定されます。これはiOSのptやAndroidのdpに類似した適応型単位です。

異なるデバイスへの適応

ArkUIは、画面幅に対応するブレークポイントシステム(xs、sm、md、lg、xl)によるレスポンシブデザインをサポートしています。コンポーネントは、電話からタブレットや時計に切り替える際に自動的に再配置されます。GridRowとGridColは、ブレークポイントに応じて列数を変更する適応型コンテナです。サイズ単位:vp(仮想ピクセル)、fp(フォントピクセル — フォント設定に応じてスケール)、lpx(時計用の論理ピクセル)。

デバイス種類ブレークポイント対角線単位
スマートウォッチxs1.2"–2.0"lpx
スマートフォンsm4.7"–6.9"vp
タブレットmd7.0"–12.0"vp
ノートパソコンlg13.0"–16.0"vp
モニター / TVxl24.0"–65.0"vp

DevEco Studioと開発ツール

DevEco Studioは、IntelliJ IDEA Community EditionをベースにしたHarmonyOS公式の統合開発環境(IDE)です。ArkTSとC++をサポートするコードエディタ、ビジュアルArkUIエディタ(ドラッグ&ドロップ)、HarmonyOSデバイスエミュレータ、インスタントUIプレビュー、パフォーマンス分析用のProfilerが含まれています。

HarmonyOSエミュレータ

DevEco StudioにはQEMUベースのエミュレータが含まれており、スマートフォン(さまざまな画面サイズ)、タブレット、時計、テレビをサポートしています。エミュレータは分散環境をシミュレートし、複数の仮想デバイスを実行してクロスデバイスインタラクションをテストできます。エミュレータには仮想化が必要です(WindowsのHyper-V、LinuxのKVM)。

PreviewとLive Preview

ArkUI Previewは、ビルドやエミュレータの起動なしでUIを即座にプレビューできる機能です。コードの変更は1〜2秒でPreviewに反映されます。すべての標準コンポーネントとアニメーションがサポートされています。Previewはさまざまなブレークポイントで動作し、適応性をテストできます。Live PreviewはUSBまたはWi-Fiを介して実機に接続し、ハードウェア上でのテストが可能です。

HarmonyOS SDKとAPI

HarmonyOS SDKには以下が含まれます:ArkUI(UIコンポーネント)、Multimedia Kit(オーディオ/ビデオのキャプチャと再生)、Connectivity Kit(Bluetooth、Wi-Fi、NFC)、Location Kit(位置情報)、Sensor Kit(センサー)、AI Kit(Huawei NPUでのオンデバイス推論を備えたML Kit)。APIバージョン:API 9(HarmonyOS 3.x)、API 10(4.x)、API 11(NEXT)。

java
// Multimedia Kitを介したHarmonyOSでのカメラ初期化
import multimedia.CameraManager;
import multimedia.CameraInput;
import multimedia.PreviewOutput;

@Component
struct CameraView {
    @State isPreviewActive: boolean = false;
    cameraManager: CameraManager = CameraManager.getInstance();
    cameraInput?: CameraInput;
    previewOutput?: PreviewOutput;

    async startPreview(): Promise<void> {
        try {
            // カメラ権限のリクエスト
            const granted = await Permissions.request("ohos.permission.CAMERA");
            if (!granted) return;

            // カメラの取得(0 — 背面、1 — 前面)
            const camera = await this.cameraManager.getCamera(0);

            // カメラ入力の作成
            this.cameraInput = await this.cameraManager.createCameraInput(camera);
            await this.cameraInput.open();

            // Surfaceでのプレビュー開始(ArkUI XComponent)
            this.previewOutput = await this.cameraManager.createPreviewOutput({
                width: 1920,
                height: 1080
            });
            await this.previewOutput.start();
            this.isPreviewActive = true;
        } catch (error) {
            console.error("Camera error: " + error.message);
        }
    }

    async stopPreview(): Promise<void> {
        await this.previewOutput?.stop();
        await this.cameraInput?.close();
        this.isPreviewActive = false;
    }
}

CameraViewコンポーネントは、Multimedia Kitでの動作を示しています:Permissions.requestによる権限リクエスト、CameraManagerによるカメラ取得、CameraInputとPreviewOutputの作成。ArkUI Surface(XComponent経由)がビデオストリームを表示します。すべての操作は非同期で、try/catchによるエラーハンドリングが行われます。

分散アプリケーションとクロスデバイス

HarmonyOSの分散アーキテクチャは、競合他社との最大の違いです。アプリケーションは複数のアトミックサービス(Atomic Services)で構成でき、それぞれが最適なデバイスで実行されます。ユーザーはあるデバイスでタスクを開始し、コンテキストを失うことなく別のデバイスで続行できます。

Atomic ServicesとAbility

Atomic Serviceは、HarmonyOSにおける最小のデプロイメント単位です。各サービスは1つ以上のAbility(AndroidのActivityに類似)を実装します。Page Ability — UIを備えた画面、Service Ability — バックグラウンドタスク、Data Ability — データアクセス。アプリケーションはAbilityを別のデバイスに委任できます。例えば、UIはタブレットに表示され、AI処理はNPUを搭載した電話で実行されます。

分散データ管理

分散データ管理(DDM)システムは、デバイス間でアプリケーションの状態を同期します。DDMは分散データオブジェクト — すべてのユーザーデバイスに自動的にレプリケートされるリアクティブオブジェクトを使用します。あるデバイスでのデータ変更は即座に他のすべてのデバイスに反映されます。DDMは暗号化をサポートし、ネットワーク接続(Bluetooth、Wi-Fi、セルラーデータ)を考慮します。

テクノロジー目的類似品
Distributed Data Objectsデバイス間のリアクティブデータ同期iCloud / Firebase
Distributed File Systemデバイス間の統一ファイル空間iCloud Drive
Ability Distribute別のデバイスへの画面委任
Super Deviceデバイスを単一システムに統合Apple Continuity
Multiscreen Collaboration複数画面での1つのアプリケーション操作Sidecar(iPad + Mac)

Super Device

Super Deviceは、最大7台のHuaweiデバイスを単一のコンピューティング環境に統合できるHarmonyOSの機能です。ユーザーはSuper Deviceインターフェースでデバイスアイコンをドラッグします。スピーカーはオーディオ出力に、タブレットはセカンドスクリーンに、時計は電話のフィットネスアプリの心拍数モニターになります。すべてのデバイスは、5ms未満のレイテンシで分散バス(Distributed Bus)を介して同期します。

AppGalleryとアプリケーション公開

Huawei AppGalleryはHarmonyOSの公式アプリストアであり、Google PlayとApp Storeに次いで世界第3位です。Huawei(2026年)によると、AppGalleryの月間アクティブユーザー数は5億8,000万人以上です。開発者登録は個人無料です(Appleの99ドルとは異なります)。

公開プロセス

開発者はDevEco Studioでアプリケーションをビルドします(.hap形式 — HarmonyOS Ability Package)。AppGallery Connectを介した公開:HAPファイルをアップロードし、説明(名前、アイコン、スクリーンショット)を入力し、価格モデルを設定します。平均審査時間は1〜3営業日です。Huaweiはセキュリティ(静的解析)、API互換性、ポリシー準拠をチェックします。

収益化

AppGalleryは以下をサポートしています:有料アプリケーション(Huawei手数料15-30%)、サブスクリプション(15%手数料)、Huawei Ads Kitによる広告、IAP Kitによるアプリ内購入。Huawei Payは中国市場向けの決済ゲートウェイで、AlipayとWeChat Payをサポートしています。国際的な開発者はPayPalまたは銀行振込で支払いを受け取ります。

要件説明
形式HAP(HarmonyOS Ability Package)またはApp Pack(複数HAP)
署名DevEco Studioによるデジタル署名(Huawei証明書)
対象APIHarmonyOS 3.x用API 9+、HarmonyOS NEXT用API 11+
サイズApp Packは最大4GB、基本HAPは最大200MB
言語中国向けに簡体字中国語の必須サポート
ポリシーHuawei開発者ルールとEU向けGDPRへの準拠

Huawei Mobile Services(HMS)

HMS Coreは、GoogleのないHuaweiデバイスでGoogle Play Servicesを置き換えるサービスのセットです。Push Kit(プッシュ通知)、Map Kit(ナビゲーション付き地図)、Location Kit(位置情報)、Ads Kit(広告)、Analytics Kit(分析)、Account Kit(Huawei IDによる認証)が含まれます。HMS CoreはHarmonyOS搭載デバイスおよびHuawei Androidデバイス(AppGallery経由)で利用可能です。

よくある質問

HarmonyOS開発にはどの言語が使用されますか?

主要言語はArkTSで、ArkUI統合を備えたTypeScriptの拡張です。パフォーマンス重視のモジュールには、Native API(NAPI)を介してC++が使用されます。JavaはHarmonyOS 3-4のレガシーアプリケーションでサポートされています。HuaweiはHarmonyOS NEXT以降のすべての新規プロジェクトにArkTSとC++を推奨しています。

HarmonyOSはAndroidとどう違うのですか?

HarmonyOSは独自のマイクロカーネル(Linuxではない)、分散クロスデバイスアーキテクチャ、統一DFSファイルシステム、リアクティブDDM同期を使用しています。HarmonyOS NEXTはAOSPとの互換性を完全に廃止し、APKアプリケーションをサポートしていません。すべてのアプリケーションはArkTSまたはC++で記述されます。

ArkUIとは何ですか?

ArkUIは、ArkTSおよびC++で書かれたHarmonyOS向けの宣言的UIフレームワークです。インターフェースは@Componentを介してbuild()メソッドとリアクティブ変数(@State)で記述されます。ArkUIはブレークポイント(xs-xl)、GridRow/GridCol、GPU計算用のカスタムCanvasレンダリングによる適応型レイアウトをサポートしています。

HarmonyOSアプリケーションはどのように配布されますか?

公式ストアはHuawei AppGalleryです。開発者登録は無料です。アプリケーションはHAP(HarmonyOS Ability Package)またはApp Pack形式で配布されます。審査には1〜3日かかります。ストア手数料は収益化モデルに応じて15〜30%です。中国向けには簡体字中国語のサポートが必須です。

DevEco Studioとは何ですか?

DevEco StudioはIntelliJ IDEAベースのHarmonyOS公式IDEです。ArkTS/C++エディタ、ビジュアルArkUIエディタ、QEMUベースのエミュレータ、インスタントUIプレビュー、CPU/メモリ用Profiler、CI/CD用のAppGallery Connect統合が含まれています。Windows、macOS、Linuxに対応しています。

まとめ

  • HarmonyOS — マイクロカーネルを備えたHuaweiの分散OS、NEXTでのAOSP廃止とクロスデバイス対応
  • ArkTS — @Component、@State、@Propデコレータを備えたTypeScriptベースの主要開発言語
  • ArkUI — ブレークポイントとGridRow/GridColによる適応型レイアウトの宣言的フレームワーク
  • DevEco Studio — エミュレータ、Preview、AppGallery Connect統合を備えたIntelliJ上のIDE
  • 分散アーキテクチャにはDFS、DDM、Ability Distribute、最大7台のSuper Deviceが含まれる
  • AppGallery — 無料登録、HAP形式、15〜30%手数料の公式ストア
  • HMS CoreはPush Kit、Map Kit、Location Kit、Ads Kit、Analytics Kit、Account Kitを提供

ターンキー方式のモバイルアプリケーションを開発します

IT Sectrは2017年からスタートアップや企業向けにiOS・Androidアプリケーションを開発しています。私たちがご相談に乗り、最適なソリューションをご提案します。

プロジェクトについて相談

こちらもお読みください