Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Pub使ってますか?
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
laco
June 06, 2015
Programming
1.7k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Pub使ってますか?
Dart Meetup Tokyo #1
laco
June 06, 2015
More Decks by laco
See All by laco
Angular2とMVVM
laco0416
5
5.7k
ASP.NetでAPIを作ってみた
laco0416
0
520
OSC_F_2013 LT
laco0416
0
150
Other Decks in Programming
See All in Programming
Event is what happens
moro
2
670
TechTown - Creating Composable Callables in Contemporary C++
rollbear
0
120
APNsからLive Activityを開始する話
yumnumm
0
170
Long Living Tokens, Die, Die, Die! (or: The One Ring is Banned in Modern)
sylph01
0
160
Herb in Rails 8.2: Your ERB views, now HTML-aware @ Kaigi on Rails 2026, Tokyo, Japan
marcoroth
2
150
作れる、でも消せるか?──安全に「枯らして消す」機能削除術 / Drain, Then Delete
chobishiba
2
430
PumaからFalconに移行したRailsアプリケーションでの実践
falcon8823
0
150
速習iPhone Duo対応
yuukiw00w
2
980
SREの越境 / SRE Collaboration
y0hgi
2
310
機械に任せるテスト、人が見るテスト ⽣成AIで引き直した、運⽤保守フェーズの線引き
dske104
0
190
Atomic Design, Enforced: Scaling Mobile Design Systems (next.app devCon / droidCon Berlin 2026)
steliosf
PRO
0
170
複雑なUIコンポーネントとの ⻑い付き合い⽅:波及するバグからテスト戦略を経て、安全な再設計へ
mixplace
0
410
Featured
See All Featured
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2.1k
Art, The Web, and Tiny UX
lynnandtonic
304
22k
KATA
mclloyd
PRO
35
16k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
270
Being A Developer After 40
akosma
92
590k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
2
360
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.8k
Evolving SEO for Evolving Search Engines
ryanjones
0
330
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
400
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
360
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
930
Making the Leap to Tech Lead
cromwellryan
135
10k
Transcript
Pub、使ってますか? 2015-06-06 Dart Meetup Tokyo #1
自己紹介 • Suguru Inatomi a.k.a. @laco0416 • 株式会社トップゲート所属 • Dartは趣味
• 仕事ではGolang、TypeScript使ってます • Dartで仕事がしたい
Pub、使ってますか?
What is Pub? • Dart開発に便利な機能を備えたコマンドラインツール • pubspec.yamlを使った依存パッケージ管理 • localhostに開発サーバーの立ち上げ •
Dart webアプリのJSコンパイル • その他いろいろな機能 • Dartをインストールすれば一緒に入ってくる
> pub version Pub 1.10.0
Pub commands • pub build • pub cache • pub
deps • pub downgrade • pub get • pub global • pub publish • pub run • pub serve • pub upgrade • pub uploader
Pub build • webディレクトリ以下のDartファイルをJavaScriptにコンパイル • buildディレクトリ以下にHTMLやその他アセットと共に展開 • エントリポイントを持つDartファイルだけがJS化する
None
>pub build --mode • pub build --mode=<mode>でビルドモードを切り替えられる • ビルドモードはTransformer内で処理の分岐に使われる •
dart2jsが使うのはreleaseとdebug • 何も指定しなければrelease
release debug
σΟϨΫτϦࢦఆͰϏϧυ • pub build <directories>でビルドするディレクトリを指定 • 何も指定しなければwebディレクトリが選択される • 逆にweb以外を明示的に指定するとwebはビルドされなくなる •
--allフラグで組み込みのディレクトリをすべてビルド pub build benchmark example/foo bar pub build --all == pub build benchmark bin example test web
Pub build & Dart2js • pub buildはdart2jsコマンドを叩く • コマンドライン引数はpubspec.yaml内で設定できる https://www.dartlang.org/tools/dart2js/#options
Pub get • pubspec.yamlに記述された依存パッケージをダウンロードする • ダウンロードされたパッケージのリンクがpackagesフォルダに入る • 自分のlibディレクトリもpackagesフォルダにリンクされる
>pub get
dependencies • 基本的に pub.dartlang.org からダウンロードされる • URLを指定することで任意の場所からDLできる • Gitリポジトリの指定もできる •
ローカルパスの指定もできる
いろいろなdependencies
version constraints • any : なんでも。共存可能な最新を選択 • "1.2.3" : 単一バージョン指定
• ">=1.2.0", "<=1.2.0" : 1.2.0以上, 以下 • ">1.2.0", "<1.2.0" : 1.2.0超, 未満 • ">=1.2.0 <1.3.0" : 範囲指定も可能
"^1.2.3" • caret syntax • Dart 1.8.3から追加された記法 • semantic versionに準拠して互換性のある範囲を自動指定
• 使用するにはsdkバージョンの明示的指定が必要
まだpubspec.yaml 手書きしてるの?
den
\デン!/
https://pub.dartlang.org/packages/den
den • pubspec.yamlを記述してくれるツール • > den install hoge • 依存パッケージ管理だけじゃなくversioningも賢くやってくれる
• 作者はGoogle Developer Expertのseaneagan氏
>den spec • >den specでpubspec.yamlを初期化して作成する • プロンプト形式で初期情報を設定する • git管理されていればgitから情報取得してくれる
>den install • >den install hoge でhogeを依存パッケージに含める • hoge#version 形式でバージョン指定できる
• デフォルトは "^最新" • gitからは >den install git://github.com/owner/repo.git -sgit • pathからは >den install path/to/foo -spath
>den bump • 自身のバージョンを上げる • パッケージ配布するときに超便利 den bump patch :
1.2.3 => 1.2.4 den bump minor : 1.2.3 => 1.3.0 den bump major : 1.2.3 => 2.0.0 den bump build : 1.2.3 => 1.2.3+1 den bump release --pre : 1.2.3 => 1.2.3-dev.1 den bump release : 1.2.3-dev.1 => 1.2.3 den bump breaking : 0.5.3 => 0.6.0 : 1.2.3 => 2.0.0 den bump 2.0.0-preview
Pub global
Pub global • その名の通りマシン内でグローバルに使えるパッケージを管理する • いわゆる npm -g • Dartのコマンドラインツールのエコシステムが完成
activate • 有効化: >pub global activate hoge • hogeパッケージをグローバルから呼び出せるようになる •
--source git
[email protected]
• --source path ~/... • 無効化: >pub global deactivate hoge
run • >pub global run hoge:foo • hogeパッケージのbin/foo.dartを実行する • 呼び出されるdartファイルはエントリポイントを備えている必要が
ある • 毎回 >pub global run hoge:foo って書きたくない • >foo で実行したくない?
--executable • グローバルパッケージのアプリケーションを直接PATHに追加する • >pub global activate hoge --executable=foo --overwrite
• --executableに指定されたfooは ~/.pub-cache に追加される • PATHに ~/.pub-cache/bin を追加する必要あり。 • ↑のコマンド長いし自分のパッケージはもっと簡単に使ってほしい…
executables: • pubspec.yamlにパッケージ内の実行可能スクリプトを宣言する • ユーザーはactivateするだけでいい • <エイリアス>: 呼び出されるファイル名(bin/foo.dart) • 右辺が空なら
bin/<エイリアス>.dart が呼び出される
自作ツールを配布する
1. mkdir my-awesome-tool 2. cd my-awesome-tool 3. den spec 4.
コードを書く 5. pub publish
ローカルで自作ツールを使う
1. コードを書く my-util/bin/my-util.dart 2. pubspec.yamlにexecutables定義 3. >pub global activate --source
path myutil 4. >my-util
pub globalの注意点 • dart foo.dartとpub global run fooは実行環境が違う • pub
global runでの実行時はlocalhost上にUriがある • Platform.script.path 等、実行環境依存の処理はできない
Platform.script.path
ϩʔΧϧͷ%BSU8FCΞϓϦΛQVCHMPCBMܦ༝Ͱ QVCTFSWF͠Α͏ͱͯ͠εΫϦϓτͷύε͕औΕͳͯ͘٧Μͩ • bin/bar.dartから../webをserveしたかった • >dart bin/bar.dartなら成功する
ղܾࡦ • どうやらPlatformクラスを経由するとそういうことになるらしい • 相対パスが正解だった
Pub serve
Pub serve • 開発用サーバーを一発で立ち上げてくれる便利なやつ • pub serve + DartiumがDart Webアプリ開発の基本
• ローカルファイル変更をリアルタイム検知 • Dart実行できないブラウザからアクセスすると自動でdart2js
--port • >pub serve --port=8081 => http://localhost:8081 • 任意のポートでserve可能 •
実は --hostname=127.0.0.1 でホストネームが変えられる • >pub serve --hostname=127.0.0.1 => http://127.0.0.1:8080
>pub serve --mode • buildと同じようにビルドモードを切り替えられる • 何も指定しなければrelease • Dartium以外でのデバッグでsourcemapが使えるので debugモードがオススメ
σΟϨΫτϦࢦఆͰserve • >pub serve <directories>で配置するディレクトリを指定 • 何も指定しなければwebとtestが選択される • フロントエンドテストのサーバー起動もpub serveが行える
pub serve benchmark example/foo bar
Pub commands • pub build • pub cache • pub
deps • pub downgrade • pub get • pub global • pub publish • pub run • pub serve • pub upgrade • pub uploader ύοέʔδΛ͢Δ CJOͷεΫϦϓτΛ ࣮ߦ ґଘؔΛߋ৽͢Δ Ͱ͖Δ͚ͩ৽͘͠ ύοέʔδͷ࡞ऀใΛ ཧ͢Δ QVCHFUͷΩϟογϡΛ ཧ͢Δ ґଘҰཡΛදࣔ͢Δ ґଘؔΛߋ৽͢Δ Ͱ͖Δ͚ͩݹ͘
おまけ
GET pub.dartlang.org/api/packages • 実はAPIで更新日付順の パッケージ一覧を取得できる • 偶然見つけた • パッケージビューアみたいなものは 作れそう
• 残念ながら検索などの他のAPIは まだ見つかってない
5IBOLTGPSMJTUFOJOH © laco0416, 2015