SlideShare una empresa de Scribd logo
1 de 18
Descargar para leer sin conexión
「Angular 4 の最新動向と、2017年再注目のDart、そしてAngular Dart 」
Dart の部 3/3
HRMOS事業部 小林 達
at BizReach on 2017.3.6
サーバーサイド Dart
を試してみる
自己紹介
✓ 小林 達 (こばやしさとし)
✓ HRMOS[ハーモス]プロダクト開発部
✓ こぼれ球拾いが気軽にできると嬉しい昨今
▶ さくっと使えて引き継ぎやすい武器が欲しい
なぜ?
Googleさんの注力はAngularとFlutter(アプリ)。。
サーバサイドは分野は正直流行っていない。。が、しかし、
✓ 言語仕様の簡潔な静的言語として、サーバでも生産性が期待できるのでは?
✓ 標準ライブラリが充実しているので、リッチなフレームワークがなくてもちょっとした
用途に使えるのでは?
サーバーサイド Dart ?
もしつかえるならば、
ちょっとした用途、つまり、
✓ 社内サービスだけどフロントリッチなのがさっと作れたりするのでは?
✓ フロントメインの人にとっても、とっつきやすいのでは?
✓ 2本め、3本めの武器として使い回しが効くのでは?
フレームワークを選ぶ
Webフレームワークの選択
✓ ALL-IN-ONEなら、Aqueduct の開発はアクティブなのでいいかも
● stablekernelがバックアップ(アトランタのスタートアップ?)
● Dart Developer Summit でも発表あり
● DI, ORM, 認証, テンプレート, テスト, DBマイグレーションなどの機能
✓ シンプルなら、純正のShelfが第一候補
● shelf_xxx など機能ごとにパッケージが分かれている
● フレームワークというより、フレームワークの構成部品という位置づけなので、
初心者にはとっつきづらいかも
✓ 中間的な選択肢として、
Redstone をチョイス
Redstone をチョイス
Awesome Dart リストから見ていって選んだ。
✓ Shelf を利用したラッパー
✓ ぱっと見分かりやすい
✓ 比較的アクティブ
✓ ALL-IN-ONEではないので、DBアクセスなどは別途チョイスが必要
書いてみる
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
Hello World !
URLからのパラメータ取得
getUser関数を書く。
@web.Route("/user/find/:id")
getUser(String id) =>
{"userId": id, "name": "User", "login": "user"};
@web.Route("/")
helloWorld() => "Hello, World!";
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
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
もっと学べそうなリソースもあった
✓ 公式サイト
● Write HTTP Clients & Servers
✓ 1時間コードラボ?
● https://github.com/dart-lang/one-hour-codelab
まとめ
まとめ
✓ 奇をてらった感じがない。とっつきやすい !
✓ 開発していて楽しい !
✓ スタブサーバとして使うのはありかも
● フロントエンドエンジニア主体でメンテできる感がある
● 少しずつスキルを広げられそう
✓ Redstoneをプロダクションに使うには不安
● 品質とかより、今後の展望的に。ドキュメントもあまりない
✓ 小さなものであれば、自分達で作ってもいいのかもしれない
● 勉強不足ですが、ドキュメントは結構ある。
● ライブラリのコードも読もうと思えば読める

Más contenido relacionado

Similar a サーバーサイドDartを試してみる

磯野ー!Dartやろうぜー!
磯野ー!Dartやろうぜー!磯野ー!Dartやろうぜー!
磯野ー!Dartやろうぜー!
uka yare
 
SharePoint 2013 ワークフロー開発入門
SharePoint 2013 ワークフロー開発入門SharePoint 2013 ワークフロー開発入門
SharePoint 2013 ワークフロー開発入門
Hiroaki Oikawa
 

Similar a サーバーサイドDartを試してみる (14)

磯野ー!Dartやろうぜー!
磯野ー!Dartやろうぜー!磯野ー!Dartやろうぜー!
磯野ー!Dartやろうぜー!
 
「ドメイン駆動設計」の複雑さに立ち向かう
「ドメイン駆動設計」の複雑さに立ち向かう「ドメイン駆動設計」の複雑さに立ち向かう
「ドメイン駆動設計」の複雑さに立ち向かう
 
devsumi2013application
devsumi2013applicationdevsumi2013application
devsumi2013application
 
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」
 
SharePoint 2013 ワークフロー開発入門
SharePoint 2013 ワークフロー開発入門SharePoint 2013 ワークフロー開発入門
SharePoint 2013 ワークフロー開発入門
 
【D3 公開用】ドメイン駆動設計とscala 〜既存プロジェクトへの適用〜
【D3 公開用】ドメイン駆動設計とscala 〜既存プロジェクトへの適用〜 【D3 公開用】ドメイン駆動設計とscala 〜既存プロジェクトへの適用〜
【D3 公開用】ドメイン駆動設計とscala 〜既存プロジェクトへの適用〜
 
Rustで DDD を実践しながら API サーバーを実装・構築した(つもり)
Rustで DDD を実践しながら API サーバーを実装・構築した(つもり)Rustで DDD を実践しながら API サーバーを実装・構築した(つもり)
Rustで DDD を実践しながら API サーバーを実装・構築した(つもり)
 
What’s new in 4.0 of LibreOffice (Lake-Hamanako-ver.) / LibreOffice 4.0の新機能 (...
What’s new in 4.0 of LibreOffice (Lake-Hamanako-ver.) / LibreOffice 4.0の新機能 (...What’s new in 4.0 of LibreOffice (Lake-Hamanako-ver.) / LibreOffice 4.0の新機能 (...
What’s new in 4.0 of LibreOffice (Lake-Hamanako-ver.) / LibreOffice 4.0の新機能 (...
 
Developer's Summit 夏 EnterpriseTED 資料
Developer's Summit 夏 EnterpriseTED 資料Developer's Summit 夏 EnterpriseTED 資料
Developer's Summit 夏 EnterpriseTED 資料
 
SRE 1st steps
SRE 1st stepsSRE 1st steps
SRE 1st steps
 
愛せよ、さもなくば捨てよ。
愛せよ、さもなくば捨てよ。愛せよ、さもなくば捨てよ。
愛せよ、さもなくば捨てよ。
 
2014.05.27 字形DBテストサイトの構築と状況
2014.05.27 字形DBテストサイトの構築と状況2014.05.27 字形DBテストサイトの構築と状況
2014.05.27 字形DBテストサイトの構築と状況
 
20190524_WindowsユーザのためのSalesforce DX
20190524_WindowsユーザのためのSalesforce DX20190524_WindowsユーザのためのSalesforce DX
20190524_WindowsユーザのためのSalesforce DX
 
プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)
プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)
プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)
 

Último

Último (11)

論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 

サーバーサイドDartを試してみる