mcpField
C
coding-dart

coding-dart

github.com/alphaonedev開発48 回インストール
リポジトリ

coding-dart について

coding-dartは、Dart 3でアプリやツールを開発する人向けのスキルです。Flutter連携、null安全性、非同期処理、並行処理、パッケージ管理を扱います。

主な機能

  1. 01Dart 3のnull安全性
  2. 02Futureとasync/awaitの活用
  3. 03Streamによる非同期データ処理
  4. 04Isolateによる並行タスク
  5. 05Flutterウィジェット連携
  6. 06pubによる依存関係管理

活用シーン

  1. 01Dartのnullable型の確認
  2. 02非同期I/Oコードの作成
  3. 03Streamを使ったデータ処理
  4. 04CPU負荷の高い処理のIsolate移行

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/alphaonedev/openclaw-graph --skill coding-dart

インストール後、Claude Code で/coding-dartを入力して読み込まれたか確認します。

詳細

coding-dart

目的

このスキルは、Dart 3 のプログラミングに関する専門知識を提供します。null safety、async/await、ストリーム、アイソレート、Flutter との統合、pub によるパッケージ管理などの機能に焦点を当て、アプリやツール向けの効率的で安全なコードの作成を支援します。

使用する場面

モバイルアプリ(例:Flutter)、並行処理、非同期処理、パッケージ依存関係を扱う Dart 3 プロジェクトでこのスキルを使用します。実行時エラーを避けるために null safety が重要な場合や、ストリームでリアルタイムデータを処理する場合にも適用します。

主な機能

  • Null Safety:遅延初期化には late、パラメーターには required を使用して、非 null 型を強制します。たとえば、late String name; は、使用前に初期化する必要がある変数を宣言します。
  • Async/Await:Future と async 関数を使用して非同期コードを処理します。例:Future<void> fetchData() async { var data = await http.get('/api/data'); }。
  • ストリーム:dart:async の Stream を使用して非同期データストリームを管理します。例:Stream<int> countStream() async* { for (int i = 0; i < 5; i++) yield i; }。
  • アイソレート:CPU 負荷の高い処理には Isolate を使用して並行タスクを実行します。例:Isolate.spawn(workerFunction, args); を使って処理を別のアイソレートに移します。
  • Flutter との統合:ウィジェットと状態管理を使って UI を構築します。例:シンプルなコンポーネントには StatelessWidget を使用します。
  • Pub パッケージマネージャー:pub で依存関係を管理します。pub add package_name を使ってパッケージを追加できます。

使用パターン

タスクを実行するには、型を常に指定して null safety に対応したコードを構成します(例:null 許容値には String? optionalString; を使用します)。非同期処理では、I/O を async 関数で囲み、可読性を高めるために await を使用します。UI のブロックを避けるには、バックグラウンドタスクにアイソレートを使用します。Flutter との統合は、main.dart の MaterialApp から始めます。パッケージ管理では、pubspec.yaml を編集した後に pub get を実行します。デプロイ前には必ず dart test でテストしてください。

主なコマンド/API

  • Dart CLI コマンド:厳格なチェックを適用するには、--fatal-infos などのフラグを付けて dart analyze を使用します。スクリプトは dart run bin/main.dart で実行します。非同期処理では、dart:async をインポートし、Future.delayed(Duration(seconds: 1), () => print('Delayed')); を使用します。
  • Pub コマンド:特定のバージョンを指定して依存関係を追加するには pub add http --major-version 1 を使用します。更新には pub upgrade、パッケージのビルドには pub build --release を使用します。
  • 主な API:カスタムストリームには StreamController を使ってストリームにアクセスします。例:var controller = StreamController<int>(); controller.add(1);。アイソレートでは、単純なタスクに Isolate.run を使用します。例:Isolate.run(() => computeHeavyTask());。
  • 設定形式:依存関係を設定するには pubspec.yaml を編集します。例:
    dependencies:
      http: ^1.0.0
    
    シークレットには環境変数を使用します。たとえば、$API_KEY を設定し、String.fromEnvironment('API_KEY') でアクセスします。

統合に関する注意

pubspec.yaml に Flutter の依存関係を追加し、flutter pub get を実行して Dart を Flutter と統合します。外部 API では、$FLUTTER_API_KEY などの環境変数を設定し、コード内で Platform.environment['FLUTTER_API_KEY'] を使ってアクセスします。C ライブラリには Dart の FFI を使用し、VS Code とは Dart 拡張機能(code --install-extension Dart-Code.dart-code でインストール)を使って統合するなど、他のツールと組み合わせることもできます。Dart SDK が PATH に含まれていることを確認し、dart --version で確認してください。

エラー処理

非同期コードのエラーは、async 関数内の try-catch で処理します。例:

try {
  var result = await fetchData();
} catch (e) {
  print('Error: $e');
}

ストリームでは、onError コールバックを使用します。例:stream.listen((data) => print(data), onError: (error) => print(error))。null safety のエラーは dart analyze で確認し、例外を伝播させるには rethrow を使用します。アイソレート間の通信エラーは、ReceivePort と SendPort で処理します。

具体的な使用例

  1. 非同期 HTTP リクエスト:null 安全性を確保してデータを取得するには、次のようにします:import 'package:http/http.dart' as http; Future<String?> getData() async { try { var response = await http.get(Uri.parse('https://api.example.com/data')); return response.body; } catch (e) { return null; } } 次に、var data = await getData(); if (data != null) print(data); のように呼び出します。
  2. Stream を使った Flutter ウィジェット:Flutter でシンプルなカウンターストリームを作成します:import 'dart:async'; class MyWidget extends StatelessWidget { Stream<int> counter() async* { for (int i = 0; i < 5; i++) yield i; } @override Widget build(BuildContext context) { return StreamBuilder<int>( stream: counter(), builder: (context, snapshot) => Text(snapshot.data?.toString() ?? '0'), ); } }。

グラフの関係

  • クラスターとの関連:coding(例:Flutter 固有のタスク向けの coding-flutter とタグを共有しています)。
  • タグを介したつながり:dart(一般的なプログラミングスキルにリンクします)、flutter(UI に特化したスキルと統合します)、coding(coding-python など、ほかの言語のスキルとグループ化します)。

コメント