patorashのブログ

方向性はまだない

Dart良さそう

昨日の社内勉強会で、「Dartやってみたい」というLTをしました。 DartGoogleが作ったプログラミング言語で、JavaScriptを置き換えるようなポジションでデビューしたのですが、今は方向転換してフロントエンドの扱い的には、JavaScriptにクロスコンパイルするのをメインとするようになりました。また、Dart VMがあるので、サーバサイドやCLIツールを作るのにも適していると思います。

なんで「Dartやってみたい」という発表かというと、まだちゃんとDart使ったことがないから…。

Dartはオワコンになったのか?

社内勉強会のときにも「オワコンになったんじゃないの?」という反応がありましたが、むしろGoogleでは積極的に使われていることや(Adwords, AdsenseとかはDartらしい)、FlutterというAndroid, iOSの両方の開発ができるフレームワークが登場したこと、SassがRubyDartで開発されていることなど、まだまだオワコンではないという紹介をしました。

Dartのどこが良さそうか

サンプルコードを少しだけ書いてみたのですが、たしかに馴染みのある機能が多く、かつ、書きやすいです。

  • クラスベースで馴染み深い
  • 全てがオブジェクトでプリミティブ型とかない
  • 型の柔軟性がすごい(var宣言のみで動く。型も使える)
  • 単一継承、インターフェース、mixinが使える
  • ジェネリクスが使える
  • 非同期処理が得意(Future,Completer, async, await)
  • スレッドセーフ
  • 変数やメソッドにスコープがある(public, private)
  • Dart VMが速い(らしい)

型の柔軟性

var宣言でdynamic型を使う

あまり型を考えずに実装しても、動きます。このコードはvar宣言を使ってdynamic型で実装しています。Userクラスには名前を入れるようにしてあるので、文字列がわかることを想定していますが、user2のように数字を渡しても動いてしまいます。とはいえ、とりあえず作るのには楽ですね。

class User {
  var _forename;
  get forename => _forename;
  set forename(value) => _forename = value;
  var surname;
  
  
  getFullName() {
    return "$forename $surname";
  }
}

void main() {
  var user1 = new User();
  user1.forename = "Taro";
  user1.surname = "Yamada";
  print(user1.getFullName());
  
  var user2 = new User();
  user2.forename = 1;
  user2.surname = 2;
  print(user2.getFullName());
}
dynamic型をString型, User型に変更する

var宣言していた変数を、ちゃんと型宣言するようにしてみました。こうすると、user2で数字を入れている箇所は、Strongモードにするとエラーになります(普通でもwarningは出る)。最初から型でガチガチにしなくても、後々変更していくことができるので、トライアンドエラーしやすい言語だなという印象です。

class User {
  String _forename;
  String get forename => _forename;
  set forename(value) => _forename = value;
  String surname;
  
  
  String getFullName() {
    return "$forename $surname";
  }
}

void main() {
  User user1 = new User();
  user1.forename = "Taro";
  user1.surname = "Yamada";
  print(user1.getFullName());
  
  User user2 = new User();
  user2.forename = 1;
  user2.surname = 2;
  print(user2.getFullName());
}

まとめ

柔軟なのに型も使えて速い言語という印象に変わったので、個人プロジェクトでDartを使ってみたいなぁ〜と強く感じています。 ちょうど昨日は東京でDart MeetUp Tokyo #2というイベントがあったみたいでした。聞いてみたかった!

プログラミング言語Dart

プログラミング言語Dart

Dartの本といえば、日本ではこれくらいしかないのですが、海外では結構出ています。でもこの本もまだまだいいと思います。中古市場がどえらい値崩れしてますので、興味のある人には買ってみるといいかもですね。