この文書の目的
2020年4月7日からの緊急宣言を受けた会社の休業で、暇を持て余しているので、勉強を始めることにした。
環境
macOS Mojave 10.14.6 をインストール済のMacBook Pro (13-inch, Mid 2012)で。
情報源
こういう時にこそ先人の書いたQiitaの記事を読むべきとは思うけれど、まずは原典にあたる。
インストール
https://dart.dev/get-dart によると、Homebrewでのインストールを勧められた。
$ brew tap dart-lang/dart && brew install dart
...
==> Tapping dart-lang/dart
Cloning into '/usr/local/Homebrew/Library/Taps/dart-lang/homebrew-dart'...
remote: Enumerating objects: 34, done.
remote: Counting objects: 100% (34/34), done.
remote: Compressing objects: 100% (25/25), done.
remote: Total 1556 (delta 19), reused 20 (delta 9), pack-reused 1522
Receiving objects: 100% (1556/1556), 282.14 KiB | 568.00 KiB/s, done.
Resolving deltas: 100% (948/948), done.
Tapped 4 formulae (29 files, 357.9KB).
==> Installing dart from dart-lang/dart
==> Downloading https://storage.googleapis.com/dart-archive/channels/stable/rele
######################################################################## 100.0%
==> Caveats
Please note the path to the Dart SDK:
/usr/local/opt/dart/libexec
==> Summary
🍺 /usr/local/Cellar/dart/2.7.2: 474 files, 463.3MB, built in 2 minutes 45 seconds
いったんhash -r
してから、dart --version
すると、とりあえずインストールできていることは確認できた。
$ dart --version
Dart VM version: 2.7.2 (Mon Mar 23 22:11:27 2020 +0100) on "macos_x64"
Hello World的なヤツ
void main() {
print('Hello World');
}
とりあえず、こんなhello.dart
ファイルを作った。
$ dart ./hello.dart
Hello World!
もう敢えて書くまでもなかった。
文法とか
プログラミング言語を極めないで、適当に齧っていると「よく使うんだけれど書き方がそれぞれ微妙に異なる」場面に遭遇して困惑することになる。
会社ではガッツリ事務系の部門の「なんかパソコンとか?に詳しい人」扱いなので、業務上一番使うプログラミング言語はExcel VBAだったりするので、条件分岐や繰り返し構文の書き方については、なにか(自分にとっては)新しいプログラミング言語に触れるたびに戸惑うことになる1。
条件分岐
if (条件) {
...
} else if (条件) {
...
} else {
...
}
なるほど、else if
だ。elsif
でもelif
でもElseIf
でもない。コレが、いつも地味に混乱するポイントだ。
繰り返し
for文とforEach methodが使える。これは混乱することはなさそうだ。
<List>
型を宣言しておくと、配列になる。
for (int i=0; i<10; i++) {
print(i);
}
List lists = ['a', 'b', 'c', 'd'];
for (var i in lists) {
print(i);
}
lists.forEach((i) {print(i);});
ところで、print()
は、改行するのな。そもそも行頭でなんの宣言もしてないのに、print()
が使えるというのは、組み込み関数的な何かなのか、、、と思ったら、どうやらdart.core
というライブラリで定義されていて、自動でimport
されるようになっているらしい。
https://api.dart.dev/stable/2.7.2/dart-core/dart-core-library.html
##dart:core library
Built-in types, collections, and other core functionality for every Dart program.This library is automatically imported.
型
dart:coreのドキュメントを雑に眺めただけで、様々な型やclassがあることが分かる。
- int, double
- bool
- String, StringBuffer
- List
- Map
- DateTime
- Uri
などなど。最近のモダンな言語っぽい。
そして、型宣言は前置なので、int i=0;
みたいに書けばいい。var i:Int = 0;
みたいな書き方に馴染みづらいと思っていたので、ここは何も考えなくて良くて、自分には都合がイイ。
とはいえ、int
なのか、Int
なのか?みたいなのには、しばらく悩まされそう。
関数定義
関数については、特に変わったところはなさそう。
void main() {
String hello = say();
print(hello);
}
String say(){
return "Hello World!";
}
これをdart ./hello.dart
すると、Hello World!
が出力される。
つらつら見てると、名前付き変数とかあるっぽい。コレも特段変わったところはなさそう。
他に覚えることは?
とりあえず、他にも色々覚える必要がありそうだけれど、準備運動はここまでということにして、Flutterに飛び込むことにする。
-
Excel VBAのFOR文やIF文が特殊なために、余計にワケ分からなくなってるだけな気もする。 ↩