2011年にGoogleがJavaScriptを置き換える新しいウェブプログラミング言語の標準化を目指して公開したプログラミング言語。 Java風の構文を持ち、クラスベースのオブジェクト指向プログラミングをサポートする。また、Isolateというshared nothingなスレッド機構を持つ。
記述されたプログラムは「Dart VM」と呼ばれる仮想マシン上で動作する。またライブラリ「dart2js」でJavaScriptへ変換でき、Dartをサポートしていないブラウザでも実行可能。
*1:Google Developers Blog: Dart 1.0: A stable SDK for structured web apps
*2:Chromium Blog: Ecma forms TC52 for Dart Standardization
こんにちは。エキサイトの岡島です。今回はカスケード記法(Cascade notation)についてご紹介していこうと思います。 業務中に誤ってカスケード記法を用いてmapの操作を行なっており、期待した動きにならなかったので自戒の念をこめてこの記事を書いています。ドット(.)1つの違いで思わぬ事態が起きてしまったので気をつけたいです。 カスケード記法(..)とは カスケード記法でmapの操作を行うときには注意 操作が反映されない具体例 なぜこの様なことが起こるのか まとめ カスケード記法(..)とは カスケード記法(..)を使用すると、同じオブジェクトに対して複数の操作を連続して行うことができま…
ゲームエンジンぽいもの Flutterでピクセルパーフェクトぽいものを実現する簡易的なゲームエンジンを作りました。 数年前からやりたいなと思いつつ放置してたやつ。飽きなければ整理して公開もしたい。 Flutterのその他Widgetと共存可 Widgetツリーの中にゲーム画面を埋め込み可能 PSやSwitch系コントローラー対応 自前でWin32APIを叩いた 指定したフレームレートを維持する制御 Flutterのデフォ機能では60hzディスプレイなのになぜか秒間90回ほど描画されるクソ動作だったので、高精度タイマーなど使いつつ自前制御。でもいくら時間制御を正確にして描画イベント発火させても、…
Flutter では geolocator を使ってバックグラウンドでの位置情報を取得することができます。そのためには権限を取得する必要がありますが、Android と iOS では単純にその権限を取得することができません。この記事ではその仕様のややこしい点について説明します。
こんにちは。エキサイト株式会社でアプリエンジニアをしている岡島です。 今回はDartのenumとsealedクラスについて勉強したことをまとめていこうと思います。 環境 enumのパターンマッチング 基本的な使用例 enumの網羅性チェック sealedクラスのパターンマッチング 基本的な使用例 サブクラスの構造に基づいたパターンマッチング sealedクラスの網羅性チェック 最後に 環境 Dart: 3.4.0 enumのパターンマッチング 基本的な使用例 enum Weather { sunny, rainy, cloudy } String getWeatherAdvice(Weathe…
こんにちは決済認証システム開発事業部の冨永です。 普段はiOS・iPadアプリ開発を中心に業務に携わっており、ゴリゴリのSwift愛好家です。 業務上、iOS・Android両プラットフォームの開発を効率化する際に、 クロスプラットフォーム対応のフレームワークであるFlutterの選択肢があるかと思います。 FlutterではDartという言語が使われていますが、Swift経験者がDartを学ぶ際に、 「SwiftでいうXXXってどうやって実装するのだろう」 という疑問が度々生じました。 今回はクラスに焦点を当てて、整理した記事になります。 iOS開発経験者がFlutterに興味を持つきっかけ…
どうも、株式会社YOUTRUSTのアプリ開発のリードエンジニアをやっているashdikこと朝日(YOUTRUST / X)です。 最近は、以前お話ししたTHE BLACKLISTを見終わり、 2周目に突入しました笑 さすがに長すぎるので1.5倍速で見てるのですが、「こんな人いたなぁ」「本当は、悪いやつなのに全然悪い顔してないなぁ」なんて思いながら見ててこれはこれで楽しいです。 そして、話は変わり、個人所有のボードゲームは150個を超え、そろそろ店開きなよと言われる事が多くなってきましたw 最近のお気に入りはIT'S A WONDERFUL WORLDです。 ⚓️ 概要 以前、YOUTRUSTア…
TL;DR Flutter (Dart) でモバイルアプリを作っていたとき、Listの型キャストで以下の様に詰まった。 やりたいこと:List<子クラス>→List<親クラス>→List<子クラス>の型キャストをしたい。 問題:List<親クラス> → List<子クラス> の時点で汎化→特化ができないため、エラーが発生する。 解決策:Listの要素を一つ一つas 子クラスでキャストする。 Listにすると型キャストがややこしくなるんだなぁ。 問題の詳細 Flutterでアプリを作っていて、いろいろあってList<子クラス>→List<親クラス>→List<子クラス> という型キャストを実行す…
はじめに こんにちは。エキサイト株式会社でエンジニアをしている新卒の岡島です。 普段業務ではFlutterを用いたアプリ開発を行っています。 今回は、業務中にenumについて学んだことがあるので、勉強したことも含めて共有していきたいと思います。 私は、列挙型は単に列挙するだけだと思っていたのですが、想像以上に奥が深くて勉強になりました。前半では公式ドキュメントでの言語仕様を確認し、後半ではenumの使用例について書いていこうと思います。 はじめに 列挙型(enum)とは? 環境 Dartでのenumの定義 シンプルなenum enhanced enums enhanced enumの要件 en…
こんにちは。pregum_foxです。 今回はdriftの使い方についていくつか自分が調べて情報がなかった箇所についてtipsとして書いていこうと思います。 以下目次です。 検証環境 サンプルで作成したリポジトリ set up primaryKeyをuuidにする方法 外部キーの有効化 外部キー制約の定義方法(CASCADE / RESTRICT 等) 中間テーブルを含むDB操作 マイグレーション方法 serializer(DataTimeをISO8601形式にする) toJsonで出力されるMapのkeyをキャメルケースからスネークケースに変える drift_db_viewerの使い方 シン…
近況報告になるが、去年末から本業仕事でIoT系プロジェクトに関わっていたが、最近それが一段落した。この仕事のターゲット機はESP32を搭載しているが、小生はそのファームウェアの開発を行った。また、AWS上で稼働するNestJSベースのWebアプリ・サーバープログラムの改造も手伝ったりした。こちらで得た技術知見もブログ記事に書いていこうと思っている。 本業に復帰する前の一昨年から去年前半まで(コロナ禍の最盛期)はIT開発は副業としてやっていたが、主に関わっていたのはスマホアプリ開発でフレームワーク(プログラミング言語)はFlutter(Dart)を使っていた。Flutterを好んで使っていたのは…
こんにちは。 カンファレンス/OSSサポートチームの後藤です。 スタディプラスは、2024年11月21日(木) - 22日(金)の日程で開催されるFlutterKaigi 2024に、ブロンズスポンサーとして協賛します。 2024.flutterkaigi.jp FlutterKaigi 2024とは? FlutterKaigiは、Flutter技術情報の共有とコミュニケーションを目的としたカンファレンスです。 FlutterやDartの深い知見を持つ開発者によるセッションが多数企画されています。 今年から2日間の開催となっており、セッション数も増えて例年以上の盛り上がりの予感がします。 【概…
はじめの一歩(129) (週刊少年マガジンコミックス) 作者:森川ジョージ 講談社 Amazon 9月30日の視聴 ・『コズミックフロントΩ「小惑星衝突」』 →地球近傍天体(Near Earth Object)、通称NBO。衝突の危険のある小惑星たち。2013年にロシアに落ちたヤツ⇩の映像は見覚えあり。 【2024年『6月20日の視聴』→https://moritsin.hatenablog.com/entry/20240720/1721411899】 →アリゾナ州のバリンジャー・クレーター、デカい。直径50mの小惑星(5万年前)でコレかよ!直径1.2kmのクレーターに。 →シミュレーションと…
本記事について 作業(1):Firebaseでプロジェクトを作成 作業(2):FlutterプロジェクトにFirebaseを追加 本記事について Firebaseプロジェクトを久々に作ろうとしたら、忘れてることが多かったのでその備忘録としました。 そのため、以下のインストールは済ませた状態です(これらをやっていない場合は以下の動画などを参考にやってみたください⇒- YouTube)。 - Flutterがインストール済み。 - Firebase CLIもインストールし、"firebase_login"を実行してログイン済み。 作業(1):Firebaseでプロジェクトを作成 1. コンソールを…
2024年11月13日に、QYResearchは「融雪剤―グローバル市場シェアとランキング、全体の売上と需要予測、2024~2030」の調査資料を発行しました。本報告書は、融雪剤の世界市場を分析し、主要企業の総売上高、収益、価格、市場シェア、ランキングなどを掲載しています。また、地域別、国別、製品タイプ別、用途別に市場を分析しています。2019年から2030年までの融雪剤の市場規模を販売量と売上高に基づいて推計と予測しています。企業が事業成長戦略を策定し、競合状況を評価し、市場ポジションを分析し、融雪剤に関連する情報に基づいてビジネス上の意思決定を行うのに役立つ定量的・定性的分析を提供していま…
レーダー自動目標認識 (ATR) と非協力的目標認識 https://gangstalkingmindcontrolcults.com/radar-automatic-target-recognition-atr-and-non-cooperative-target-recognition-nctr-nato-blacknell-and-griffiths-eds-2013/ レーダー自動目標認識 (ATR) と非協力的目標認識 (NCTR) (NATO、Blacknell および Griffiths 編、2013) 工学技術協会 編集者: デイビッド・ブラックネル、ヒュー・グリフィス 201…
Unistellar eQuinox2での観測は続いている 観測の終了方法 充電の仕方 「ストレージ」が満杯になる問題 観測写真の保存 付録:アップロードのランプ信号 Unistellar eQuinox2での観測は続いている このところ天気の良い日は、夕暮れの時間帯から夜が更けるまで、だいたい3、4時間ほど天体観測をやっている。 といっても、昔のように望遠鏡に張り付いている必要はない。適宜、室内に戻って雑用をしたり、食事を摂ったり、暖房にあたったりと、スマート望遠鏡を使った観測は実に快適である。唯一大変なのは、望遠鏡が観測対象に方向を変える時の1、2分の間だけである。WiFiのレンジが短いの…
ヘブル人への手紙12章 こういうわけで、私達も、このように大勢の証人達に雲のように囲まれているのですから、いっさいの重荷と絡みつく罪をかなぐり捨てて、私達の前に置かれている競走を忍耐して走り抜こうではありませんか。 1 こういうわけで、このように多くの証人達が、雲のように私達を取り巻いているのですから、私達も、いっさいの重荷とまつわりつく罪とを捨てて、私達の前に置かれている競争を忍耐をもって走り続けようではありませんか。 ヘブル人への手紙12章2節 私達の信仰の創始者であり完成者であるイエスを他のすべてから目をそらして見つめなさい!イエスは、御前に置かれた喜びのゆえに、恥辱をものともせずに十字…
ヘブル人への手紙12章 1 こういうわけで、私達も、このように大勢の証人達に雲のように囲まれているのですから、いっさいの重荷と絡みつく罪をかなぐり捨てて、私達の前に置かれている競走を忍耐して走り抜こうではありませんか。 1 こういうわけで、このように多くの証人達が、雲のように私達を取り巻いているのですから、私達も、いっさいの重荷とまつわりつく罪とを捨てて、私達の前に置かれている競争を忍耐をもって走り続けようではありませんか。 2 信仰の創始者であり完成者であるイエスを見つめなさい!イエスは、御自分の前に置かれた喜びのゆえに、恥辱をものともせずに十字架を忍び、神の御座の右に着席されました。2 信…
2024年11月8日に、QYResearchは「使い捨てのカップと蓋―グローバル市場シェアとランキング、全体の売上と需要予測、2024~2030」の調査資料を発行しました。本報告書は、使い捨てのカップと蓋の世界市場を分析し、主要企業の総売上高、収益、価格、市場シェア、ランキングなどを掲載しています。また、地域別、国別、製品タイプ別、用途別に市場を分析しています。2019年から2030年までの使い捨てのカップと蓋の市場規模を販売量と売上高に基づいて推計と予測しています。企業が事業成長戦略を策定し、競合状況を評価し、市場ポジションを分析し、使い捨てのカップと蓋に関連する情報に基づいてビジネス上の意…
ユーザーにNotionへのアクセスを許可してもらいたいときに利用する、OAuth認証の実装方法です。 全体の流れ ざっくりこのような流れになります。🟨はユーザー操作です。 1. リダイレクト先のページを作成 2のPublic Integrationを作成するときに必要なページを最低3種類用意します。 Privacy Policy Integrationページと認証画面でプライバシーポリシーにリンクするために使用されます Terms of Use Integrationページと認証画面で利用規約にリンクするために使用されます Redirect URI 認証後に受け取る code をパラメータとし…
RiverpodやFreezedといったpackageには、アノテーションを使ったコード生成オプションが用意されています。 例えば、 @riverpod String example(Ref ref) { return 'foo'; } この @riverpod の部分がアノテーション。 このままだと当然 Ref の定義が見つからずlintエラーになるため、コード生成が必要です。 コード生成に関する基本的なお作法がパッケージのDocumentに見当たらず、初見で少し手間取りました。 先にまとめ packageに関わらず、お作法としては以下のポイントでした。 コード上で part {filena…
最近flutter入門してアプリを作ってみてます。 ネイティブアプリ開発自体はじめてだし、新しい言語を学ぶのは久しぶりなので新鮮です🌟 ストレージの種類 さて、flutterの世界で永続化で使用するローカルストレージはこのような区分けになっているようです。 Shared preference 秘匿情報以外の永続したいデータをローカルに格納する(厳密には、保存場所はプラットフォームによって違う) int, double, bool, String, List の形式で保存できる Webでいう LocalStorage shared_preferences | Flutter package Se…
参考サイト 宣言(初期化) 要素へのアクセス for文での表示 要素の更新&追加 要素の削除(remove) キーの存在確認(containsKey) 参考サイト Map class - dart:core library - Dart API 宣言(初期化) Map<String, int> map = { "A": 3, "B": 2, "C": 1, }; 要素へのアクセス 変数名[Key]とすれば、Keyに対応するValueを取得できます。 ソースコード // 宣言 Map<String, int> map = { "A": 3, "B": 2, "C": 1, }; // Key =…
Firebase App Checkへの対応について、 Firebase App Distributionで配信したアプリにApp Checkを対応させる際、いくつかハマりポイントがあったので記事にた PR github.com github.com 実装 Firebase App Checkを実装 firebase.google.com Firebase App Checkを実装するとiOSではApp AttestとDeviceCheck、AndroidではPlay Integrityで正常に端末からアクセスされているかを判定できる FlutterでApp Checkを使用するには、まず* …
『Ockeghem & Compère...』 Musique au temps d'Anne de France La Main Harmonque Frédéric Bétous CD: Ligia Lidi 0202217-10 (2010) Made in E.U. Distribution: Harmonia Mundi 1. S'elle m'amera / Petite camusette - Johannes Ockeghem (1420-1497) (FB, EH, DC, MB, DS, PM, EM, FE) 3:54 2. Vous me faites morir (J…