コンテンツにスキップ

ArkUI 使用レポート

皆さんこんにちは、今日は皆さんが見たくないものをお届けします。

ArkTS 言語

ArkTS は鴻蒙エコシステムのアプリケーション開発言語です。

TypeScript の基本的な構文スタイルを保ちながら、さらに仕様を通じて静的チェックと解析を強化し、プログラム実行前の開発段階でより多くのエラーを検出し、コードの堅牢性を向上させ、より良い実行パフォーマンスを実現します。

同時に、宣言的 UI パラダイム、状態管理サポートなどの機能を提供し、開発者がより簡潔で自然な方法で高性能アプリケーションを開発できるようにします。

公式サイトではこう言っているが、僕はただ「うえぇ...」としか言えない。おそらく HUAWEI には独自の言語を作る能力がないのだろう、結局 TypeScript を Swift や Kotlin と継ぎ接ぎした継ぎ接ぎモンスターにしてしまった。僕が嫌いな書き方、例えば無名関数の .bind(this) や、テンプレート文字列でバッククォート const str = `Show: ${another} value` を使う時も this を付けなければならない、これは絶対に言語実装の制限によるものだろう。

同様に、僕は ArkTS が好きではない:

  1. ArkTS 言語を使用するには DevEco Studio を使わなければならない

  2. DevEco Studio に内蔵されているコードフォーマットの結果がひどい:

    TypeScript
    .toolBar({ items: [
      { value: "Plunger", icon: "house", action: () => {
      } },
      { value: "Intelligent", icon: "house", action: () => {
      } },
      { value: "Shop", icon: "house", action: () => {
      } },
      { value: "Me", icon: "house", action: () => {
      } },
    ]
    })

    本当に見てられないでしょう、これも Xcode と同じことを学んでいるの?

  3. フォーマットスタイルが統一されていない、Swift と同じで、改行とスペースを数個追加するだけでフォーマット結果が変わってしまう、複数人での共同作業がどうなるか想像もできない

  4. ホットリロードはないが、SwiftUI と同じように Preview 機能が提供されている —— なぜなら Preview 機能すらなければ、エミュレータすらサポートしていない DevEco Studio にとって、鴻蒙デバイスがなければ鴻蒙開発なんて諦めるしかないから

DevEco Studio

おい、これ我らの Android Studio じゃないか、いや違う、これ我らの IntelliJ IDEA じゃないか?次のリリース時には明記してね。

実は自社で IDE を開発する能力がないから、「IntelliJ IDEA Community オープンソース版をベースに構築」することを選択したのだ。この選択は正しいが、結果は満足のいくものとは言えない。

まずはコードフォーマットの問題、これは上で話したので、次は他のことを話そう。

プラグインが少なすぎる、僕が最もよく使うコードエディタは VSCode なので —— 実は僕の心の中ではこれは IDE と同等の存在だと言える —— だからキーバインドももちろん VSCode に合わせたい、IntelliJ IDEA と Android Studio には VSCode KeyMap のプラグインがあって VSCode からキーバインドをインポートできるが、Dev Studio にはない。

まさか HUAWEI は完全に VSCode を使っていないのか……おい、Xcode もないのか、これで謎が解けた。

コード補完がひどい、これは極めて出来が悪い。コード補完が全く文脈に基づいていない感じ、つまりカーソルが現在いる場所にどんなタイプのものを入力すべきか、デフォルトで何を入力できるかを考慮して補完内容を提示していない —— オリジナルの TypeScript の VSCode 上でのコード補完は真逆の極端で、文脈に過度に依存しすぎて、時々欲しい結果が補完結果に含まれていないこともある。

ローカライゼーションが不十分、理屈から言えばこれは国内企業のソフトウェアなのだからローカライゼーションはもっと良くできるはずなのに、多くの場所が翻訳されていない —— 全英語インターフェースの方が良い、開発者はもっと英語に触れるべきだと言う人もいるかもしれないが、僕は英語がわからない 僕はもっと慣れ親しんだ環境にいたいのだ。

ArkUI

君たちのドキュメントも Apple から学んだの?ArkUI、SwiftUI、Jetpack Compose、そして XML ビューベースの Android ドキュメントがどうして全部同じような感じなの?

これでチュートリアル本の生存空間があるってわけね。

公式入門チュートリアルの UI も醜すぎるでしょう、それとも Harmony Design がこんな感じなの?実際、これが Harmony Design と言えるのかどうかも分からない、本当に醜いから。

アイコンはどうやって使えばいいの?本当に SVG の山をダウンロードしてからリソースファイルとして使わなければならないの?鴻蒙には独自のアイコンライブラリがあるのに、Flutter や SwiftUI のようにもっと ArkTS と統合できないの?

Symbol があるのは見たよ、でも同じく、サンプルコードは?後でサンプルコードを見つけたけど、今もう一度探せと言われたら、どこから掘り出したサンプルコードなのか本当に分からない。

TypeScript
SymbolGlyph($r('sys.symbol.ohos_trash'))
  .fontWeight(FontWeight.Lighter)
  .fontSize(96);
TypeScript
Text() {
  SymbolSpan($r('sys.symbol.ohos_trash'))
    .fontWeight(FontWeight.Normal)
    .fontSize(96)
}

おい、僕には SymbolGlyphSymbolSpan がないんだけど、バージョン要件があるの?次回は明記してね。

同じくコンポーネント Gallery もなくて Harmony Design のデフォルトコンポーネントスタイルを展示していない、Apple を真似るのはやめてよ、君たちはもっと良くできるはずだよ。

まとめ

疲れる。