coding-dart について
coding-dartは、Dart 3でアプリやツールを開発する人向けのスキルです。Flutter連携、null安全性、非同期処理、並行処理、パッケージ管理を扱います。
主な機能
- 01Dart 3のnull安全性
- 02Futureとasync/awaitの活用
- 03Streamによる非同期データ処理
- 04Isolateによる並行タスク
- 05Flutterウィジェット連携
- 06pubによる依存関係管理
活用シーン
- 01Dartのnullable型の確認
- 02非同期I/Oコードの作成
- 03Streamを使ったデータ処理
- 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 で処理します。
具体的な使用例
- 非同期 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);のように呼び出します。 - 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 など、ほかの言語のスキルとグループ化します)。