概要
Dart は Google が開発している言語でコマンドラインツールや Web アプリ、クロスプラットフォームなモバイルアプリを開発することができます
今回は導入として簡単なコマンドラインツールを作成するところまでやってみました
なお、WebStrom は使いません
環境
- macOS 10.13.4
- dart 1.24.3
dart インストール
brew tap dart-lang/dart
brew install dart
dart -V
でバージョンが表示されれば OK です
Dart VM version: 1.24.3 (Wed Dec 13 23:26:59 2017) on "macos_x64"
サンプルの作成
dart は .dart
拡張子を持つファイルを実行します
とりあえず Hello world してみましょう
- vim hello.dart
void main() {
print('Hello, World!');
}
- dart hello.dart
Hello, World!
となれば OK です
コマンドラインアプリの作成
チュートリアルのコマンドラインアプリを動かしてみます
ライブラリのインストール
まず必要なライブラリをインストールします
dart では pub
コマンドというパッケージ管理ツールが標準で使えます
これを使って必要なライブラリをインストールしてみます
- vim pubspec.yaml
name: main
description: test code.
dependencies:
args:
ライブラリの管理は pubspec.yaml というファイルを使って行います
name と description は説明になります
dependencies に必要なライブラリを記載します
バージョンを指定しない場合は最新のバージョンがインストールされます
記載したら
pub get
でライブラリがインストールされます
インストール先はデフォルトだと ~/.pub-cache/hosted/pub.dartlang.org/args-1.4.3
になるようです
サンプルコード
- vim arg_test.dart
import 'dart:io';
import 'dart:convert';
import 'dart:async';
import 'package:args/args.dart';
const lineNumber = 'line-number';
ArgResults argResults;
void main(List<String> arguments) {
exitCode = 0; //presume success
final parser = new ArgParser()
..addFlag(lineNumber, negatable: false, abbr: 'n');
argResults = parser.parse(arguments);
List<String> paths = argResults.rest;
dcat(paths, argResults[lineNumber]);
}
Future dcat(List<String> paths, bool showLineNumbers) async {
if (paths.isEmpty) {
// No files provided as arguments. Read from stdin and print each line.
stdin.pipe(stdout);
} else {
for (var path in paths) {
int lineNumber = 1;
Stream lines = new File(path)
.openRead()
.transform(UTF8.decoder)
.transform(const LineSplitter());
try {
await for (var line in lines) {
if (showLineNumbers) {
stdout.write('${lineNumber++} ');
}
stdout.writeln(line);
}
} catch (_) {
_handleError(path);
}
}
}
}
Future _handleError(String path) async {
if (await FileSystemEntity.isDirectory(path)) {
stderr.writeln('error: $path is a directory');
} else {
exitCode = 2;
}
}
- dart main.dart pubspec.yaml
とすると YAML ファイルの内容をそのまま出力します
引数無しで実行すると入力待ち状態になり何か入力するとそのまま標準出力します
また
dart main.dart -n pubspec.yaml
と実行すると行番号を出力してくれます
サンプルコードの詳しい説明についてはこちらが非常にわかりやすいです
Tips
NoSuchMethodError: No top-level getter 'utf8' declared.
と出る場合は 31 行目の UTF8.decoder
が小文字になっていないか確認してください
執筆時点の公式のサンプルコードでは小文字になっておりエラーが発生しました
最後に
dart のインストールからサンプルコードの実行まで試してみました
パッケージ管理ツールの pub も使ってみました
コマンドラインツールの作成のほかに Web アプリと Flutter というモバイルアプリを開発できる環境構築の Getting Started もあるようです
Web アプリまたはモバイルアプリを開発する場合は WebStorm があったほうが良いかなと思います
0 件のコメント:
コメントを投稿