LoginSignup
2
2

More than 3 years have passed since last update.

Dart始めました

Last updated at Posted at 2020-04-22

この文書の目的

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的なヤツ

hello.dart
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なのか?みたいなのには、しばらく悩まされそう。

関数定義

関数については、特に変わったところはなさそう。

hello.dart
void main() {
    String hello = say();
    print(hello);
}

String say(){
    return "Hello World!";
}

これをdart ./hello.dartすると、Hello World!が出力される。

つらつら見てると、名前付き変数とかあるっぽい。コレも特段変わったところはなさそう。

他に覚えることは?

とりあえず、他にも色々覚える必要がありそうだけれど、準備運動はここまでということにして、Flutterに飛び込むことにする。

[^1]: Excel VBAのFOR文やIF文が特殊なために、余計にワケ分からなくなってるだけな気もする。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2