ntaoo blog

主にDart, Flutter, AngularDartについて書いていきます。ときどき長文。日本語のみ。Twitter: @ntaoo

Mediumに引っ越しています

こちらで記事を書いています。 medium.com このはてなブログは当分は更新予定がありません。

視聴メモ : Why JavaScript Programmers Hate You: an ode to dynamic languages, Jan Vitek 

www.youtube.com 2013年のプレゼン。ここでのYouは、このプレゼンの聴衆である言語研究コミュニティを指している。以下視聴メモ。 Why JavaScript Programmers Hate You: an ode to dynamic languages, Jan Vitek 型は生産性を上げるいう伝統的な信念がある…

DartからJavaScriptライブラリのAPIを呼び出す方法についてのメモ

文体をですます調に変えます DartからJavaScriptライブラリのAPIを呼び出す処理を書くことがまれにあります。まれなのですが、そのたびに書き方を忘れたり罠にはまったりするので、ここにメモを残して思い出しやすくしておきます。 dartdevcでは動作するコー…

Dartでrangeで繰り返し処理

Pythonのrangeに相当する関数で繰り返し処理をする。package:quiverを使う。 pub.dev 使用例 import 'package:quiver/iterables.dart'; // 1から10まで出力 for (final i in range(1, 11)) { print(i); } Smalltalkでいう1 to: 10, Rubyだと1..10。 地味にな…

Flutter Webの現状調査

Web特有の事情はどう解決するのかに興味があって内部構造などを調べていた。 開発が進むにつれて実装はどんどん進化して問題解決されていくだろうし、現段階のこの情報の正確性も保証しない。個人のメモを公開しているだけなので鵜呑みにはしないようにして…

Google I/O 19 Dart関連セッションの視聴メモ その2: Pragmatic State Management in Flutter (Google I/O'19)

Pragmatic State Management in Flutter (Google I/O'19) Flutterで状態管理をする方法についてのセッション。去年も同じペアで同じテーマのセッションがあった。 https://www.youtube.com/watch?v=d_m5csmrf7I&list=PLjxrf2q8roU2no7yROrcQSVtwbYyxAGZV&ind…

Google I/O 19 Dart関連セッションの視聴メモ : Dart: Productive, Fast, Multi-Platform - Pick 3 (Google I/O'19)

Google I/O 19には数種類Dart関連セッションがあり、Youtubeに公開されている。その視聴メモ。まずはひとつめ。 Dart: Productive, Fast, Multi-Platform - Pick 3 (Google I/O'19) https://www.youtube.com/watch?v=J5DQRPRBiFI&list=PLjxrf2q8roU2no7yROrc…

Flutter Webが公開された / Flutter Native アプリをFlutter Webアプリに移植してみた

エントリーページ https://flutter.dev/web ブログ記事 https://medium.com/flutter-io/bringing-flutter-to-the-web-904de05f0df0 リポジトリ https://github.com/flutter/flutter_web Flutter Frameworkの上でDartでUIを書いていくので、HTML, CSS, JavaSc…

キーボードの自作欲

商業ベースのキーボードは、既存のキーボードの規格に縛られてしまい革新を期待できそうにない。 どのような技術革新が起ころうとも、おそらく一生キーボードを使い続けることになるので、キーボードを自作しても割に合う投資になるはず。自作キーボード市場…

BLoCパターンにおける、AngularDartでのStreamの扱い方

BLoCパターンでModelを設計するとUIとの通信はStreamとSinkに限定される。StreamをAngularDartのComponentでlistenしてViewを更新するコードについて、迷ったりハマったりするかもしれないところを解説する。 Async Pipeを使用する際の不具合を避ける Behavi…

AngularDartの、Angular Componentsの使い方

フルスクラッチでUIを構築していくのは現実的ではない。現代のUIに対する要求水準の高さに応えるために決定的に重要な要素として、UIライブラリの質がある。 Angular TypeScript版にAngular Materialライブラリが提供されているように、AngularDartにはpacka…

2018年のDart言語の振り返り

2019年初に2018年のDartを振り返ってみる。僭越ながらDart advent calendar 25日目の記事だが、大幅に超過して新年になってしまった。申し訳ない。そして大した内容ではない。個人の回顧です。 Dart 2のリリースと、Dart 1の回顧 Dart 1を回顧するに、以下の…

AngularDartの魅力

Dartアドベントカレンダー14日めの記事 Flutter経由でDartの魅力に気づいた人が増えてきているので、ここでAngularDartにもすこしでも興味を持ってもらって、使い始める人が増えると嬉しいと思い、この記事を書いた。 網羅的な解説をする余裕がないので、覚…

Resultライブラリを使うべきか

あまり知られていないと思うが、実は、package:asyncにResultライブラリが存在する。 https://pub.dartlang.org/documentation/async/latest/async/Result-class.html Result Resultのソースコードに端的に表現されている。やっていることはこれだけ。 /// C…

Flutter 1.0 安定版が発表された (Flutter Live キーノート 概要レポート)

本日Londonで行われているFlutter LiveのキーノートがYoutubeでライブ配信されていたので、キーノートの概要を手短にレポートする。 ちなみに、Flutterのプロダクトマネージャーがキーノートと同内容を公式ブログに寄稿しているので、英語を苦にしなければ原…

Hummingbird: FlutterでWebアプリを作る構想

本日のFlutter Liveのキーノートでは、Flutter 1.0 GA化を始め、たくさんのエキサイティングな発表がされたが、その中でも一番の驚きは、このキーノートの最後の、FlutterでWebアプリを開発可能にするという、Hummingbirdの発表だろう。 Hummingbird GAの次…

Flutterでデスクトップアプリを開発

公式ではなくコミュニティベースのソリューションだが、興味深い記事だったので紹介。 https://medium.com/flutter-community/flutter-on-desktop-a-real-competitor-to-electron-4f049ea6b061 以下、上記記事の要点。 Androidエミュレーターを立ち上げない…

DartのMixinについての解説 (Dart 2.1対応)

Mixinに馴染みがない人が多いようなので、解説する。 Mixinとは Mixinとは、fieldやproperty, slotなどと呼ばれている状態 (state)、およびmethodなどと呼ばれている振る舞い (behavior) の集合を定義し、それをclassに適用して拡張するもの。関数スタイルの…

Dart 2.1の概要と所感

Dart 2.1がリリースされた。 https://medium.com/dartlang/announcing-dart-2-1-improved-performance-usability-9f55fca6f31a Flutterからのユーザーフィードバックからの改善が中心という印象。 Dart 2.0において、数年に渡り開発チームがかかりきりになっ…

AngularDartでHot Reloadが使えるようになっていた

FlutterのウリのひとつであるHot Reload、この体験がAngularDartでも可能となっていた。WebでもHot Reloading。 dartファイルの編集 htmlファイル(angular template)の編集 cssの編集 これで、とくにHTMLとCSSの編集がかなり捗るようになる。 --hot-reloadオ…

AngularDart - UI Componentのアニメーションを維持したままページ遷移する

やりたいことは以下の動画のとおり。 ページ遷移してURLは変わるが、アニメーションは維持する。 モチベーション Routerでページ遷移すると、対応するComponentが新たに起動する。しかし、上記の動画のように、たとえばTabの遷移に合わせてURLを変更したい場…

Firebaseでチーム開発の際のプロジェクト作成、運用について

Firestoreを使ったアプリでチーム開発するとき、各自のローカル環境で開発するにはどうすればいいんだろう。GAEのようにローカルで動作するエミュレーターはないみたいだから、チームメンバーごとに開発用Firebase projectをつくるの??— ntaoo (@ntaoo) Oc…

Dartのプロジェクトジェネレーター Stagehandを使おう

Stagehand = 舞台係。裏方。 Dartのパッケージ構成の規定は詳細に定められている。 手動で作るのは辛いのでツールの力を使う。Staghandは、パッケージの雛形を生成してくれる。 https://github.com/dart-lang/stagehand 使い方 上記のリンクにすべて書かれて…

Dart BuiltCollection, BuiltValueの使いかた 基本編

残念なことに、DartのコアライブラリにImmutable Collectionライブラリは無いが、BuiltCollection, BuiltValueパッケージを使えばImmutable Collectionを扱うことができる。ここでは、それらの使い方の基本を簡単に解説していく。 今回のサンプルコード http…

BLoCパターンとはなにか - FlutterとAngularの間でModelのコードを再利用する実践を通じての考察

ここでは、BLoCパターンのガイドラインを参照し、それに基づきデモアプリを作成し、その解説を通じてBLoCパターンの考察を行う。 今までも何度かMeetup等でBLoCパターンの解説を行ってきたが、あらためてこのブログ記事にまとめておく。 BLoCパターンとは BL…