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 では単純にその権限を取得することができません。この記事ではその仕様のややこしい点について説明します。
2024年のCSS新機能まとめ ObsidianとCursorを使ったメモ管理術 SSDストレージ容量不足の原因究明 70点主義による業務効率化開発 Amazon Cognitoを用いたOAuth2/OIDC認可フロー IT技術者の自由な働き方とサイバー攻撃リスク DMMビットコイン流出事件と北朝鮮系ハッカー集団 OpenSearch運用半年で得たノウハウ Linuxサーバセキュリティ監視プラクティス 企業における私物USB接続のセキュリティリスク Vectorオンラインソフト作者向けホームページサービス終了 フリーイラストレーターの社員証忘れによるセキュリティインシデント ThinkPad …
3月の香港でのi-dArtの件で、航空券や宿泊の手配なども終わり、ひと段落。その翌週には、熊本市現代美術館で問題行動トリオがあるのだが、前回のオンライン会議を寝坊して欠席してしまったので、たたき台のアイディアを作って送る。コロナ禍にリモートでの共演をたくさん試みた経験を活かし、オフラインのリアルでもリモート=遠距離で共演してみたい。 2025年10月12日開催予定の『キタ!千住の1010人』まで、残り300日ほどになってきた。それに向けて、明後日12月22日に、東京藝術大学千住キャンパスの第7ホールで、『だじゃれ音楽オープンキャンパス』を開催する。既に当初考えていた定員を超える数の方にご予約申…
この記事はFlutter Advent Calendar 2024の19日目の記事です。 前置き Google謹製のクロスプラットフォーム技術であるFlutterは素晴らしいツールです。しかし、Flutter(Dart)の実装のみでアプリの全てのユースケースをカバーできるわけではありません。場合によってはネイティブコード(SwiftやKotlin)を書く機会もあります。下記は一例です。 音楽や動画再生において、マッチするライブラリがなく自作する場合 電話、SMS、ネットワーク、NFCなど低層の技術を扱う場合 ウィジェットを作成する場合 アプリを作り始める前にこれらを実装することがわかっている場…
mixi2がFlutter製だと聞いて、使いはじめてみたけど、 さわり心地とか含めて、いろいろ素敵だなと思い、 ライセンスページの利用ライブラリを見てみたときの備忘録(*´ω`*) 見てみると、知らないすてきなパッケージがたくさんあったので、 ちょっと整理してみた(2024年12月18日時点) ライセンスページは以下からみれる 設定 > mixi2について > ライセンス 注意事項 ライセンスページに書かれているものをまとめただけなので、 実際には使っていないものや間接的につかっているものも含まれている可能性があります 公式情報ではないので、あくまで参考程度で! ベース部分 土台部分はこんな感…
前回の記事では、バーコードを用いて商品画像を取得する機能を実装したが、以下の課題が浮上した。 バーコードから商品情報を取得できないケースがある バーコードが外箱に記載されており、画像から取得が困難な場合がある これらの課題を解決するため、OCR(Optical Character Recognition)を活用し、画像から商品情報を取得する方法を試した。 PR github.com OCRとは OCRは、画像やスキャンされた文書に含まれる文字を認識し、それをテキストデータとしてデジタル化する技術。今回の実装では、OCRで商品画像から文字情報を取得し、それを基に商品を特定する。 使用するライブラ…
YH Research株式会社(本社:東京都中央区)は、「グローバルプラスチックナイフのトップ会社の市場シェアおよびランキング 2024」調査レポートを2024年12月17日に発行しました。本レポートでは、プラスチックナイフ市場の製品概要、分類、用途、主要企業、産業チェーン構造についての詳細な情報を提供しています。プラスチックナイフ市場の開発戦略と計画、製造プロセスおよびコスト構造についても分析しています。主要な生産地域および消費地域、主要メーカーの生産および消費動向とともに、プラスチックナイフ市場の現状および将来の動向を包括的に調査しています。本レポートは、競争環境、主要競合企業の概要、市場…
2024年12月17日に、QYResearchは「ミルクティー使い捨て紙コップ―グローバル市場シェアとランキング、全体の売上と需要予測、2024~2030」の調査資料を発行しました。本報告書は、ミルクティー使い捨て紙コップの世界市場を分析し、主要企業の総売上高、収益、価格、市場シェア、ランキングなどを掲載しています。また、地域別、国別、製品タイプ別、用途別に市場を分析しています。2019年から2030年までのミルクティー使い捨て紙コップの市場規模を販売量と売上高に基づいて推計と予測しています。企業が事業成長戦略を策定し、競合状況を評価し、市場ポジションを分析し、ミルクティー使い捨て紙コップに関…
2024年12月17日に、QYResearchは「コーヒー使い捨て紙コップ―グローバル市場シェアとランキング、全体の売上と需要予測、2024~2030」の調査資料を発行しました。本報告書は、コーヒー使い捨て紙コップの世界市場を分析し、主要企業の総売上高、収益、価格、市場シェア、ランキングなどを掲載しています。また、地域別、国別、製品タイプ別、用途別に市場を分析しています。2019年から2030年までのコーヒー使い捨て紙コップの市場規模を販売量と売上高に基づいて推計と予測しています。企業が事業成長戦略を策定し、競合状況を評価し、市場ポジションを分析し、コーヒー使い捨て紙コップに関連する情報に基づ…
こんにちは。JMDCインシュアランス本部ソリューション部の宮田です。 今年、JMDCではアドベントカレンダーに参加しています。 qiita.com 本記事はJMDCアドベントカレンダー 17日目の記事になります。 はじめに JMDCではiOS/Android向けのPHRアプリの開発を担当しています。JMDCに入社して半年が経ち、その間モバイルアプリの新規開発を担当したので、ヘルスケアのドメイン知識に触れることができました。今まで経験していたドメイン領域と異なるヘルスケアの領域でテスト駆動開発を意識した単体テストを考えることで、さらにヘルスケアに対する理解が深められたらと思い、今回Dartのサン…
年末だし、今年の技術まとめを主観的に書いておきますね。 動画生成AIはじまる 2月にOpenAIのSoraが発表されて、動画生成AIが盛り上がりはじめました。 12月に一般公開されましたが、それまでにも複数の動画AIモデルが発表されて、動画生成AIの実用化がはじまった年になったように思います。 とはいえ、なんだか微妙だなーという感じ。 デモは、ベストofベストだったなーと。 生成できそうな動画を生成するのが大事そう。 エージェントによる推論スケーリング OpenAIのo1が9月に発表され、推論に計算力を使うことでもスケーリングすることが示されました。 思考方針を管理するモデルが、内部で実際に思…
本投稿はFlutter Advent Calendar 2024の16日目の記事です 今プライベートでFlutterを触っていてプロジェクトを作る際にまずセットアップしたことがいくつかあるのでまとめます。 Flutterはほとんどやったことがなく、普段はKotlinでAndroidアプリを書いています。 そんなFlutter初心者が書いた内容ですが、ほとんどのことはFlutterに限らず他のフレームワークや言語、プロジェクトでも共通している内容となった気がします。 CodeRabbitの設定 CodeRabbitは、AIがコードレビューしてくれるツール・サービスです。コードレビューだけじゃなく…
この記事は 10X アドベントカレンダー 2024 の16日目の記事です。昨日はビジネス本部のryukkuさんの前向きな発言をするということ - Pack,Unpackでした。 はじめに 10Xに在籍して7年目になりました。転職したのが2018年。最初はタベリーでとにかくコードを書きまくり捨てまくりました。次はStailerではサイトコントローラーと呼ばれる仕組みを作ったり*1、Flutterで作られたモバイルアプリをWebで動かすようにしたり、開発プロセスの定義をやったりしました。そのあとはEMとして24年5月くらいまで実装することから離れていましたが、最近は主にモバイルアプリのリアーキテク…
はじめに Notion Tips の第176回目は、3年前に作っていたらしい「選択中のテキストをコードブロックとして追加する macOSサービス」を、使いやすいように改修した話です。元々は、「Notion API を触ってみようの会」でのやり取りから始まっていました。 NotionキャンパスリーダーのHaruki(@Haruki_dev)とAsahi(@ashh_log)主催の【NotionAPIを触ってみようの会】に参加しています!! https://t.co/ZcZoRMPy6o #NotionAPIを触ってみようの会— hkob|Notion Ambassador (@hkob) 202…