Más contenido relacionado
Similar a サーバーサイドDartを試してみる (14)
サーバーサイドDartを試してみる
- 2. 自己紹介
✓ 小林 達 (こばやしさとし)
✓ HRMOS[ハーモス]プロダクト開発部
✓ こぼれ球拾いが気軽にできると嬉しい昨今
▶ さくっと使えて引き継ぎやすい武器が欲しい
- 7. Webフレームワークの選択
✓ ALL-IN-ONEなら、Aqueduct の開発はアクティブなのでいいかも
● stablekernelがバックアップ(アトランタのスタートアップ?)
● Dart Developer Summit でも発表あり
● DI, ORM, 認証, テンプレート, テスト, DBマイグレーションなどの機能
✓ シンプルなら、純正のShelfが第一候補
● shelf_xxx など機能ごとにパッケージが分かれている
● フレームワークというより、フレームワークの構成部品という位置づけなので、
初心者にはとっつきづらいかも
✓ 中間的な選択肢として、
- 11. Hello World !
server.dart ファイルに main関数とhelloworld関数
を追加して、dart コマンドで起動すれば立ち上が
る。シンプル。
※ 実際には、以下を先に実施
1. stagehand で server-shelf のテンプレート作成
2. pubspec.yaml の依存を変更
3. pub get
@web.Route("/")
helloWorld() => "Hello, World!";
void main() {
web.setupConsoleLog() ;
web.start();
}
❯❯❯ dart bin/server.dart
⏎
INFO: 2017-03-03 11:23:56.494179: Configured target for / [GET]: .helloWorld
INFO: 2017-03-03 11:23:56.523415: Running on 0.0.0.0:8080
- 14. DI、Future、JSON
class HeroService {
Future<List<Hero>> getHeroes() { … }
}
@web.Group("/heroes")
class HeroController {
HeroService _service;
HeroController(this._service);
@web.Route("/list")
service() => _service.getHeroes()
.then((heroes) => { "heroes": heroes});
}
void main() {
web.addModule(new Module()
..bind(HeroService)) ;
web.setupConsoleLog() ;
web.start();
}
✓ DIは、AngularのDIライブラリ
(di.dart)をベースにしたもので、
ルーティングなどで利用。
✓ Futureで返したレスポンスは、そ
のまま返せる。
1
1
1
2
2
- 15. DI、Future、JSON
✓ /heroes/list へアクセス。
(Hero の toJson() は略)
class HeroService {
Future<List<Hero>> getHeroes() ...
}
@web.Group("/heroes")
class HeroController {
HeroService _service;
HeroController(this._service);
@web.Route("/list")
service() => _service.getHeroes()
.then((heroes) => { "heroes": heroes});
}
void main() {
web.addModule(new Module()
..bind(HeroService)) ;
web.setupConsoleLog() ;
web.start();
}
3
3
- 18. まとめ
✓ 奇をてらった感じがない。とっつきやすい !
✓ 開発していて楽しい !
✓ スタブサーバとして使うのはありかも
● フロントエンドエンジニア主体でメンテできる感がある
● 少しずつスキルを広げられそう
✓ Redstoneをプロダクションに使うには不安
● 品質とかより、今後の展望的に。ドキュメントもあまりない
✓ 小さなものであれば、自分達で作ってもいいのかもしれない
● 勉強不足ですが、ドキュメントは結構ある。
● ライブラリのコードも読もうと思えば読める