タグ

ブックマーク / ntaoo.hatenablog.com (22)

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

    www.youtube.com 2013年のプレゼン。ここでのYouは、このプレゼンの聴衆である言語研究コミュニティを指している。以下視聴メモ。 Why JavaScript Programmers Hate You: an ode to dynamic languages, Jan Vitek 型は生産性を上げるいう伝統的な信念がある。静的型付けは、より良いものだと。目標は正しさ。 その伝統的信念に反して、実世界では、動的型付け言語がデザインされ続けてきた。VB, Python, R, Lua, Java (= static + dynamic), JavaScript, PHP, Ruby, Clojure。 Adobe Lightroomは、大半のコードがLuaで書かれている。簡単に書けるし組み合わせることができるから。スウェーデンで500万人の顧客が利用するペンションの管理システム

    視聴メモ : Why JavaScript Programmers Hate You: an ode to dynamic languages, Jan Vitek  - ntaoo blog
    ntaoo
    ntaoo 2019/09/07
  • DartからJavaScriptライブラリのAPIを呼び出す方法についてのメモ - ntaoo blog

    文体をですます調に変えます DartからJavaScriptライブラリのAPIを呼び出す処理を書くことがまれにあります。まれなのですが、そのたびに書き方を忘れたり罠にはまったりするので、ここにメモを残して思い出しやすくしておきます。 dartdevcでは動作するコードが、dart2jsでは実行時エラーになる問題 https://github.com/dart-lang/sdk/issues/33134 いきなり深刻な問題を取り上げますが、そもそもこの文章を書く気になったのはこの問題に気づいて解決するまでに数時間も費やしてしまったからです。 DartJavaScriptへのコンパイル手法は大別して2つあります。開発時にはdartdevcコンパイラーでデバッグのしやすさを優先したかたちのJavaScriptにコンパイルし、デプロイ時にはdart2jsコンパイラーで実行効率を優先したかたちのJ

    DartからJavaScriptライブラリのAPIを呼び出す方法についてのメモ - ntaoo blog
    ntaoo
    ntaoo 2019/06/04
    昨日深夜までドハマリしたことがこの記事を書くモチベーションになった
  • Dartでrangeで繰り返し処理 - ntaoo blog

    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。 地味にないと困る機能。標準ライブラリに入ってほしいくらいだが、将来、拡張メソッド相当の機能が言語仕様に追加されたら書き方が変わりそう。

    Dartでrangeで繰り返し処理 - ntaoo blog
    ntaoo
    ntaoo 2019/05/24
  • Flutter Webの現状調査 - ntaoo blog

    Web特有の事情はどう解決するのかに興味があって内部構造などを調べていた。 開発が進むにつれて実装はどんどん進化して問題解決されていくだろうし、現段階のこの情報の正確性も保証しない。個人のメモを公開しているだけなので鵜呑みにはしないようにしてほしい。 あと、Preview版が公開された後にFAQが追加されているので読んでおくほうがいい。 https://github.com/flutter/flutter_web/blob/master/docs/faq.md ニュース まとめ https://medium.com/flutter/a-roundup-of-flutter-news-at-google-i-o-453bb3249981 Flutter Webの開発体験とPreview版段階の技術的制約についての解説 https://medium.com/flutter-nyc/under-

    Flutter Webの現状調査 - ntaoo blog
    ntaoo
    ntaoo 2019/05/22
    いろいろな制約がある/ 操作ミスで自分のコメントにスターをつけてしまっていた
  • Google I/O 19 Dart関連セッションの視聴メモ その2: Pragmatic State Management in Flutter (Google I/O'19) - ntaoo blog

    Pragmatic State Management in Flutter (Google I/O'19) Flutterで状態管理をする方法についてのセッション。去年も同じペアで同じテーマのセッションがあった。 https://www.youtube.com/watch?v=d_m5csmrf7I&list=PLjxrf2q8roU2no7yROrcQSVtwbYyxAGZV&index=4&t=0s ひとつのWidget Treeしかないなどの単純なアプリの場合をのぞき、アプリの状態管理は重要な問題となる。 Agenda 状態管理の重要性 さまざまな取り組みの推移 Flutterでの実践的な状態管理方法 論点 理解しやすく読みやすく保守しやすいこと テストしやすいこと 実行性能(パフォーマンス)が高いこと 残念ながら万能の解決策はないので、あなたのユースケースのなかでエッジケースを考慮

    Google I/O 19 Dart関連セッションの視聴メモ その2: Pragmatic State Management in Flutter (Google I/O'19) - ntaoo blog
    ntaoo
    ntaoo 2019/05/12
    なにかと話題になる状態管理手法についての、I/O19のFlutterのセッションを視聴したメモです。
  • Google I/O 19 Dart関連セッションの視聴メモ : Dart: Productive, Fast, Multi-Platform - Pick 3 (Google I/O'19) - ntaoo blog

    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=PLjxrf2q8roU2no7yROrcQSVtwbYyxAGZV&index=6&t=0s Dart入門者向けののSessionだった。 Dart 1時代から一貫して、総合的な生産性にフォーカスして言語とライブラリ、エコシステムに投資 3つの側面 Productive Fast Multi Platform Productive Dartはマルチパラダイムプログラミング言語。 KotlinSwiftと同じC系構文。 Dartはオブジェ

    Google I/O 19 Dart関連セッションの視聴メモ : Dart: Productive, Fast, Multi-Platform - Pick 3 (Google I/O'19) - ntaoo blog
    ntaoo
    ntaoo 2019/05/11
    他のセッションについても視聴メモを書いていく
  • Flutter Webが公開された / Flutter Native アプリをFlutter Webアプリに移植してみた - ntaoo blog

    エントリーページ https://flutter.dev/web ブログ記事 https://medium.com/flutter-io/bringing-flutter-to-the-web-904de05f0df0 リポジトリ https://github.com/flutter/flutter_web Flutter Frameworkの上でDartUIを書いていくので、HTML, CSS, JavaScriptの各APIはそのframeworkに隠蔽されてそれらを直接書く必要がない。 現状の制約 段階としては、まだテクニカルプレビューなので、制約や未実装のAPIがある。 Limitations We intend to completely support all of Flutter's API and functionality across modern browsers.

    Flutter Webが公開された / Flutter Native アプリをFlutter Webアプリに移植してみた - ntaoo blog
    ntaoo
    ntaoo 2019/05/08
    情報源へのリンク、およびFlutter Webでさっそくアプリを書いた件
  • AngularDartの、Angular Componentsの使い方 - ntaoo blog

    フルスクラッチでUIを構築していくのは現実的ではない。現代のUIに対する要求水準の高さに応えるために決定的に重要な要素として、UIライブラリの質がある。 Angular TypeScript版にAngular Materialライブラリが提供されているように、AngularDartにはpackage:angular_componentsが提供されている。このパッケージは、マテリアルデザインのUIを構築するためのさまざまなUI部品がAngularのComponentとしてまとめられ、またUIテーマやスタイリングのためのSCSSが同梱されている。AngularDartUIを構築するならば、素直にマテリアルデザインを採用するべきだ。 Angular TypeScript版のAngular Materialのサイトと比較して、AngularDartのpackage:angular_compone

    AngularDartの、Angular Componentsの使い方 - ntaoo blog
    ntaoo
    ntaoo 2019/04/28
    書いた
  • 2018年のDart言語の振り返り - ntaoo blog

    2019年初に2018年のDartを振り返ってみる。僭越ながらDart advent calendar 25日目の記事だが、大幅に超過して新年になってしまった。申し訳ない。そして大した内容ではない。個人の回顧です。 Dart 2のリリースと、Dart 1の回顧 Dart 1を回顧するに、以下の特徴をもった言語だったと思う。 VMを活かした動的言語であること VM前提の動的言語の表現力、進化を妨げないための、選択換装可能な型システム (言語が型システムに依存するのではなく、型システムが言語に依存する) エディタ、デバッガ(等々)が統合された開発体験などの、Smalltalkを目標とした環境の提供(が目標) ライブラリや開発環境などを整備し、言語のカタログスペックでなく実際のDeveloper Experienceが優れていること 世の中の圧倒的多数を占めるCとJavaプログラマーに学習コス

    2018年のDart言語の振り返り - ntaoo blog
    ntaoo
    ntaoo 2019/01/03
    2019年の始めに2018年のDartを振り返る
  • AngularDartの魅力 - ntaoo blog

    Dartアドベントカレンダー14日めの記事 Flutter経由でDartの魅力に気づいた人が増えてきているので、ここでAngularDartにもすこしでも興味を持ってもらって、使い始める人が増えると嬉しいと思い、この記事を書いた。 網羅的な解説をする余裕がないので、覚え書きの質で書きちらす。また、具体的な機能の特徴をコードを交えて解説するものではない。それに関しては、https://webdev.dartlang.org/を参照されたい。 なお、よく知られたTypeScript版のAngularとの比較が多くなるため、ここでは便宜的にそれをAngularTSと呼称して、AngularDartと区別する。 Hummingbird (Flutter Web)が発表されたけど Hummingbird (Flutter Web)が発表されたが、まだオープンソースにもなっておらず評価するには早すぎる

    AngularDartの魅力 - ntaoo blog
    ntaoo
    ntaoo 2018/12/15
    AngularDartを知ってほしい
  • Resultライブラリを使うべきか - ntaoo blog

    あまり知られていないと思うが、実は、package:asyncにResultライブラリが存在する。 https://pub.dartlang.org/documentation/async/latest/async/Result-class.html Result Resultのソースコードに端的に表現されている。やっていることはこれだけ。 /// Creates a `Result` with the result of calling [computation]. /// /// This generates either a [ValueResult] with the value returned by /// calling `computation`, or an [ErrorResult] with an error thrown by /// the call. facto

    Resultライブラリを使うべきか - ntaoo blog
    ntaoo
    ntaoo 2018/12/12
    書いた
  • Flutter 1.0 安定版が発表された (Flutter Live キーノート 概要レポート) - ntaoo blog

    日Londonで行われているFlutter LiveのキーノートがYoutubeでライブ配信されていたので、キーノートの概要を手短にレポートする。 ちなみに、Flutterのプロダクトマネージャーがキーノートと同内容を公式ブログに寄稿しているので、英語を苦にしなければ原文を読めば内容は詳細に網羅されている。 Flutter 1.0: Google’s Portable UI Toolkit Flutterとは Flutterは、美しいUIのアプリをシングルコードベースでクロスプラットフォーム開発できるUIツールキット。古めの端末でも高パフォーマンスで動作する。Stateful hot reloadingの恩恵により、状態を維持したままコードの変更が即時に開発中のアプリに反映される。(SmalltalkのLive programming環境に少しだけ近づいてきた)。ネイティブ環境に依存する

    Flutter 1.0 安定版が発表された (Flutter Live キーノート 概要レポート) - ntaoo blog
    ntaoo
    ntaoo 2018/12/05
    書いた
  • Hummingbird: FlutterでWebアプリを作る構想 - ntaoo blog

    日のFlutter Liveのキーノートでは、Flutter 1.0 GA化を始め、たくさんのエキサイティングな発表がされたが、その中でも一番の驚きは、このキーノートの最後の、FlutterでWebアプリを開発可能にするという、Hummingbirdの発表だろう。 Hummingbird GAの次の構想として、AndroidとiOSに加えて、Windows, macOS, ChromeOS, ラズベリーパイなどのネイティブ環境での統一したUIツールキットとなる構想が発表されたことは予想の範囲内だが、Webアプリに関してはWebブラウザーという独特の環境で制約が強いため、Webアプリまでを対象にする構想がこの日に明らかにされたことは全く予想外だった。 これによりFlutterは、モバイルアプリ用途を超えた、モバイルOSでもデスクトップOSでもWebブラウザーでもシングルコードベースで動作す

    Hummingbird: FlutterでWebアプリを作る構想 - ntaoo blog
    ntaoo
    ntaoo 2018/12/05
    さっそく記事を書いてみた。予想よりだいぶ早かった。
  • Flutterでデスクトップアプリを開発 - ntaoo blog

    公式ではなくコミュニティベースのソリューションだが、興味深い記事だったので紹介。 https://medium.com/flutter-community/flutter-on-desktop-a-real-competitor-to-electron-4f049ea6b061 以下、上記記事の要点。 Androidエミュレーターを立ち上げないので、開発速度は更に高速。 デスクトップアプリなので、当然ウインドウは可変。まるでWebブラウザのような感覚のレスポンシブデザイン。もちろんウインドウの枠をドラッグで自由に変更できる。 Hot reloadingとdebuggingも従来どおり可能。 RAMの使用量に圧倒的な差。エミュレーターは1GB使うのに対し、こちらは100MB。 Androidエミュレーターでもデスクトップのウインドウでも動くChatデモの動画あり。 ホバーやカーソルの種類の変

    Flutterでデスクトップアプリを開発 - ntaoo blog
  • DartのMixinについての解説 (Dart 2.1対応) - ntaoo blog

    Mixinに馴染みがない人が多いようなので、解説する。 Mixinとは Mixinとは、fieldやproperty, slotなどと呼ばれている状態 (state)、およびmethodなどと呼ばれている振る舞い (behavior) の集合を定義し、それをclassに適用して拡張するもの。関数スタイルのプログラミングにおける関数の合成のように、classを合成する。 主に、Classベースのオブジェクト指向言語において、(単一)継承の階層という制約では表現することが難しいデザインには、Mixinを適用する。 主な言語における採用事例 Racketなどの、Lisp familyの一部 Smalltalk family Scala Ruby Sass 言語レベルで採用していたり(Dart, Scala, Ruby等)、あるいはデザインパターンのひとつとして紹介されていたり(JavaScrip

    DartのMixinについての解説 (Dart 2.1対応) - ntaoo blog
    ntaoo
    ntaoo 2018/12/02
    Mixinについて書いた
  • Dart 2.1の概要と所感 - ntaoo blog

    Dart 2.1がリリースされた。 https://medium.com/dartlang/announcing-dart-2-1-improved-performance-usability-9f55fca6f31a Flutterからのユーザーフィードバックからの改善が中心という印象。 Dart 2.0において、数年に渡り開発チームがかかりきりになっていた、型安全性を強めた型システムの安定版がリリースされたため、これからはよりマイナーな改善に注力していくと思われる。 Dart 2ではクライアントサイドのユースケースに注力していくとアナウンスされたとおり、WebアプリとNativeアプリ両方の生産性を高めていくことが強調されている。 Flutterは無事離陸できた感があるので、WebアプリとしてAngularDartのパフォーマンスと生産性の魅力がもう少し知られたら良いし、そしてもし取り

    ntaoo
    ntaoo 2018/11/16
  • AngularDartでHot Reloadが使えるようになっていた - ntaoo blog

    FlutterのウリのひとつであるHot Reload、この体験がAngularDartでも可能となっていた。WebでもHot Reloading。 dartファイルの編集 htmlファイル(angular template)の編集 cssの編集 これで、とくにHTMLCSSの編集がかなり捗るようになる。 --hot-reloadオプションをつけて起動するだけで、その他の設定を変えずに有効になった。 webdev serve --hot-reload 従来のLive Reloadでは、コードの編集からブラウザのリフレッシュを経てのコードの反映までに5秒から10秒かかり、ブラウザのタブがリロードされることでランタイムの状態が一新されていたが、Hot Reloadでは0.5秒から2秒くらいで差分更新され、その他のランタイムの状態が維持される。 ただしまだ不安定な印象。手元のかなり大きなコード

    AngularDartでHot Reloadが使えるようになっていた - ntaoo blog
  • AngularDart - UI Componentのアニメーションを維持したままページ遷移する - ntaoo blog

    やりたいことは以下の動画のとおり。 ページ遷移してURLは変わるが、アニメーションは維持する。 モチベーション Routerでページ遷移すると、対応するComponentが新たに起動する。しかし、上記の動画のように、たとえばTabの遷移に合わせてURLを変更したい場合、Component instanceが新たに起動して状態が一新されると、UI上はアニメーションがぶつりと中断してしまい不格好なUIになってしまう。アニメーションを維持したままページ遷移したい。 ソリューション Tab1 page, Tab2 pageに対応するpathに紐つけるPageのComponentを、同一のものにする。ここでは、ATabCyclePageとする。 そして、Routerのlife cycle interfaceであるCanReuseを、Componentにimplementする。CanReuseは、Co

    AngularDart - UI Componentのアニメーションを維持したままページ遷移する - ntaoo blog
    ntaoo
    ntaoo 2018/10/18
    書いた
  • Firebaseでチーム開発の際のプロジェクト作成、運用について - ntaoo blog

    Firestoreを使ったアプリでチーム開発するとき、各自のローカル環境で開発するにはどうすればいいんだろう。GAEのようにローカルで動作するエミュレーターはないみたいだから、チームメンバーごとに開発用Firebase projectをつくるの??— ntaoo (@ntaoo) October 14, 2018 3名のメンバーでアプリを作るとしたら、1アプリごとに3名分+dev+staging+production用で6プロジェクト必要。そして仮に10アプリをGCP organizationで管理すれば60プロジェクトになる。これははたして想定内なのか?— ntaoo (@ntaoo) October 14, 2018 authや他の機能もあるから、チームメンバーののローカル開発用にそれぞれprojectを作るのは仕方ないのか。staging serverのようにうまく使いまわして節約

    Firebaseでチーム開発の際のプロジェクト作成、運用について - ntaoo blog
    ntaoo
    ntaoo 2018/10/15
    書いた
  • Dartのプロジェクトジェネレーター Stagehandを使おう - ntaoo blog

    Stagehand = 舞台係。裏方。 Dartのパッケージ構成の規定は詳細に定められている。 手動で作るのは辛いのでツールの力を使う。Staghandは、パッケージの雛形を生成してくれる。 https://github.com/dart-lang/stagehand 使い方 上記のリンクにすべて書かれている。 インストール pub global activate stagehand パッケージ生成 mkdir package_name cd package_name stagehand package-simple Angularアプリの生成 Angularアプリもパッケージである。 mkdir angular_app_name cd angular_app_name stagehand web-angular コマンドラインアプリの生成 コマンドラインアプリもパッケージである。 mkd

    Dartのプロジェクトジェネレーター Stagehandを使おう - ntaoo blog
    ntaoo
    ntaoo 2018/10/12