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
はじめに こんにちは、エムティーアイ Advent Calendar 2024 の12月18日分の執筆を担当させていただく新卒エンジニアの小林です。 今回は、前回の【Flutter】BottomNavigationBarの状態管理方法3選の番外編として、GoRouterを使ってBottomNavigationBarの画面切り替えを行う方法についてご紹介します。 GoRouter導入済みのFlutterプロジェクトでBottomNavigationBarを追加する際、GoRouterによってBottomNavigationBarによる画面切り替えを実現する方法について検証を行なった内容についてま…
こんにちは。エキサイトでアプリエンジニアをしている岡島です。エキサイトホールディングス Advent Calendar 2024の17日目を担当させていただきます。 最近Dart 3.6がリリースされたので、Dart 3.6について見ていきたいと思います。また、DartのCHANGELOGで、Dart 3.7.0で追加される言語機能が紹介されていたので、まとめていきたいと思います。 Dart 3.6の新機能 Pub workspaces機能 pub.devのダウンロード数表示 Digit Separators Dart 3.7で追加予定の機能 ワイルドカード変数 (Wildcard Varia…
この記事は虎の穴ラボ Advent Calendar 2024の10日目の記事です。 こんにちは、虎の穴ラボFantiaエンジニアの吉岡です。 今回はDartに試験的に導入されているマクロの機能について触ってみようと思います。 注意点として、Dartのマクロはまだ開発中の機能でありDartのバージョンが3.4以上であることやFlutterはまだ未対応など制限が多くあります。 マクロ機能とは Dartのマクロ機能はコードの生成や拡張といったメタプログラミング手法を提供する機能になります。 マクロを利用することで、コンパイルしたタイミングで指定したクラスに任意のコードが生成、拡張されます。 これに…
はじめに こんにちは、エムティーアイ Advent Calendar 2024 12月10日分の執筆を担当させていただく新卒エンジニアの小林です。 今回は、FlutterのBottomNavigationBarの状態管理方法について3種類の方法を紹介します。 公式ドキュメントのBottomNavigationBarをベースに、それぞれの状態管理方法のサンプルコードを載せているため、BottomNavigationBarの状態管理方法のカタログ集のように使っていただけますと幸いです。 BottomNavigationBarとは何か BottomNavigationBarとは、アプリの画面下部に配…
こんにちは! 2024 年新卒入社、アプリ開発支援部の涌井と小林です。 先日、FlutterKaigi 2024 に参加してきましたので、その内容をレポートします。 ※この記事は、アドベントカレンダー12月4日分の記事です。 qiita.com 目次 FlutterKaigi の概要 参加した経緯 セッション ネットスーパーがスクリーンリーダーに対応した話 〜あるいはアクセシビリティ向上によるユーザー獲得〜 Effective Form ~ Flutter による複雑なフォーム開発の実践 ~ Flutter と難読化 Figma Dev Mode で変わる!Flutter の開発体験 Flut…
こんにちは、エキサイトでアプリエンジニアをしている岡島です。 今回はDartを用いて、定期的に関数を実行したい時にどうすればいいか、Timerを用いた実装を紹介していきます。 はじめに Timerの基本的な使い方 一度だけ実行する場合 一定間隔ごとに実行する場合 Timerを停止する まとめ はじめに 開発をしていると、定期的にAPIからデータを取得したい場合のように、特定の関数を一定間隔おきに実行したいケースがあります。そのような時に、DartのTimerクラスを活用することができます。 Timerの基本的な使い方 一度だけ実行する場合 Duration(seconds: 〇〇)というように…
こんにちは、エキサイトでアプリアンジニアをしている岡島です。 今回は、BuiltListを使う機会があったので、調べたことについて共有したいと思います。 BuiltListとBuilt Collectionについて Dartで注意が必要な参照渡し BuiltListで参照渡しの問題を防ぐ Built Collectionの特徴 変更不可(Immutable) 比較可能(Comparable) ハッシュ可能(Hashable) nullを拒否(Reject nulls) ジェネリクス型パラメータが必要 間違った型の要素を拒否(Reject wrong-type elements) 不要なコピーを…
こんにちは。エキサイトの岡島です。今回はカスケード記法(Cascade notation)についてご紹介していこうと思います。 業務中に誤ってカスケード記法を用いてmapの操作を行なっており、期待した動きにならなかったので自戒の念をこめてこの記事を書いています。ドット(.)1つの違いで思わぬ事態が起きてしまったので気をつけたいです。 カスケード記法(..)とは カスケード記法でmapの操作を行うときには注意 操作が反映されない具体例 なぜこの様なことが起こるのか まとめ カスケード記法(..)とは カスケード記法(..)を使用すると、同じオブジェクトに対して複数の操作を連続して行うことができま…
ゲームエンジンぽいもの Flutterでピクセルパーフェクトぽいものを実現する簡易的なゲームエンジンを作りました。 数年前からやりたいなと思いつつ放置してたやつ。飽きなければ整理して公開もしたい。 Flutterのその他Widgetと共存可 Widgetツリーの中にゲーム画面を埋め込み可能 PSやSwitch系コントローラー対応 自前でWin32APIを叩いた 指定したフレームレートを維持する制御 Flutterのデフォ機能では60hzディスプレイなのになぜか秒間90回ほど描画されるクソ動作だったので、高精度タイマーなど使いつつ自前制御。でもいくら時間制御を正確にして描画イベント発火させても、…
Flutter では geolocator を使ってバックグラウンドでの位置情報を取得することができます。そのためには権限を取得する必要がありますが、Android と iOS では単純にその権限を取得することができません。この記事ではその仕様のややこしい点について説明します。
そういえば年末年始に勉強しないやつはエンジニアに非ずみたいな事を言うパワハラおじさんを見かけなくなりましたねえ。どこに消えたのか知らんけど、あーいう手合いは今頃AIでエンジニアは不要になるとか言ってそう(偏見) まぁ、私は社会不適格者なので年末年始もコード書くぐらいしかやる事がないのですが、今年はコードを書くというより、ちょっと気になったプロダクトをとりあえず触ってみようという感じで遊んでいました。 lightningcss Rust製のCSSバンドラ。 ここ数年でCSSの表現力が大幅に上がり、もはやsassに頼る必要もなくなった。というわけで個人的なプロジェクトで使っていたsassをプレーン…
Dartでエラーハンドリングを行っているとtry-catchを使うことになるが自分的に困ったことがあるのでどうするべきか考える。 つらみポイント なにがつらいかというとこの2点がつらい。他にも try {} catch (err, stack) {}とするとErrorまでもcatchしてしまうとかもあるがLinterで防げる。 avoid_catches_without_on_clauses | Dart エラーハンドリングを忘れる Exceptionが出るのにtry-catchするのを忘れてしまうのを防ぐことができない。 エラーの網羅性検査ができない どういうExceptionが起きるのか、…
QYResearch株式会社(所在地:東京都中央区)は、最新の調査資料「フォームトレイ―グローバル市場シェアとランキング、全体の売上と需要予測、2025~2031」を2025年1月6日より発行しました。本レポートでは、フォームトレイの世界市場規模、成長予測、過去データと未来の市場動向を詳細に分析し、業界の主要な推進力、課題、リスク、機会についても包括的に検討します。フォームトレイ市場は製品別、用途別、地域別に区分し、各セグメントにおける成長要因、機会、課題を掲載しています。さらに、主要企業の売上、市場シェア、競争環境に関する詳細な分析を行っており、企業が市場の変化に迅速に対応し、効果的な戦略を…
QYResearch株式会社(所在地:東京都中央区)は、最新の調査資料「プラスチックカトラリー―グローバル市場シェアとランキング、全体の売上と需要予測、2025~2031」を2025年1月6日より発行しました。本レポートでは、プラスチックカトラリーの世界市場規模、成長予測、過去データと未来の市場動向を詳細に分析し、業界の主要な推進力、課題、リスク、機会についても包括的に検討します。プラスチックカトラリー市場は製品別、用途別、地域別に区分し、各セグメントにおける成長要因、機会、課題を掲載しています。さらに、主要企業の売上、市場シェア、競争環境に関する詳細な分析を行っており、企業が市場の変化に迅速…
あけましておめでとうございます。本年も何卒ご贔屓のほど宜しくお願い申し上げます。 毎年、年末に総括をして年明け*1に目標の設定をしています。初笑いついでにお付き合いのほどを。 振り返り:2024年の目標について racchie.hatenablog.com 2024年の目標を再掲します。 覚えたいこと オウンドコンテンツ拡充 仕事獲得について 毎年のように、それぞれについての振り返りから始めます。 「覚えたいこと」について 正直言うと、「覚える」という行為自体がキツくなってきています。言うまでもなく、年齢のせいだと思っていますが、必要のないことを無理やり覚えることが難しくなってきました。例えば…
Flutterで作成したアプリに、steamworksパッケージを利用してSteamのワークショップを実装する方法です。 ※記事を書く人間がFlutter初心者の為、コード類は若干怪しい可能性があるのでご注意ください。 下準備編 パッケージの準備 steamworksパッケージについてはこちらをご確認ください midland.hatenadiary.jp 初めに、実装するタイミングにもよりますがsteamworksをカスタムして使用することになる可能性が高いです Steamworks SDKとsteamworksがうまく適合する構成で使用しなければいけないのですが、私は上手く動作する構成が見つ…
2025年1月3日に、QYResearch株式会社(所在地:東京都中央区)は「使い捨て蓋―グローバル市場シェアとランキング、全体の売上と需要予測、2025~2031」の最新調査資料を発行しました。本レポートでは、世界の使い捨て蓋市場規模、市場動向、成長予測を詳細に分析し、今後の市場の変化と発展方向を見通します。使い捨て蓋市場を製品別、用途別、地域別に分類し、各セグメントにおける売上、市場シェア、成長トレンドを明確にします。主要企業の紹介、売上、最新の開発状況、および競合環境に関する詳細な分析を提供します。また、市場成長を促進する主な要因と業界が直面する課題を分析し、将来の市場機会を予測していま…
2025年1月2日に、QYResearch株式会社(所在地:東京都中央区)は「紙パルプベースの使い捨て食器―グローバル市場シェアとランキング、全体の売上と需要予測、2025~2031」の最新調査資料を発行しました。本レポートでは、世界の紙パルプベースの使い捨て食器市場規模、市場動向、成長予測を詳細に分析し、今後の市場の変化と発展方向を見通します。紙パルプベースの使い捨て食器市場を製品別、用途別、地域別に分類し、各セグメントにおける売上、市場シェア、成長トレンドを明確にします。主要企業の紹介、売上、最新の開発状況、および競合環境に関する詳細な分析を提供します。また、市場成長を促進する主な要因と業…
2025年1月2日に、QYResearch株式会社(所在地:東京都中央区)は「紙コップ―グローバル市場シェアとランキング、全体の売上と需要予測、2025~2031」の最新調査資料を発行しました。本レポートでは、世界の紙コップ市場規模、市場動向、成長予測を詳細に分析し、今後の市場の変化と発展方向を見通します。紙コップ市場を製品別、用途別、地域別に分類し、各セグメントにおける売上、市場シェア、成長トレンドを明確にします。主要企業の紹介、売上、最新の開発状況、および競合環境に関する詳細な分析を提供します。また、市場成長を促進する主な要因と業界が直面する課題を分析し、将来の市場機会を予測しています。 …
random notes Cocoapods is required if you need to install dependencies Row is a subclass of Flex → needed to add mainAxisSize: MainAxisSize.min to place the widget in the center of screen Apple developer の登録 個人→法人の切り替えもできるらしい。ただしサポートとメールのやりとりが必要 メアドの変更は可能 法人で登録する場合は DUNS の取得と Apple からの電話に出る必要がある 広告 …
はじめに 使用例 pubspec.yaml ソースコード はじめに go_routerパッケージについて、相対パスでの移動がバージョン14.6.0から実装されたので、その使い方を紹介します。 Changelogには Allows going to a path relatively by prefixing ./ と書かれているので、「./」を使って下の階層へ移動ができそうです。 使用例 pubspec.yaml バージョン14.6.0以降のgo_routerを追加します。 dependencies: go_router: ^14.6.0 ソースコード ホーム画面(HomePage)をパス「/…
こんにちは〜 今年もデカ晦日に振り返り記事です。お昼ご飯食べた後に書いてます。今回で7回目! 2024年の振り返り 仕事 個人開発 PikaPika(iOS、Android) OnePage(iOS、Android) プライベート 家族 健康 ゲーム Switch Play Station 2025年の目標 最後に これまでの振り返り記事一覧 2024年の振り返り 仕事 今年も去年に引き続き受託開発をメインに、リードエンジニアとして開発に携わりつつ、プレイングマネージャー的な役割で開発を進めました。 プロジェクトの全体のことを考えつつ開発も進めるのは大変ですな。 自社開発では「めでた!」を4月…
2024年の振り返り ざっくり振り返ろうと思います Steamにハマる qureateのゲームにハマってました、バニーガーデンもですがメイド・オブ・デッドの出来が非常に良くて個人的に大好き、ヴァンサバライクゲーってことで大本のヴァンサバ買ったぐらいハマりました "エロ”ゲーでは無いですが、遊べる系のバカお色気ゲーは昔から好きなので普通にあり s.team Muv-Luv Alternative (マブラヴ オルタネイティヴ) いやもう圧倒的なプレイ時間割いてますね、面白かったです 武ちゃん強いぜ!このままBETAぶっ倒して行こうぜ!からの知っててまりもちゃんショックと純夏ショックは本気で辛かっ…
2024年がもう終わるので、総括。 仕事 引き続き、自分の会社をやってる。今月より5期目に突入。4期目については、3期目より増収かも。まだ4期目の決算終わってないからよくわからん。 5期目についてはありがたいことに見えている新規案件も今までより多く、今年出会ったお取引先の皆様には本当に感謝してもしきれない。 技術的なことでいうと、今年はSupabaseとたくさん触れ合った1年だったと言える。Supabaseって、複雑なビジネスロジックが無いシンプルなアプリのバックエンドとしてであれば、本当にサクッと、ランニングコストが安く走り出すことができて、すごい。ただし、正しく使いこなしていくには非常に難…
マサロが手がけるシャネルのシューズ は、靴型の制作からアッパーをソールに縫い付ける作業まで、すべての工程が手作業で行われ、エレガンスと快適さを追求してきました。1957年、ガブリエル シャネルの象徴的なバイカラー シューズの誕生からスタートしたシャネルとマサロのコラボレーションは、すべてのショーを経て現在に至るまで続いています。マサロは2002年にシャネルのメティエダールに加わりました。 常に新たなシェイプや素材を追求し、熟練した技術で形にする靴のアトリエ、メゾン マサロ。マドモアゼル シャネルが1957年にデザインしたアイコニックなバイカラー シューズの製作を担い、2002年にメティエダール…