<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Flutter – AichiLog</title>
	<atom:link href="https://aichi.blog/category/programming/flutter/feed/" rel="self" type="application/rss+xml" />
	<link>https://aichi.blog</link>
	<description>学びて富み　富みて学ぶ</description>
	<lastBuildDate>Thu, 27 Feb 2025 09:07:14 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://aichi.blog/wp-content/uploads/2021/12/cropped-915AB649-D1E9-4810-9658-CB8CE1B605FD.JPEG-2-32x32.jpeg</url>
	<title>Flutter – AichiLog</title>
	<link>https://aichi.blog</link>
	<width>32</width>
	<height>32</height>
</image> 
<atom:link rel="hub" href="https://pubsubhubbub.appspot.com"/>
<atom:link rel="hub" href="https://pubsubhubbub.superfeedr.com"/>
<atom:link rel="hub" href="https://websubhub.com/hub"/>
<atom:link rel="self" href="https://aichi.blog/category/programming/flutter/feed/"/>
	<item>
		<title>Flutter 製アプリの事例と Flutter vs React Native の将来展望</title>
		<link>https://aichi.blog/flutter-app-examples/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=flutter-app-examples</link>
		
		<dc:creator><![CDATA[愛知郎]]></dc:creator>
		<pubDate>Thu, 27 Feb 2025 09:00:46 +0000</pubDate>
				<category><![CDATA[Flutter]]></category>
		<category><![CDATA[チーム開発]]></category>
		<category><![CDATA[デプロイ]]></category>
		<category><![CDATA[開発]]></category>
		<guid isPermaLink="false">https://aichi.blog/flutter-app-examples/</guid>

					<description><![CDATA[<p>目次 日本国内でよく使われている Flutter 製アプリ海外で人気の Flutter 製アプリFlutter と React Native の今後の勢い比較企業の採用動向市場シェア技術的な優位性開発者の支持率パフォーマ [&#8230;]</p>
<p>The post <a href="https://aichi.blog/flutter-app-examples/">Flutter 製アプリの事例と Flutter vs React Native の将来展望</a> first appeared on <a href="https://aichi.blog">AichiLog</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>
  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-2" checked><label class="toc-title" for="toc-checkbox-2">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">日本国内でよく使われている Flutter 製アプリ</a></li><li><a href="#toc2" tabindex="0">海外で人気の Flutter 製アプリ</a></li><li><a href="#toc3" tabindex="0">Flutter と React Native の今後の勢い比較</a><ol><li><a href="#toc4" tabindex="0">企業の採用動向</a></li><li><a href="#toc5" tabindex="0">市場シェア</a></li><li><a href="#toc6" tabindex="0">技術的な優位性</a></li><li><a href="#toc7" tabindex="0">開発者の支持率</a></li><li><a href="#toc8" tabindex="0">パフォーマンス比較</a></li><li><a href="#toc9" tabindex="0">将来の成長予測</a></li></ol></li></ol>
    </div>
  </div>

<h2><span id="toc1">日本国内でよく使われている Flutter 製アプリ</span></h2>
</p>
<p>Flutter は日本国内でも様々な有名サービスの公式アプリに採用されています。特に以下のような高いダウンロード数・ユーザー数を持つアプリが Flutter で開発されています。</p>
<li><strong>ユニクロ公式アプリ</strong> – 大手アパレル企業ユニクロの公式アプリです。会員バーコードによるポイント管理や最新カタログの閲覧、オンラインストアでの商品購入などが可能です。ユニクロは 2022 年にアプリ 10 周年を迎え、<strong>会員数が 4,000 万</strong>人を突破しました (<a href="https://prtimes.jp/main/html/rd/p/000000029.000068741.html#:~:text=Image">さぁ アプリでお買い物上手に。「ユニクロアプリ 10 周年祭」が 10 月 21 日から開催 | 株式会社ユニクロのプレスリリース</a>)。Flutter の導入により iOS/Android 両方で統一した開発を行っているとされています。</li>
<li><strong>ahamo（アハモ）</strong> – NTT ドコモのオンライン専用料金プラン「ahamo」の公式アプリです。料金プランの契約・管理、データ残量確認、料金支払いなどをシンプルな UI で提供します。ドコモによれば、<strong>ahamo の契約者数は 2023 年 6 月時点で 500 万件</strong>を突破しています (<a href="https://k-tai.watch.impress.co.jp/docs/news/1509372.html#:~:text=NTT%E3%83%89%E3%82%B3%E3%83%A2%E3%81%AF%E3%80%81%E3%82%AA%E3%83%B3%E3%83%A9%E3%82%A4%E3%83%B3%E5%B0%82%E7%94%A8%E6%96%99%E9%87%91%E3%83%96%E3%83%A9%E3%83%B3%E3%83%89%E3%80%8Cahamo%E3%80%8D%E3%81%AE%E5%A5%91%E7%B4%84%E6%95%B0%E3%81%8C%E3%80%816%E6%9C%887%E6%97%A5%E3%81%AB500%E4%B8%87%E5%A5%91%E7%B4%84%E3%82%92%E7%AA%81%E7%A0%B4%E3%81%97%E3%81%9F%E3%81%93%E3%81%A8%E3%82%92%E7%99%BA%E8%A1%A8%E3%81%97%E3%81%9F%E3%80%82%E7%AA%81%E7%A0%B4%E3%82%92%E8%A8%98%E5%BF%B5%E3%81%97%E3%81%9F%E3%82%AD%E3%83%A3%E3%83%B3%E3%83%9A%E3%83%BC%E3%83%B3%E3%82%82%E5%AE%9F%E6%96%BD%E3%81%95%E3%82%8C%E3%82%8B%E3%80%82">ドコモ、「ahamo」の契約数が 500 万を突破 &#8211; ケータイ Watch</a>)。大規模ユーザー向けサービスながら Flutter により高いパフォーマンスと安定性を実現しています (<a href="https://springsapps.com/knowledge/flutter-vs-react-native-in-2024#:~:text=In%20terms%20of%20performance%2C%20Flutter,its%20performance%20compared%20to%20Flutter">Flutter vs React Native in 2025 &#8211; Springs</a>)。</li>
<li><strong>スシロー公式アプリ</strong> – 回転寿司チェーン最大手スシローの公式アプリです。店舗の順番待ち受付や予約、お持ち帰り注文、クーポン配信などを行えます。ユーザー層もファミリー層まで幅広く、<strong>年間アプリ利用者数は約 1,200 万人規模</strong>と推定されています (<a href="https://manamina.valuesccg.com/articles/4011#:~:text=match%20at%20L175%20%E5%B9%B4%E9%96%93%E3%81%AE%E3%82%A2%E3%83%97%E3%83%AA%E8%B5%B7%E5%8B%95%E8%80%85%E6%95%B0%E3%81%AF%E3%81%BB%E3%81%BC%E6%A8%AA%E4%B8%A6%E3%81%B3%E3%81%A7%E3%80%81%E3%81%8F%E3%82%89%E5%AF%BF%E5%8F%B8%E3%81%8C%E3%83%88%E3%83%83%E3%83%97%E3%81%AE1%2C270%E4%B8%87%E4%BA%BA%E3%80%81%E3%82%B9%E3%82%B7%E3%83%AD%E3%83%BC%E3%80%81%E3%81%AF%E3%81%BE%E5%AF%BF%E5%8F%B8%E3%81%8C%E3%81%9D%E3%82%8C%E3%81%AB%E7%B6%9A%E3%81%84%E3%81%A6%20%E3%81%84%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82">スシロー・くら寿司・はま寿司のメニュー、アプリ利用者数、特徴を比較 | ［マナミナ］まなべるみんなのデータマーケティング・マガジン</a>)。Flutter 製のアプリに刷新することで、全ユーザーに滑らかな操作体験を提供しています。</li>
<li><strong>じゃらん（宿・ホテル予約アプリ）</strong> – リクルートが運営する国内旅行予約サービス「じゃらん net」の公式アプリです。宿泊施設や温泉旅館の検索・予約、口コミ閲覧などができます。国内の宿泊予約アプリではダウンロード数トップで、Android 版は<strong>500 万～ 1000 万ダウンロード</strong>に達しています (<a href="https://create-guesthouse.com/ota-apps-download/#:~:text=1%E4%BD%8D%EF%BC%9A%E3%81%98%E3%82%83%E3%82%89%E3%82%93">宿泊予約サイト（ホテル検索）のアプリダウンロード数を、ザックリ調べてみた。 &#8211; ゲストハウスクリエイターズノート</a>)。Flutter 採用により複数プラットフォームで機能を揃え、安定したユーザー体験を実現しています。</li>
<li><strong>メルカリ ハロ</strong> – フリマアプリ大手メルカリが提供するスポットワークマッチングアプリです。好きな時間に最短 1 時間から働ける求人サービスで、登録から応募・勤務開始までスマホで完結します。<strong>メルカリの開発チームはこの「メルカリ ハロ」アプリを Flutter で実装</strong>しており、ホットリロードによる高速な開発サイクルやクロスプラットフォーム対応による効率化を実感したと述べています (<a href="https://pentagon.tokyo/app/6357/#:~:text=%E3%83%A1%E3%83%AB%E3%82%AB%E3%83%AA%E3%81%8C%E9%96%8B%E7%99%BA%E3%81%97%E3%81%9F%E5%A5%BD%E3%81%8D%E3%81%AA%E6%99%82%E9%96%93%E3%81%AB%E6%9C%80%E7%9F%AD1%E6%99%82%E9%96%93%E3%81%8B%E3%82%89%E5%83%8D%E3%81%91%E3%82%8B%E3%80%8C%E3%83%A1%E3%83%AB%E3%82%AB%E3%83%AA%20%E3%83%8F%E3%83%AD%E3%80%8D%E3%81%AF%E3%80%81Flutter%E3%82%92%E6%8E%A1%E7%94%A8%E3%81%97%E3%81%9F%E4%BB%A3%E8%A1%A8%E7%9A%84%E3%81%AA%E4%BA%8B%E4%BE%8B%E3%81%A7%E3%81%99%E3%80%82">Flutter アプリの国内事例 12 選！大手の Flutter 移行も紹介 | 東京のアプリ開発会社</a>)。メルカリという知名度もあり、サービス開始直後から多くのユーザーを集めています。</li>
<p>以上のように、日本国内でも<strong>ユニクロや NTT ドコモ、リクルート、メルカリ</strong>といった大企業が Flutter を採用し、数百万規模のユーザーに利用されるアプリを提供しています。Flutter の高速な UI 描画と安定した動作により、大量のユーザーアクセスにも耐える高品質なサービスが実現されています。</p>
<p><h2><span id="toc2">海外で人気の Flutter 製アプリ</span></h2>
</p>
<p>海外に目を向けると、Flutter はグローバルで数千万規模のユーザーを持つ人気アプリにも採用されています。代表的な例をいくつか挙げます。</p>
<li><strong>Google Pay（GPay）</strong> – Google が提供するデジタル決済アプリです。銀行カードの登録、非接触決済、送金、家計管理など幅広い機能を備えています。2020 年に Flutter でアプリを刷新し、特にインドや米国で展開されています。<strong>Google Pay は世界で 1 億人以上のユーザー</strong>を抱えており (<a href="https://flutter.dev/showcase/google-pay#:~:text=Goal">Flutter Showcase |Google Pay</a>)、Flutter への移行によりコード量を 35%削減し、開発効率を 70%向上させました (<a href="https://flutter.dev/showcase/google-pay#:~:text=%23%2070">Flutter Showcase |Google Pay</a>)。クロスプラットフォーム化で機能リリースのスピードアップと地域展開の迅速化に成功した事例です。</li>
<li><strong>Alibaba Xianyu（閑魚）</strong> – 中国 Alibaba（阿里巴巴）が運営するフリマアプリです。不要品の売買プラットフォームとして、中国国内で非常に大規模に利用されています。<strong>Xianyu アプリは Flutter 製で、ユーザー数は 5,000 万以上</strong>にのぼります (<a href="https://www.goodfirms.co/blog/flutter-2025-definition-key-trends-statistics#:~:text=,10%20million%20daily%20active%20users">Flutter 2025: Definition, Key Trends, and Statistics</a>)。Alibaba は Flutter 採用により、新機能開発の所要時間を 1 か月から 2 週間に短縮できたと報告しています (<a href="https://flutter.dev/showcase#:~:text=Image%3A%20Alibaba">Showcase &#8211; Flutter apps in production</a>)。Flutter の高いパフォーマンスが大規模ユーザーベースの支えとなった好例です。</li>
<li><strong>Nubank</strong> – 南米ブラジル発のデジタル銀行（フィンテック）サービスです。銀行口座管理や送金、クレジットカード利用管理などをスマホアプリで提供しています。Nubank はクロスプラットフォーム技術を比較検討した末に Flutter を採用し、モバイルアプリを構築しました。その結果、<strong>約 4,800 万人以上のユーザー</strong>にサービスを届ける巨大なデジタル銀行アプリを支えています (<a href="https://www.nomtek.com/blog/flutter-app-examples#:~:text=Nubank">Companies Using Flutter in 2024</a>)。Flutter により機能追加の同時リリースが可能になり、生命保険機能を 3 か月で実装するなど開発スピードも飛躍的に向上しました (<a href="https://www.nomtek.com/blog/flutter-app-examples#:~:text=match%20at%20L504%20speed%20up,taken%20at%20least%20a%20year">Companies Using Flutter in 2024</a>)。</li>
<li><strong>My BMW</strong> – ドイツの自動車メーカー BMW が提供する公式スマートフォンアプリです。車両のリモート操作（施錠・解錠、エアコン制御）、走行データ確認、メンテナンス通知など、車とオーナーを繋ぐ様々な機能を持ちます。以前は iOS と Android で別々に開発され機能差がありましたが、Flutter で統合した新アプリ「My BMW」としてリリースされました。その結果、<strong>世界各国向けに 96 種類のバリアントを含むアプリを素早く展開</strong>でき、毎月数千時間相当の開発効率化を達成しています (<a href="https://www.nomtek.com/blog/flutter-app-examples#:~:text=With%20Flutter%2C%20the%20BMW%20team,thousands%20of%20hours%20every%20month">Companies Using Flutter in 2024</a>) (<a href="https://www.nomtek.com/blog/flutter-app-examples#:~:text=Thanks%20to%20Flutter%2C%20BMW%20deployed,resolved%20after%20migrating%20to%20Flutter">Companies Using Flutter in 2024</a>)。全てのユーザーに一貫した体験を提供し、ブランドイメージ向上にも貢献しています。</li>
<li><strong>Kijiji</strong> – eBay 傘下のカナダ最大級のオンラインマーケットプレイス（分類広告サービス）です。ユーザーは地元の売買情報を投稿・検索でき、日本のメルカリに近いサービスと言えます。Kijiji は老朽化したネイティブアプリの技術的負債を解消するため Flutter への全面移行を決断しました。<strong>月間利用者数は約 1,100 万</strong>に及びますが (<a href="https://www.nomtek.com/blog/flutter-app-examples#:~:text=Kijiji">Companies Using Flutter in 2024</a>)、Flutter 化により<strong>新機能リリースの時間が 50%短縮</strong>され、コード量も 64%削減されました (<a href="https://www.nomtek.com/blog/flutter-app-examples#:~:text=Kijiji%20has%20seen%20tremendous%20success,in%20solving%20technological%20debt%20problems">Companies Using Flutter in 2024</a>)。結果として開発サイクルが大幅に加速し、ユーザー体験も向上しています。</li>
<p>以上のように、<strong>Google、Alibaba、Tencent、BMW、eBay</strong>など世界的企業が Flutter を採用し、数千万規模のユーザーにサービス提供しています。特に金融（Google Pay や Nubank）、EC・マーケットプレイス（Alibaba Xianyu や Kijiji）、IoT/自動車（BMW）といった幅広い分野で Flutter アプリが成功を収めています。これは Flutter の信頼性とスケーラビリティがグローバル水準で証明されていることを示しています (<a href="https://www.goodfirms.co/blog/flutter-2025-definition-key-trends-statistics#:~:text=,10%20million%20daily%20active%20users">Flutter 2025: Definition, Key Trends, and Statistics</a>) (<a href="https://flutter.dev/showcase/google-pay#:~:text=Goal">Flutter Showcase |Google Pay</a>)。</p>
<p><h2><span id="toc3">Flutter と React Native の今後の勢い比較</span></h2>
</p>
<p>次に、クロスプラットフォーム開発の代表的技術である<strong>Flutter と React Native</strong>について、以下の視点で現在の状況と将来の勢いを比較します。各項目について最新のデータや傾向を踏まえ、どちらが今後より成長しそうか予測します。</p>
<p><h3><span id="toc4">企業の採用動向</span></h3>
</p>
<p><strong>Flutter 採用の拡大</strong>: Flutter は 2018 年の正式リリース以降、新規プロジェクトを中心に企業導入が急増しています。先述のように Google や Alibaba をはじめ、金融・旅行・通販など様々な業界の大手が Flutter によるアプリ開発に成功しています。日本国内でもリクルート（スタディサプリ）や DMM.com など<strong>既存ネイティブアプリを Flutter に全面移行した例</strong>も出始めています (<a href="https://pentagon.tokyo/app/6357/#:~:text=%E2%91%A0%E3%82%B9%E3%82%BF%E3%83%87%E3%82%A3%E3%82%B5%E3%83%97%E3%83%AA">Flutter アプリの国内事例 12 選！大手の Flutter 移行も紹介 | 東京のアプリ開発会社</a>)。クロスプラットフォームの効率性と Flutter の表現力に魅力を感じ、新規サービスで Flutter を選定する企業が今後も増えると見られます。</p>
<p><strong>React Native の状況</strong>: React Native（RN）は 2015 年に Facebook が公開して以降、多くの企業で採用されてきました。Facebook 本体や Instagram で部分採用されたほか、米国では<strong>Walmart</strong>や<strong>Bloomberg</strong>、日本でもメルカリ（初期の一部機能）や楽天などが一時期導入していた例があります。しかし近年、Airbnb や Dropbox が RN から撤退したように、ネイティブへの回帰や他フレームワークへの移行もみられます。一方で<strong>Meta 社（旧 Facebook）は現在も React Native を社内主要アプリに活用し続けており、Microsoft も React Native for Windows を開発するなど支援</strong>しています。既存の React Native 資産を持つ企業は引き続き RN をメンテナンスしつつ、新規機能では Flutter を試験採用するケースも出ています。総じて、新規採用という観点では Flutter の方が勢いが強く、RN は既存ユーザー企業による支えが中心になりつつあります。</p>
<p><h3><span id="toc5">市場シェア</span></h3>
</p>
<p><strong>開発者利用シェア</strong>: 世界全体のデベロッパー動向を見ると、Flutter が React Native を上回るシェアを占めています。Statista や JetBrains の調査によれば<strong>2022 ～ 2023 年時点でクロスプラットフォーム開発フレームワーク利用率は Flutter が約 46%、React Native が約 32 ～ 35%</strong>となっており、Flutter が最も人気のフレームワークです (<a href="https://code-b.dev/blog/flutter-vs-react-native#:~:text=Flutter%20%26%20React%20Native%20Compared,Flutter%20for%20their%20app">Flutter &#038; React Native Compared | Best Framework for your Project?</a>) (<a href="https://gist.github.com/tkrotoff/93f5278a4e8df7e5f6928eff98684979#:~:text=2023%20,2023%2Fdevelopment%2F%23mobile">React Native vs Flutter · GitHub</a>)。これは数年前まで先行していた React Native を Flutter が追い抜いたことを示しています。この傾向は 2024 年以降も続いており、Stack Overflow 開発者調査 2023 でも<strong>Flutter 利用率 9.1% vs RN 8.4%</strong>と Flutter が僅かながら上回っています (<a href="https://gist.github.com/tkrotoff/93f5278a4e8df7e5f6928eff98684979#:~:text=2023%20,co%2F2023">React Native vs Flutter · GitHub</a>)。また Google Trends の検索人気でも Flutter への関心度が RN を大きく上回っており (<a href="https://flatirons.com/blog/popularity-of-flutter-vs-react-native-2024/#:~:text=Google%20Trends%20Popularity%20Comparison">Popularity of Flutter vs. React Native in 2025 &#8211; Flatirons</a>)、コミュニティの盛り上がりは Flutter が優勢です。</p>
<p><strong>エコシステム規模</strong>: GitHub 上のスター数でも Flutter は約 15.2 万、React Native は約 10.9 万と差がついています (<a href="https://flatirons.com/blog/popularity-of-flutter-vs-react-native-2024/#:~:text=GitHub%20Stars">Popularity of Flutter vs. React Native in 2025 &#8211; Flatirons</a>)。Flutter 関連の Stack Overflow 質問件数も RN より多く、開発者コミュニティの活動量が高いことが伺えます (<a href="https://flatirons.com/blog/popularity-of-flutter-vs-react-native-2024/#:~:text=Stack%20Overflow%20Questions">Popularity of Flutter vs. React Native in 2025 &#8211; Flatirons</a>)。もっとも React Native も依然多くの開発者に使われており、モバイルクロスプラットフォーム分野では Flutter と RN の二強状態が続いています。市場シェアの観点では<strong>Flutter がこのままリードを広げていく可能性が高い</strong>でしょう。</p>
<p><h3><span id="toc6">技術的な優位性</span></h3>
</p>
<p><strong>Flutter の技術特性</strong>: Flutter は Dart 言語で実装され、ネイティブアプリに<strong>Ahead-of-Time（AOT）コンパイル</strong>されるため、ランタイムに仮想マシンやブリッジを必要としません (<a href="https://springsapps.com/knowledge/flutter-vs-react-native-in-2024#:~:text=In%20terms%20of%20performance%2C%20Flutter,its%20performance%20compared%20to%20Flutter">Flutter vs React Native in 2025 &#8211; Springs</a>)。これにより描画パフォーマンスが高く、60fps 以上のスムーズな UI 描画やアニメーションが可能です。また、Flutter は Skia エンジン上に<strong>独自 UI を描画</strong>する仕組みで、デザインの自由度が非常に高いです。プラットフォーム間で UI の再現性が統一され、Android と iOS で全く同じ見た目・挙動を実現できます。加えて、モバイル以外に Web やデスクトップ、組み込み（Embedded）まで単一コードでターゲットにできる点も技術的優位とされています。</p>
<p><strong>React Native の技術特性</strong>: React Native は JavaScript（または TypeScript）と React を用いて記述し、<strong>各プラットフォームのネイティブ UI コンポーネントを橋渡し（ブリッジ）する</strong>形で描画します。メリットは Web フロントエンド技術（JSX+CSS）がそのままモバイル開発に応用でき、Web エンジニアが参入しやすいことです。ネイティブコンポーネントを使うため iOS/Android 各プラットフォームの標準的な UI を自動で取得でき、見た目が「ネイティブらしい」挙動になります。しかし欠点として、JavaScript からネイティブへの<strong>ブリッジによるオーバーヘッド</strong>があり、複雑な画面でパフォーマンスが低下しやすい点が挙げられます (<a href="https://springsapps.com/knowledge/flutter-vs-react-native-in-2024#:~:text=In%20terms%20of%20performance%2C%20Flutter,its%20performance%20compared%20to%20Flutter">Flutter vs React Native in 2025 &#8211; Springs</a>)（Meta は新アーキテクチャでこの問題の改善に取り組んでいますが依然 Flutter の直接ネイティブ実行に分があります）。また、開発には Node.js 環境や Gradle 設定など多くのツールチェーンを統合する必要があり、セットアップやビルドがやや複雑です。総じて<strong>技術面では、パフォーマンスと一貫性で Flutter が優れ、Web 技術資産の再利用性で React Native が優れる</strong>と言えます。</p>
<p><h3><span id="toc7">開発者の支持率</span></h3>
</p>
<p><strong>開発者コミュニティの支持</strong>: 開発者からの人気・支持という面でも両者に差が出つつあります。Stack Overflow の開発者調査「最も愛されるフレームワーク」部門では、Flutter は<strong>68%前後の開発者から「好き」と評価</strong>されており、React Native の約 55 ～ 58%を上回っています (<a href="https://gist.github.com/tkrotoff/93f5278a4e8df7e5f6928eff98684979#:~:text=%2A%20Popularity%3A%20Flutter%2012.64,React%20Native%2013.05">React Native vs Flutter · GitHub</a>)。これは Flutter 開発者の多くがその経験に満足していることを示します。一方、React Native は Flutter に比べやや満足度で劣り、「どちらかといえば敬遠される」層も一定数います。ただし<strong>JavaScript/React 経験者の圧倒的な母数</strong>があるため、依然として学習コストの低さから React Native を選ぶ開発者も少なくありません。GitHub のコントリビューションを見ると、Flutter リポジトリのコミット数が RN より多く活発に開発が進められている一方で、RN は未マージのプルリクエスト件数が Flutter より多く、オープンソース貢献の受け皿としても機能しています (<a href="https://flatirons.com/blog/popularity-of-flutter-vs-react-native-2024/#:~:text=GitHub%20Commits">Popularity of Flutter vs. React Native in 2025 &#8211; Flatirons</a>)。今後も<strong>Flutter は Google 主導の安定したアップデート</strong>が続く見込みで、開発者コミュニティの勢いは Flutter が優位でしょう。</p>
<p><h3><span id="toc8">パフォーマンス比較</span></h3>
</p>
<p><strong>速度・効率</strong>: パフォーマンス面では、総合すると Flutter が有利と考えられます。Flutter はネイティブコードに直接コンパイルされるため、スクロールやアニメーションの滑らかさ、描画フレームレートで高い水準を示します (<a href="https://springsapps.com/knowledge/flutter-vs-react-native-in-2024#:~:text=In%20terms%20of%20performance%2C%20Flutter,its%20performance%20compared%20to%20Flutter">Flutter vs React Native in 2025 &#8211; Springs</a>)。事例でも、Flutter 製アプリがしばしば「ネイティブと遜色ない」「カクつきが減った」と評価されます。React Native も日常的な CRUD アプリ程度であれば実用十分な速度がありますが、JS とネイティブ間通信がボトルネックになる処理（大量の一覧描画や同期的な複雑演算など）では Flutter との差が現れます。もっとも、React Native 側も近年「Fabric」という新レンダリングエンジンや Turbo Modules により、ブリッジのオーバーヘッド削減を進めています。軽量な UI や一部ネイティブモジュールの組み合わせ次第では RN でもほぼネイティブ並みの体感速度を実現できます。<strong>一般論としては UI 表現力とピーク性能で Flutter が上回り、RN は十分実用的だが極限では Flutter に一歩譲る</strong>という状況です (<a href="https://springsapps.com/knowledge/flutter-vs-react-native-in-2024#:~:text=In%20terms%20of%20performance%2C%20Flutter,its%20performance%20compared%20to%20Flutter">Flutter vs React Native in 2025 &#8211; Springs</a>)。</p>
<p><h3><span id="toc9">将来の成長予測</span></h3>
</p>
<p>以上を踏まえ、<strong>今後より成長する可能性が高いのは Flutter</strong>だと予測します。理由は以下の通りです。</p>
<li><strong>採用企業の増加</strong>: 新興企業や既存プロダクトの刷新で Flutter を採用する動きが加速しています。Google 自身が Flutter を重要プロジェクトに適用し続けていることも信頼感に繋がり、Flutter 選択の企業が今後も増えるでしょう。一方、React Native は現状維持的な採用が多く、新たな大規模事例は以前ほど聞かれなくなっています。</li>
<li><strong>コミュニティと市場シェア</strong>: 開発者コミュニティの勢い・シェアともに Flutter がリードしており (<a href="https://code-b.dev/blog/flutter-vs-react-native#:~:text=Flutter%20%26%20React%20Native%20Compared,Flutter%20for%20their%20app">Flutter &#038; React Native Compared | Best Framework for your Project?</a>) (<a href="https://gist.github.com/tkrotoff/93f5278a4e8df7e5f6928eff98684979#:~:text=2023%20,2023%2Fdevelopment%2F%23mobile">React Native vs Flutter · GitHub</a>)、このトレンドは当面続く見込みです。特に新世代のモバイル開発者に Flutter が支持されていることは将来の人材供給面でも強みです。</li>
<li><strong>技術革新のスピード</strong>: Flutter は年次の大型アップデート（Flutter 3 以降も継続的に改良）が活発で、Web やデスクトップ、組み込み領域への展開など着実にプラットフォームを拡大しています。React Native もアップデートは続いていますが、元々の設計上 Web 対応は別プロジェクト（React Native Web）に頼る必要があるなど、守備範囲が限定的です。マルチプラットフォーム対応力で Flutter が先行しています。</li>
<li><strong>パフォーマンスと体験</strong>: ユーザー体験の質に直結するパフォーマンスで優位なこと、UI デザインの自由度が高いことから、企業が「よりリッチで高速なアプリ」を目指す場合 Flutter を選ぶ傾向が強まるでしょう。実際 Tencent や BMW が Flutter を選択したのはパフォーマンスと開発効率の両立が理由です (<a href="https://www.goodfirms.co/blog/flutter-2025-definition-key-trends-statistics#:~:text=,10%20million%20daily%20active%20users">Flutter 2025: Definition, Key Trends, and Statistics</a>) (<a href="https://www.nomtek.com/blog/flutter-app-examples#:~:text=Thanks%20to%20Flutter%2C%20BMW%20deployed,resolved%20after%20migrating%20to%20Flutter">Companies Using Flutter in 2024</a>)。</li>
<p>総合すると、React Native も依然有力なクロスプラットフォーム手段ではありますが、<strong>今後数年の成長率や新規プロジェクト採用においては Flutter が React Native を上回る</strong>可能性が高いです (<a href="https://code-b.dev/blog/flutter-vs-react-native#:~:text=Flutter%20%26%20React%20Native%20Compared,Flutter%20for%20their%20app">Flutter &#038; React Native Compared | Best Framework for your Project?</a>)。もっとも各技術には得意分野があるため、Web 資産を流用したいケースでは引き続き React Native が選ばれるなど、両者が共存しつつも Flutter が主導権を握る形で市場が推移していくと考えられます。</p>
<p><strong>参考資料</strong>:</p>
<li>Flutter 国内導入事例: ユニクロ、スシロー、じゃらんなど (<a href="https://pentagon.tokyo/app/6357/#:~:text=Flutter%E8%A3%BD%E3%81%AE%E6%9C%89%E5%90%8D%E3%82%A2%E3%83%97%E3%83%AA%E3%81%AF%E3%80%81%E3%83%A6%E3%83%8B%E3%82%AF%E3%83%AD%E3%80%81%E6%9D%BE%E5%B1%8B%E3%80%81%E3%82%B9%E3%82%B7%E3%83%AD%E3%83%BC%E3%80%81%E3%81%98%E3%82%83%E3%82%89%E3%82%93%E3%80%81%E3%81%AA%E3%81%A9%E3%81%8C%E3%81%82%E3%81%92%E3%82%89%E3%82%8C%E3%81%BE%E3%81%99%E3%80%82">Flutter アプリの国内事例 12 選！大手の Flutter 移行も紹介 | 東京のアプリ開発会社</a>)</li>
<li>Flutter 海外導入事例: Google Pay、Alibaba（Xianyu）、Nubank、BMW 他 (<a href="https://www.goodfirms.co/blog/flutter-2025-definition-key-trends-statistics#:~:text=,10%20million%20daily%20active%20users">Flutter 2025: Definition, Key Trends, and Statistics</a>)</li>
<li>Flutter vs React Native の統計比較: 開発者利用率・人気度 (<a href="https://gist.github.com/tkrotoff/93f5278a4e8df7e5f6928eff98684979#:~:text=%2A%20Popularity%3A%20Flutter%2012.64,React%20Native%2013.05">React Native vs Flutter · GitHub</a>)</li>
<li>技術的比較と性能評価: Flutter のネイティブ高速性、RN の JS ブリッジによる差(<a href="https://springsapps.com/knowledge/flutter-vs-react-native-in-2024#:~:text=In%20terms%20of%20performance%2C%20Flutter,its%20performance%20compared%20to%20Flutter">Flutter vs React Native in 2025 &#8211; Springs</a>)</li><p>The post <a href="https://aichi.blog/flutter-app-examples/">Flutter 製アプリの事例と Flutter vs React Native の将来展望</a> first appeared on <a href="https://aichi.blog">AichiLog</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>enviedパッケージを使用して、環境変数をより安全に管理する</title>
		<link>https://aichi.blog/flutter-env-file-2/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=flutter-env-file-2</link>
		
		<dc:creator><![CDATA[愛知郎]]></dc:creator>
		<pubDate>Thu, 13 Feb 2025 14:51:51 +0000</pubDate>
				<category><![CDATA[Flutter]]></category>
		<category><![CDATA[チーム開発]]></category>
		<category><![CDATA[デプロイ]]></category>
		<category><![CDATA[開発]]></category>
		<guid isPermaLink="false">https://aichi.blog/flutter-env-file-2/</guid>

					<description><![CDATA[<p>目次 はじめに1. enviedのインストール2. .envファイルの作成3. 環境変数を管理するファイルを作成4. env.g.dartの生成生成されるenv.g.dart5. 環境変数の使用方法6. enviedが環 [&#8230;]</p>
<p>The post <a href="https://aichi.blog/flutter-env-file-2/">enviedパッケージを使用して、環境変数をより安全に管理する</a> first appeared on <a href="https://aichi.blog">AichiLog</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>
  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-4" checked><label class="toc-title" for="toc-checkbox-4">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">はじめに</a></li><li><a href="#toc2" tabindex="0">1. enviedのインストール</a></li><li><a href="#toc3" tabindex="0">2. .envファイルの作成</a></li><li><a href="#toc4" tabindex="0">3. 環境変数を管理するファイルを作成</a></li><li><a href="#toc5" tabindex="0">4. env.g.dartの生成</a><ol><li><a href="#toc6" tabindex="0">生成されるenv.g.dart</a></li></ol></li><li><a href="#toc7" tabindex="0">5. 環境変数の使用方法</a></li><li><a href="#toc8" tabindex="0">6. enviedが環境変数を管理する上で安全な理由</a></li><li><a href="#toc9" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2><span id="toc1">はじめに</span></h2>
<p>Flutterアプリ開発において、APIキーやデータベースパスワードなどの機密情報を安全に管理することは非常に重要です。本記事では、<code>envied</code>パッケージを使用して環境変数を安全に管理する方法を解説します。</p>
<p><h2><span id="toc2">1. enviedのインストール</span></h2>
<p>まず、Flutterプロジェクトに<code>envied</code>パッケージを追加します。</p>
<pre><code class="language-bash">flutter pub add envied
flutter pub add --dev build_runner envied_generator</code></pre>
<p><code>envied</code>は環境変数を安全に管理するためのパッケージで、<code>build_runner</code>と<code>envied_generator</code>を利用してコードを自動生成します。</p>
<p><h2><span id="toc3">2. .envファイルの作成</span></h2>
<p>環境変数を定義するために、<code>.env</code>ファイルをプロジェクトのルートディレクトリに作成し、以下のように記述します。</p>
<pre><code class="language-bash">DB_PASSWORD=1234567890
DB_PORT=3000</code></pre>
<p>このファイルには機密情報を含むため、<code>.gitignore</code>に追加してバージョン管理から除外してください。</p>
<pre><code class="language-bash">echo ".env" >> .gitignore
echo "env.g.dart" >> .gitignore  # のちに生成されるファイル</code></pre>
<p><h2><span id="toc4">3. 環境変数を管理するファイルを作成</span></h2>
<p>次に、<code>lib/env.dart</code>というファイルを作成し、以下のコードを記述します。</p>
<pre><code class="language-dart">import 'package:envied/envied.dart';
part 'env.g.dart';
<p>// requireEnvFileがtrueの場合、.envファイルがないとエラーが出る
@Envied(requireEnvFile: true, path: '.env')
final class Env {
  @EnviedField(varName: 'DB_PASSWORD')
  static const String dbPassword = _Env.dbPassword;</p>
  @EnviedField(varName: 'DB_PORT')
  static const String dbPort = _Env.dbPort;
}</code></pre>
<p>このファイルでは、<code>@Envied</code>アノテーションを使用して<code>.env</code>ファイルから環境変数を読み込むように設定します。</p>
<p><h2><span id="toc5">4. env.g.dartの生成</span></h2>
<p>環境変数を自動生成するために、以下のコマンドを実行します。</p>
<pre><code class="language-bash">flutter pub run build_runner build --delete-conflicting-outputs</code></pre>
<p>このコマンドを実行すると、<code>env.g.dart</code>というファイルが自動生成されます。</p>
<p><h3><span id="toc6">生成されるenv.g.dart</span></h3>
</p>
<pre><code class="language-dart">// GENERATED CODE - DO NOT MODIFY BY HAND
<p>part of 'env.dart';</p>
<p>// ************************************************************************<strong>
// EnviedGenerator
// </strong>**********************************************************************<strong></p>
// coverage:ignore-file
// ignore_for_file: type=lint
// generated_from: .env
final class _Env {
  static const String dbPassword = '1234567890'; // envの中身がここにくる
  static const String dbPort = '3000';
}</code></pre>
<p>このファイルが生成されたら、<code>.env</code>ファイルは削除しても問題ありません。</p>
<pre><code class="language-bash">rm .env</code></pre>
<p><h2><span id="toc7">5. 環境変数の使用方法</span></h2>
<p>アプリケーション内で環境変数を使用する際は、以下のように呼び出します。</p>
<pre><code class="language-dart">import 'env.dart';
void main() {
  print(Env.dbPassword);
  print(Env.dbPort);
}</code></pre>
<p>このコードを実行すると、<code>.env</code>ファイルに定義した値が出力されます。</p>
<p><h2><span id="toc8">6. enviedが環境変数を管理する上で安全な理由</span></h2>
</p>
<p>なぜ、このような手間をかけて、環境変数を管理する必要があるのでしょうか？<br />
それは、enviedが環境変数を暗号化してくれるからです。</p>
<p>通常この暗号化は、アプリのビルド時に行われます。<br />
ただ、開発の段階で、環境変数を暗号化する機能もあります。</p>
<pre><code class="language-dart">import 'package:envied/envied.dart';
part 'env.g.dart';
@Envied(requireEnvFile: true, path: '.env')
final class Env {
  // 暗号化する場合は、obfuscate: trueを追加
  @EnviedField(varName: 'DB_PASSWORD', obfuscate: true)
  static String dbPassword = _Env.dbPassword;
  @EnviedField(varName: 'DB_PORT')
  static String dbPort = _Env.dbPort;
}</code></pre>
<p>暗号化された場合（今回だと<code>dbPassword</code>）、生成される<code>env.g.dart</code>は以下のようになります。</p>
<pre><code class="language-dart">// GENERATED CODE - DO NOT MODIFY BY HAND
<p>part of 'env.dart';</p>
<p>// </strong>**********************************************************************<strong>
// EnviedGenerator
// </strong>************************************************************************</p>
<p>// coverage:ignore-file
// ignore_for_file: type=lint
// generated_from: .env
final class _Env {
  static const List<int> _enviedkeydbPassword = <int>[
    3175743209,
    3642003943,
    2774983698,
    2234134847,
    776266119,
    3460629094,
    2118227522,
    209157887,
    2325619839,
    559751284,
  ];</p>
<p>static const List<int> _envieddatadbPassword = <int>[
    3175743192,
    3642003925,
    2774983713,
    2234134795,
    776266162,
    3460629072,
    2118227573,
    209157831,
    2325619782,
    559751236,
  ];</p>
<p>static final String dbPassword = String.fromCharCodes(List<int>.generate(
    _envieddatadbPassword.length,
    (int i) => i,
    growable: false,
  ).map((int i) => _envieddatadbPassword[i] ^ _enviedkeydbPassword[i]));</p>
  static const String dbPort = '3000';
}</code></pre>
<p><h2><span id="toc9">まとめ</span></h2>
<ul>
<li><code>envied</code>を利用することで、安全に環境変数を管理できる。</li>
<li><code>.env</code>ファイルはバージョン管理から除外する。</li>
<li><code>env.g.dart</code>も<code>.gitignore</code>に追加する。</li>
<li><code>build_runner</code>を使用して<code>env.g.dart</code>を自動生成する。</li>
<li>生成された<code>env.g.dart</code>を使用して環境変数を取得する。</li>
</ul>
<p>この方法を活用することで、Flutterアプリのセキュリティを向上させることができます。ぜひ、試してみてください！</p><p>The post <a href="https://aichi.blog/flutter-env-file-2/">enviedパッケージを使用して、環境変数をより安全に管理する</a> first appeared on <a href="https://aichi.blog">AichiLog</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>【Flutter】dotenv パッケージを使って環境変数を安全に管理する方法</title>
		<link>https://aichi.blog/flutter-env-file/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=flutter-env-file</link>
		
		<dc:creator><![CDATA[愛知郎]]></dc:creator>
		<pubDate>Wed, 12 Feb 2025 14:53:26 +0000</pubDate>
				<category><![CDATA[Flutter]]></category>
		<category><![CDATA[開発]]></category>
		<guid isPermaLink="false">https://aichi.blog/flutter-env-file/</guid>

					<description><![CDATA[<p>本記事では、`flutter_dotenv` パッケージを活用して環境変数を設定する方法を解説します。 目次 環境変数の設定手順1. flutter_dotenv パッケージのインストール2. .env ファイルの作成3 [&#8230;]</p>
<p>The post <a href="https://aichi.blog/flutter-env-file/">【Flutter】dotenv パッケージを使って環境変数を安全に管理する方法</a> first appeared on <a href="https://aichi.blog">AichiLog</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>本記事では、`flutter_dotenv` パッケージを活用して環境変数を設定する方法を解説します。</p>

  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-6" checked><label class="toc-title" for="toc-checkbox-6">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">環境変数の設定手順</a><ol><li><a href="#toc2" tabindex="0">1. flutter_dotenv パッケージのインストール</a></li><li><a href="#toc3" tabindex="0">2. .env ファイルの作成</a></li><li><a href="#toc4" tabindex="0">3. アセットの設定</a></li><li><a href="#toc5" tabindex="0">4. 環境変数の読み込み</a></li><li><a href="#toc6" tabindex="0">5. 環境変数の利用</a></li></ol></li><li><a href="#toc7" tabindex="0">環境変数管理</a><ol><li><a href="#toc8" tabindex="0">.gitignore に .env を追加する</a></li><li><a href="#toc9" tabindex="0">環境ごとに .env ファイルを分ける</a></li></ol></li><li><a href="#toc10" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2><span id="toc1">環境変数の設定手順</span></h2>
<h3><span id="toc2">1. flutter_dotenv パッケージのインストール</span></h3>
<p>まず、`flutter_dotenv` パッケージをプロジェクトに追加します。以下のコマンドを実行してください：</p>
<pre><code>
flutter pub add flutter_dotenv
</code></pre>
<h3><span id="toc3">2. .env ファイルの作成</span></h3>
<p>プロジェクトのルートディレクトリに `.env` ファイルを作成し、環境変数を定義します。</p>
<pre><code>
API_KEY=your_api_key_here
</code></pre>
<h3><span id="toc4">3. アセットの設定</span></h3>
<p>作成した `.env` ファイルを Flutter に認識させるために、`pubspec.yaml` に以下の設定を追加します：</p>
<pre><code>
flutter:
  assets:
    - .env
</code></pre>
<h3><span id="toc5">4. 環境変数の読み込み</span></h3>
<p>アプリケーションの起動時に環境変数を読み込むため、main.dart を修正します。</p>
<pre><code>import 'package:flutter_dotenv/flutter_dotenv.dart';
import 'package:flutter/material.dart';
import 'my_app.dart'; // 実際のアプリケーションファイルをインポート
void main() async {
 await dotenv.load(fileName: ".env"); // ここでenvファイルを読み込む
 runApp(const MyApp());
} </code></pre>
<h3><span id="toc6">5. 環境変数の利用</span></h3>
<p>環境変数の設定が完了したら、アプリケーション内で以下のように参照できます：</p>
<pre><code>
final apiKey = dotenv.env['API_KEY'];
print("API Key: $apiKey");
</code></pre>
<h2><span id="toc7">環境変数管理</span></h2>
<h3><span id="toc8">.gitignore に .env を追加する</span></h3>
<p>`.env` ファイルには機密情報が含まれるため、バージョン管理システム（Git など）に追加されないように `.gitignore` に以下の設定を記述してください：</p>
<pre><code>
.env
</code></pre>
<h3><span id="toc9">環境ごとに .env ファイルを分ける</span></h3>
<p>開発・ステージング・本番環境で異なる環境変数を使用する場合、.env.dev、.env.prod など複数のファイルを用意し、dotenv.load(fileName: &#8220;env_file_name&#8221;) で適切なファイルを読み込むようにしましょう。</p>
<pre><code>
void main() async {
  await dotenv.load(fileName: ".env.prod");
  runApp(const MyApp());
}
</code></pre>
<h2><span id="toc10">まとめ</span></h2>
<p>Flutter アプリケーションで環境変数を安全に管理するための手順を解説しました。`flutter_dotenv` を活用すれば、API キーや認証情報を安全に管理できるため、セキュリティリスクを減らすことができます。</p>
<p><strong>ポイントまとめ</strong><br />
&#8211; flutter_dotenv を使用して環境変数を管理<br />
&#8211; .env ファイルを .gitignore に追加<br />
&#8211; 環境ごとに異なる .env ファイルを活用</p>
<p>Flutter アプリ開発において、適切な環境変数管理を実践し、安全なアプリケーション運用を目指しましょう！</p><p>The post <a href="https://aichi.blog/flutter-env-file/">【Flutter】dotenv パッケージを使って環境変数を安全に管理する方法</a> first appeared on <a href="https://aichi.blog">AichiLog</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>【Flutter】flutterの特徴とウィジェット</title>
		<link>https://aichi.blog/flutter-features-and-widgets/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=flutter-features-and-widgets</link>
		
		<dc:creator><![CDATA[愛知郎]]></dc:creator>
		<pubDate>Fri, 10 Mar 2023 01:04:07 +0000</pubDate>
				<category><![CDATA[Flutter]]></category>
		<category><![CDATA[プログラミング]]></category>
		<guid isPermaLink="false">https://aichi.blog/?p=2820</guid>

					<description><![CDATA[<p>Flutterは、Googleが開発したクロスプラットフォームフレームワークであり、iOS、Android、Web、デスクトップ用のアプリケーションを開発することができます。 目次 Flutterの特徴ウィジェットについ [&#8230;]</p>
<p>The post <a href="https://aichi.blog/flutter-features-and-widgets/">【Flutter】flutterの特徴とウィジェット</a> first appeared on <a href="https://aichi.blog">AichiLog</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Flutterは、Googleが開発したクロスプラットフォームフレームワークであり、iOS、Android、Web、デスクトップ用のアプリケーションを開発することができます。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-8" checked><label class="toc-title" for="toc-checkbox-8">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">Flutterの特徴</a></li><li><a href="#toc2" tabindex="0">ウィジェットについて</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">Flutterの特徴</span></h2>



<p>Flutterは、Dartというプログラミング言語で書かれており、高速な開発と美しいUIを実現することができます。</p>



<p>そのほかにも、たくさんの特徴があります。</p>



<ul class="wp-block-list">
<li>ウィジェットを使って、美しいUIを実現することができる</li>



<li>高速に開発できる</li>



<li>Dartによる静的型付け言語であり、コードの品質を保つことができる</li>



<li>ホットリロードにより、アプリの開発がスムーズに進む</li>
</ul>



<p>Flutterは、開発者にとって魅力的なフレームワークであり、今後ますます注目されることが予想されます。</p>



<h2 class="wp-block-heading"><span id="toc2">ウィジェットについて</span></h2>



<p>Flutterのウィジェットとは、ボタンやラベル、画像など、UIを構成する最小単位のことです。Flutterでは、これらのウィジェットを組み合わせて画面を構築します。ウィジェットは、親ウィジェットと子ウィジェットの関係を持ち、ツリー構造を形成します。</p>



<p>Flutterには、様々な種類のウィジェットが用意されており、簡単に美しいUIを構築することができます。</p>



<p>例えば、<code>Text</code>ウィジェットを使ってテキストを表示したり、<code>Image</code>ウィジェットを使って画像を表示したりすることができます。</p>



<p>また、Flutterには、マテリアルデザインやカップケーキデザインなど、様々なデザインのウィジェットが用意されています。これらのウィジェットを組み合わせることで、美しいUIを簡単に実現することができます。</p>



<p>次回の記事では、Flutterウィジェットの種類や使い方について詳しく解説していきます。</p><p>The post <a href="https://aichi.blog/flutter-features-and-widgets/">【Flutter】flutterの特徴とウィジェット</a> first appeared on <a href="https://aichi.blog">AichiLog</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>【Flutter】ウィジェットの使い方</title>
		<link>https://aichi.blog/flutter-widget-usage/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=flutter-widget-usage</link>
		
		<dc:creator><![CDATA[愛知郎]]></dc:creator>
		<pubDate>Fri, 10 Mar 2023 01:16:36 +0000</pubDate>
				<category><![CDATA[Flutter]]></category>
		<category><![CDATA[プログラミング]]></category>
		<guid isPermaLink="false">https://aichi.blog/?p=2826</guid>

					<description><![CDATA[<p>Flutterのウィジェットを使えば、簡単に美しいUIを構築することができます。 そんなウィジェットは、様々な種類が用意されており、それぞれに特徴があります。 目次 基本ウィジェットレイアウトウィジェットマテリアルデザイ [&#8230;]</p>
<p>The post <a href="https://aichi.blog/flutter-widget-usage/">【Flutter】ウィジェットの使い方</a> first appeared on <a href="https://aichi.blog">AichiLog</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Flutterのウィジェットを使えば、簡単に美しいUIを構築することができます。</p>



<p>そんなウィジェットは、様々な種類が用意されており、それぞれに特徴があります。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-10" checked><label class="toc-title" for="toc-checkbox-10">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">基本ウィジェット</a></li><li><a href="#toc2" tabindex="0">レイアウトウィジェット</a></li><li><a href="#toc3" tabindex="0">マテリアルデザインウィジェット</a></li><li><a href="#toc4" tabindex="0">Cupertinoデザインウィジェット</a></li><li><a href="#toc5" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">基本ウィジェット</span></h2>



<p><code>Text</code>ウィジェットを使ってテキストを表示したり、<code>Image</code>ウィジェットを使って画像を表示したりすることができます。</p>



<p>また、<code>Container</code>ウィジェットを使って、要素をグループ化したり、背景色を設定したりすることもできます。</p>



<h2 class="wp-block-heading"><span id="toc2">レイアウトウィジェット</span></h2>



<p>レイアウトウィジェットを使えば、ウィジェットを配置することができます。</p>



<p><code>Row</code>ウィジェットを使って、横方向にウィジェットを配置したり、<code>Column</code>ウィジェットを使って、縦方向にウィジェットを配置したりすることができます。また、<code>Stack</code>ウィジェットを使って、ウィジェットを重ねて配置することもできます。</p>



<h2 class="wp-block-heading"><span id="toc3">マテリアルデザインウィジェット</span></h2>



<p>マテリアルデザインは、Googleが提唱するUIデザインの一つであり、Flutterには、マテリアルデザインに基づいたウィジェットが用意されています。</p>



<p>例えば、<code>AppBar</code>ウィジェットを使って、アプリケーションバーを表示したり、<code>Card</code>ウィジェットを使って、カードを表示したりすることができます。</p>



<h2 class="wp-block-heading"><span id="toc4">Cupertinoデザインウィジェット</span></h2>



<p>Cupertinoデザインは、iOSのUIデザインに基づいたものであり、Flutterには、Cupertinoデザインに基づいたウィジェットが用意されています。</p>



<p>例えば、<code>CupertinoNavigationBar</code>ウィジェットを使って、iOSのナビゲーションバーを表示したり、<code>CupertinoButton</code>ウィジェットを使って、iOSのボタンを表示したりすることができます。</p>



<h2 class="wp-block-heading"><span id="toc5">まとめ</span></h2>



<p>Flutterには、様々な種類のウィジェットが用意されており、それぞれに特徴があります。</p>



<p>上記のウィジェットを使いこなせば、簡単に美しいUIを構築することができます。是非、活用してみてください。</p><p>The post <a href="https://aichi.blog/flutter-widget-usage/">【Flutter】ウィジェットの使い方</a> first appeared on <a href="https://aichi.blog">AichiLog</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>【Flutter】ウィジェットツリー構造</title>
		<link>https://aichi.blog/flutter-widget-tree-structure/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=flutter-widget-tree-structure</link>
		
		<dc:creator><![CDATA[愛知郎]]></dc:creator>
		<pubDate>Fri, 10 Mar 2023 01:26:31 +0000</pubDate>
				<category><![CDATA[Flutter]]></category>
		<category><![CDATA[プログラミング]]></category>
		<guid isPermaLink="false">https://aichi.blog/?p=2828</guid>

					<description><![CDATA[<p>目次 Flutterにおけるウィジェットツリー構造とはウィジェットツリーの例ウィジェットツリーの利用まとめ Flutterにおけるウィジェットツリー構造とは Flutterにおいて、ウィジェットツリー構造とは、UIを構成 [&#8230;]</p>
<p>The post <a href="https://aichi.blog/flutter-widget-tree-structure/">【Flutter】ウィジェットツリー構造</a> first appeared on <a href="https://aichi.blog">AichiLog</a>.</p>]]></description>
										<content:encoded><![CDATA[<div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-12" checked><label class="toc-title" for="toc-checkbox-12">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">Flutterにおけるウィジェットツリー構造とは</a></li><li><a href="#toc2" tabindex="0">ウィジェットツリーの例</a></li><li><a href="#toc3" tabindex="0">ウィジェットツリーの利用</a></li><li><a href="#toc4" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">Flutterにおけるウィジェットツリー構造とは</span></h2>



<p>Flutterにおいて、ウィジェットツリー構造とは、UIを構成するウィジェットが、木構造のように親子関係になっている構造のことを指します。</p>



<p>Flutterのウィジェットは、UIの構成要素として、ボタン、テキスト、画像などの基本的なものから、複雑なアニメーションやレイアウトを行うためのものまで、様々な種類があります。</p>



<p>そんなウィジェットツリーは、Flutterにおいて非常に重要な役割を担っています。</p>



<p>ウィジェットツリーを使うことで、UIを構成するウィジェットの階層関係を表現し、FlutterフレームワークがUIのビルドや再描画、アニメーションなどを効率的に処理することができます。</p>



<h2 class="wp-block-heading"><span id="toc2">ウィジェットツリーの例</span></h2>



<p>例えば、次のようなウィジェットツリー構造を考えてみます。</p>



<pre class="wp-block-code"><code>Container(
  child: Column(
    children: &#91;
      Text('Hello'),
      Text('World'),
    ],
  ),
)

</code></pre>



<p>この場合、<code>Container</code>が親であり、<code>Column</code>がその子、<code>Column</code>の中には2つの<code>Text</code>ウィジェットが含まれています。</p>



<p>また例えば、以下のようなウィジェットツリー構造も考えることができます。</p>



<pre class="wp-block-code"><code>Expanded(
  child: ListView.builder(
    itemBuilder: (context, index) {
      return ListTile(
        title: Text('Item $index'),
      );
    },
  ),
)

</code></pre>



<p>この場合、<code>Expanded</code>が親であり、<code>ListView.builder</code>がその子、<code>ListView.builder</code>の中には複数の<code>ListTile</code>ウィジェットが含まれています。</p>



<p>このように、ウィジェットツリーの構造を理解することで、UIを構成するウィジェットの関係性を正確に把握し、必要に応じて調整することができます。</p>



<p>また、ウィジェットツリーを利用することで、FlutterフレームワークがUIのビルドや再描画、アニメーションなどをより効率的に処理することができます。</p>



<h2 class="wp-block-heading"><span id="toc3">ウィジェットツリーの利用</span></h2>



<p>ウィジェットツリーは、デザイナーや開発者にとって、UIの構成を理解するための重要な道具になっています。</p>



<p>例えば、UIのレイアウトが崩れた場合、ウィジェットツリーを確認することで、どのウィジェットが原因であるかを特定することができます。</p>



<p>他にも、ウィジェットツリーは、Flutterのデバッグツールにも利用されます。</p>



<p>Flutterのデバッグツールを使うことで、ウィジェットツリーをリアルタイムに確認することができ、UIの構成や挙動を理解するのに役立ちます。</p>



<h2 class="wp-block-heading"><span id="toc4">まとめ</span></h2>



<p>ウィジェットツリーは、Flutterの最も基本的な概念であり、Flutterの開発を始める前に理解しておく必要があります。</p>



<p>ウィジェットツリーを使いこなすことで、より高度なUIの構築やカスタマイズが可能になります。</p>



<p>以上が、Flutterにおけるウィジェットツリー構造についての解説でした。</p><p>The post <a href="https://aichi.blog/flutter-widget-tree-structure/">【Flutter】ウィジェットツリー構造</a> first appeared on <a href="https://aichi.blog">AichiLog</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>【Flutter】レイアウトについて</title>
		<link>https://aichi.blog/flutter-layout-basics/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=flutter-layout-basics</link>
		
		<dc:creator><![CDATA[愛知郎]]></dc:creator>
		<pubDate>Fri, 10 Mar 2023 12:05:36 +0000</pubDate>
				<category><![CDATA[Flutter]]></category>
		<category><![CDATA[プログラミング]]></category>
		<guid isPermaLink="false">https://aichi.blog/?p=2843</guid>

					<description><![CDATA[<p>Flutterは、ウィジェットを組み合わせてアプリのレイアウトを構築することができます。 そんなウィジェットには、「コンテナー」や「カラム」などいくつかの種類があります。以下では、代表的なウィジェットについて説明します。 [&#8230;]</p>
<p>The post <a href="https://aichi.blog/flutter-layout-basics/">【Flutter】レイアウトについて</a> first appeared on <a href="https://aichi.blog">AichiLog</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Flutterは、ウィジェットを組み合わせてアプリのレイアウトを構築することができます。</p>



<p>そんなウィジェットには、「コンテナー」や「カラム」などいくつかの種類があります。以下では、代表的なウィジェットについて説明します。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-14" checked><label class="toc-title" for="toc-checkbox-14">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">コンテナー</a><ol><li><a href="#toc2" tabindex="0">Padding</a></li><li><a href="#toc3" tabindex="0">Container</a></li></ol></li><li><a href="#toc4" tabindex="0">カラム</a><ol><li><a href="#toc5" tabindex="0">Column</a></li><li><a href="#toc6" tabindex="0">Expanded</a></li></ol></li><li><a href="#toc7" tabindex="0">具体例</a><ol><li><a href="#toc8" tabindex="0">Column</a></li><li><a href="#toc9" tabindex="0">Expanded</a></li><li><a href="#toc10" tabindex="0">Padding</a></li><li><a href="#toc11" tabindex="0">Container</a></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">コンテナー</span></h2>



<p>コンテナーは、ウィジェットの一種で、自身に子ウィジェットを持つことができます。子ウィジェットは、コンテナーの中に表示されます。コンテナーには、以下のような種類があります。</p>



<h3 class="wp-block-heading"><span id="toc2">Padding</span></h3>



<p>Paddingは、子ウィジェットの周りに余白を追加するウィジェットです。余白の大きさを指定することができます。</p>



<h3 class="wp-block-heading"><span id="toc3">Container</span></h3>



<p>Containerは、矩形のウィジェットです。背景色や境界線、余白、幅、高さを指定することができます。</p>



<h2 class="wp-block-heading"><span id="toc4">カラム</span></h2>



<p>カラムは、ウィジェットを縦方向に配置するためのウィジェットです。複数の子ウィジェットを持つことができます。カラムには、以下のような種類があります。</p>



<h3 class="wp-block-heading"><span id="toc5">Column</span></h3>



<p>Columnは、ウィジェットを上から下に並べるウィジェットです。</p>



<h3 class="wp-block-heading"><span id="toc6">Expanded</span></h3>



<p>Expandedは、Column内で使用するウィジェットで、Columnの残り領域を埋めることができます。</p>



<p>以上が、Flutterでよく使われるレイアウトについての説明です。</p>



<h2 class="wp-block-heading"><span id="toc7">具体例</span></h2>



<p>続いて、上記で挙げたウィジェットの具体例を紹介します。</p>



<h3 class="wp-block-heading"><span id="toc8">Column</span></h3>



<p>例えば、縦に並べたいテキストが2つある場合は、<code>Column</code>ウィジェットを使用して以下のように記述することができます。</p>



<pre class="wp-block-code"><code>Column(
  children: &#91;
    Text('上のテキスト'),
    Text('下のテキスト'),
  ],
)

</code></pre>



<h3 class="wp-block-heading"><span id="toc9">Expanded</span></h3>



<p>また、ウィジェットを上下に分割したい場合には、<code>Expanded</code>ウィジェットを使用することができます。</p>



<p>以下の例では、上部に青い背景色を持つコンテナー、下部に赤い背景色を持つコンテナーを配置しています。</p>



<pre class="wp-block-code"><code>Column(
  children: &#91;
    Expanded(
      child: Container(
        color: Colors.blue,
        child: Center(
          child: Text('上部'),
        ),
      ),
    ),
    Expanded(
      child: Container(
        color: Colors.red,
        child: Center(
          child: Text('下部'),
        ),
      ),
    ),
  ],
)

</code></pre>



<p>このように、Flutterのレイアウトは、ウィジェットを組み合わせて簡単に構築することができます。</p>



<h3 class="wp-block-heading"><span id="toc10">Padding</span></h3>



<p>また、ウィジェットの配置を調整するために、<code>Padding</code>ウィジェットを使用することができます。以下の例では、テキストを中央に配置し、周りに余白を追加しています。</p>



<pre class="wp-block-code"><code>Padding(
  padding: EdgeInsets.all(16.0),
  child: Center(
    child: Text('テキスト'),
  ),
)

</code></pre>



<h3 class="wp-block-heading"><span id="toc11">Container</span></h3>



<p>さらに、<code>Container</code>ウィジェットを使用することで、矩形のウィジェットを作成することができます。以下の例では、緑色の背景色を持つ、幅100ピクセル、高さ200ピクセルのコンテナーを作成しています。</p>



<pre class="wp-block-code"><code>Container(
  width: 100,
  height: 200,
  color: Colors.green,
)

</code></pre>



<p>以上が、Flutterでよく使用されるレイアウトについての例です。</p>



<p>これらのウィジェットを組み合わせることで、様々なレイアウトを簡単に構築することができます。</p><p>The post <a href="https://aichi.blog/flutter-layout-basics/">【Flutter】レイアウトについて</a> first appeared on <a href="https://aichi.blog">AichiLog</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>【Flutter】ステートレスウィジェットについて</title>
		<link>https://aichi.blog/flutter-stateless-widgets/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=flutter-stateless-widgets</link>
		
		<dc:creator><![CDATA[愛知郎]]></dc:creator>
		<pubDate>Mon, 13 Mar 2023 11:31:51 +0000</pubDate>
				<category><![CDATA[Flutter]]></category>
		<category><![CDATA[プログラミング]]></category>
		<guid isPermaLink="false">https://aichi.blog/?p=2866</guid>

					<description><![CDATA[<p>Flutterでウィジェットを作成する際、ステートレスウィジェットは非常に重要です。 ステートレスウィジェットは、状態のない（または変更のない）ウィジェットを表します。この記事では、ステートレスウィジェットの概要と、具体 [&#8230;]</p>
<p>The post <a href="https://aichi.blog/flutter-stateless-widgets/">【Flutter】ステートレスウィジェットについて</a> first appeared on <a href="https://aichi.blog">AichiLog</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Flutterでウィジェットを作成する際、ステートレスウィジェットは非常に重要です。</p>



<p>ステートレスウィジェットは、状態のない（または変更のない）ウィジェットを表します。この記事では、ステートレスウィジェットの概要と、具体例を紹介します。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-16" checked><label class="toc-title" for="toc-checkbox-16">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">ステートレスウィジェットとは？</a></li><li><a href="#toc2" tabindex="0">ステートレスウィジェットの例</a></li><li><a href="#toc3" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">ステートレスウィジェットとは？</span></h2>



<p>ステートレスウィジェットは、一度作成されると、その状態を変更することができません。</p>



<p>そのため、ステートレスウィジェットは、変更のないウィジェットを作成するために使用されます。</p>



<h2 class="wp-block-heading"><span id="toc2">ステートレスウィジェットの例</span></h2>



<p>以下は、ステートレスウィジェットの例です。この例では、静的なテキストを表示するだけのシンプルなウィジェットを作成します。</p>



<pre class="wp-block-code"><code>import 'package:flutter/material.dart';

class MyTextWidget extends StatelessWidget {
  final String text;

  MyTextWidget({required this.text});

  @override
  Widget build(BuildContext context) {
    return Text(
      text,
      style: TextStyle(fontSize: 24.0),
    );
  }
}

</code></pre>



<p>上記の例では、MyTextWidgetという名前のステートレスウィジェットが定義されています。このウィジェットは、引数として渡されたテキストを表示します。この例では、テキストのフォントサイズを24ptに設定しています。</p>



<pre class="wp-block-code"><code>MyTextWidget(text: 'Hello, World!')

</code></pre>



<p>上記の例では、MyTextWidgetを使用して、&#8221;Hello, World!&#8221;というテキストが表示されます。</p>



<h2 class="wp-block-heading"><span id="toc3">まとめ</span></h2>



<p>ステートレスウィジェットは、Flutterでウィジェットを作成する際に重要な要素の1つです。</p>



<p>ステートレスウィジェットは、状態のない（または変更のない）ウィジェットを表します。ステートレスウィジェットを使用することで、静的なウィジェットを簡単に作成することができます。</p><p>The post <a href="https://aichi.blog/flutter-stateless-widgets/">【Flutter】ステートレスウィジェットについて</a> first appeared on <a href="https://aichi.blog">AichiLog</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Flutterのステートフルウィジェットについて</title>
		<link>https://aichi.blog/flutter-stateful-widgets/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=flutter-stateful-widgets</link>
		
		<dc:creator><![CDATA[愛知郎]]></dc:creator>
		<pubDate>Mon, 13 Mar 2023 11:36:30 +0000</pubDate>
				<category><![CDATA[Flutter]]></category>
		<category><![CDATA[プログラミング]]></category>
		<guid isPermaLink="false">https://aichi.blog/?p=2868</guid>

					<description><![CDATA[<p>Flutterには、ステートレスウィジェットとステートフルウィジェットの2つのウィジェットがあります。 今回は、ステートフルウィジェットについて解説します。 目次 ステートフルウィジェットとは？ステートフルウィジェットの [&#8230;]</p>
<p>The post <a href="https://aichi.blog/flutter-stateful-widgets/">Flutterのステートフルウィジェットについて</a> first appeared on <a href="https://aichi.blog">AichiLog</a>.</p>]]></description>
										<content:encoded><![CDATA[<p class="">Flutterには、ステートレスウィジェットとステートフルウィジェットの2つのウィジェットがあります。 今回は、ステートフルウィジェットについて解説します。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-18" checked><label class="toc-title" for="toc-checkbox-18">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">ステートフルウィジェットとは？</a></li><li><a href="#toc2" tabindex="0">ステートフルウィジェットの例</a></li><li><a href="#toc3" tabindex="0">ステートフルウィジェットとステートレスウィジェットの違い</a></li><li><a href="#toc4" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">ステートフルウィジェットとは？</span></h2>



<p class="">ステートフルウィジェットは、ウィジェットの状態が変更されたときに再描画されるウィジェットです。</p>



<p class="">また、ステートフルウィジェットは、ウィジェットの状態を保持するために、Stateオブジェクトを使用します。</p>



<h2 class="wp-block-heading"><span id="toc2">ステートフルウィジェットの例</span></h2>



<p class="">以下は、ステートフルウィジェットの例です。この例では、カウンターの増減を管理するアプリを作成します。</p>



<div class="wp-block-kevinbatdorf-code-block-pro" style="font-size:.875rem;line-height:1.25rem"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code="import 'package:flutter/material.dart';

class CounterApp extends StatefulWidget {
  @override
  _CounterAppState createState() =&gt; _CounterAppState();
}

class _CounterAppState extends State&lt;CounterApp&gt; {
  int counter = 0;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Counter App'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Text(
              'Count:',
              style: TextStyle(fontSize: 24),
            ),
            Text(
              '$counter',
              style: TextStyle(fontSize: 48),
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: () {
          setState(() {
            counter++;
          });
        },
        child: Icon(Icons.add),
      ),
    );
  }
}

" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #569CD6">import</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;package:flutter/material.dart&#39;</span><span style="color: #D4D4D4">;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #569CD6">class</span><span style="color: #D4D4D4"> </span><span style="color: #4EC9B0">CounterApp</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">extends</span><span style="color: #D4D4D4"> </span><span style="color: #4EC9B0">StatefulWidget</span><span style="color: #D4D4D4"> {</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">@override</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #4EC9B0">_CounterAppState</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">createState</span><span style="color: #D4D4D4">() =&gt; </span><span style="color: #4EC9B0">_CounterAppState</span><span style="color: #D4D4D4">();</span></span>
<span class="line"><span style="color: #D4D4D4">}</span></span>
<span class="line"></span>
<span class="line"><span style="color: #569CD6">class</span><span style="color: #D4D4D4"> </span><span style="color: #4EC9B0">_CounterAppState</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">extends</span><span style="color: #D4D4D4"> </span><span style="color: #4EC9B0">State</span><span style="color: #D4D4D4">&lt;</span><span style="color: #4EC9B0">CounterApp</span><span style="color: #D4D4D4">&gt; {</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #4EC9B0">int</span><span style="color: #D4D4D4"> counter = </span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4">;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">@override</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #4EC9B0">Widget</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">build</span><span style="color: #D4D4D4">(</span><span style="color: #4EC9B0">BuildContext</span><span style="color: #D4D4D4"> context) {</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #C586C0">return</span><span style="color: #D4D4D4"> </span><span style="color: #4EC9B0">Scaffold</span><span style="color: #D4D4D4">(</span></span>
<span class="line"><span style="color: #D4D4D4">      appBar: </span><span style="color: #4EC9B0">AppBar</span><span style="color: #D4D4D4">(</span></span>
<span class="line"><span style="color: #D4D4D4">        title: </span><span style="color: #4EC9B0">Text</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">&#39;Counter App&#39;</span><span style="color: #D4D4D4">),</span></span>
<span class="line"><span style="color: #D4D4D4">      ),</span></span>
<span class="line"><span style="color: #D4D4D4">      body: </span><span style="color: #4EC9B0">Center</span><span style="color: #D4D4D4">(</span></span>
<span class="line"><span style="color: #D4D4D4">        child: </span><span style="color: #4EC9B0">Column</span><span style="color: #D4D4D4">(</span></span>
<span class="line"><span style="color: #D4D4D4">          mainAxisAlignment: </span><span style="color: #4EC9B0">MainAxisAlignment</span><span style="color: #D4D4D4">.center,</span></span>
<span class="line"><span style="color: #D4D4D4">          children: [</span></span>
<span class="line"><span style="color: #D4D4D4">            </span><span style="color: #4EC9B0">Text</span><span style="color: #D4D4D4">(</span></span>
<span class="line"><span style="color: #D4D4D4">              </span><span style="color: #CE9178">&#39;Count:&#39;</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">              style: </span><span style="color: #4EC9B0">TextStyle</span><span style="color: #D4D4D4">(fontSize: </span><span style="color: #B5CEA8">24</span><span style="color: #D4D4D4">),</span></span>
<span class="line"><span style="color: #D4D4D4">            ),</span></span>
<span class="line"><span style="color: #D4D4D4">            </span><span style="color: #4EC9B0">Text</span><span style="color: #D4D4D4">(</span></span>
<span class="line"><span style="color: #D4D4D4">              </span><span style="color: #CE9178">&#39;$</span><span style="color: #9CDCFE">counter</span><span style="color: #CE9178">&#39;</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">              style: </span><span style="color: #4EC9B0">TextStyle</span><span style="color: #D4D4D4">(fontSize: </span><span style="color: #B5CEA8">48</span><span style="color: #D4D4D4">),</span></span>
<span class="line"><span style="color: #D4D4D4">            ),</span></span>
<span class="line"><span style="color: #D4D4D4">          ],</span></span>
<span class="line"><span style="color: #D4D4D4">        ),</span></span>
<span class="line"><span style="color: #D4D4D4">      ),</span></span>
<span class="line"><span style="color: #D4D4D4">      floatingActionButton: </span><span style="color: #4EC9B0">FloatingActionButton</span><span style="color: #D4D4D4">(</span></span>
<span class="line"><span style="color: #D4D4D4">        onPressed: () {</span></span>
<span class="line"><span style="color: #D4D4D4">          </span><span style="color: #DCDCAA">setState</span><span style="color: #D4D4D4">(() {</span></span>
<span class="line"><span style="color: #D4D4D4">            counter++;</span></span>
<span class="line"><span style="color: #D4D4D4">          });</span></span>
<span class="line"><span style="color: #D4D4D4">        },</span></span>
<span class="line"><span style="color: #D4D4D4">        child: </span><span style="color: #4EC9B0">Icon</span><span style="color: #D4D4D4">(</span><span style="color: #4EC9B0">Icons</span><span style="color: #D4D4D4">.add),</span></span>
<span class="line"><span style="color: #D4D4D4">      ),</span></span>
<span class="line"><span style="color: #D4D4D4">    );</span></span>
<span class="line"><span style="color: #D4D4D4">  }</span></span>
<span class="line"><span style="color: #D4D4D4">}</span></span>
<span class="line"></span>
<span class="line"></span></code></pre></div>



<p class="">この例では、CounterAppというステートフルウィジェットを定義しています。そして、_CounterAppStateというStateオブジェクトを使用して、カウンターの値を保持します。</p>



<p class="">buildメソッドでは、Scaffoldウィジェットを返します。Scaffoldウィジェットは、アプリの基本的な構造を提供するために使用されます。</p>



<p class="">bodyプロパティには、CenterとColumnウィジェットを追加し、カウンターを表示します。</p>



<p class="">floatingActionButtonプロパティには、増加ボタンを追加します。</p>



<p class="">setStateメソッドは、ウィジェットの状態を変更し、再描画するために使用されます。増加ボタンが押されるたびに、setStateメソッドが呼び出され、カウンターが増加します。</p>



<p class="">以上が、Flutterのステートフルウィジェットについての簡単な解説と具体例です。</p>



<h2 class="wp-block-heading"><span id="toc3">ステートフルウィジェットとステートレスウィジェットの違い</span></h2>



<p class="">リアルタイムなデータの更新を必要とする場合、ステートフルウィジェットを使用する必要があります。</p>



<p class="">ステートレスウィジェットは、ビルド時に固定された情報を表示するために使用されます。ステートレスウィジェットは、ウィジェットの状態を保持するStateオブジェクトを持っていません。</p>



<p class="">ステートフルウィジェットとステートレスウィジェットを組み合わせて使用することもできます。</p>



<p class="">たとえば、アプリの外観を定義するためにステートレスウィジェットを使用し、アプリの状態を管理するためにステートフルウィジェットを使用することができます。</p>



<h2 class="wp-block-heading"><span id="toc4">まとめ</span></h2>



<p class="">Flutterのステートフルウィジェットは、ウィジェットの状態が変更されたときに再描画されるウィジェットです。</p>



<p class="">ステートフルウィジェットは、ウィジェットの状態を保持するためにStateオブジェクトを使用します。リアルタイムなデータの更新を必要とする場合、ステートフルウィジェットを使用する必要があります。</p>



<p class="">ステートレスウィジェットは、ビルド時に固定された情報を表示するために使用されます。ステートレスウィジェットは、ウィジェットの状態を保持するStateオブジェクトを持っていません。</p>



<p class="">以上が、Flutterのステートフルウィジェットについてのまとめです。</p><p>The post <a href="https://aichi.blog/flutter-stateful-widgets/">Flutterのステートフルウィジェットについて</a> first appeared on <a href="https://aichi.blog">AichiLog</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>FlutterのListView：あなたのアプリを次のレベルへ</title>
		<link>https://aichi.blog/flutter-listview-next-level/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=flutter-listview-next-level</link>
		
		<dc:creator><![CDATA[愛知郎]]></dc:creator>
		<pubDate>Thu, 15 Jun 2023 10:29:27 +0000</pubDate>
				<category><![CDATA[Flutter]]></category>
		<category><![CDATA[プログラミング]]></category>
		<guid isPermaLink="false">https://aichi.blog/?p=3052</guid>

					<description><![CDATA[<p>FlutterのListViewは、あなたのアプリにスクロール可能なリストを追加するための魔法のツールです。 大量のデータを効率的に表示することができ、ユーザーがスクロールするときに動的にアイテムを生成します。これはまる [&#8230;]</p>
<p>The post <a href="https://aichi.blog/flutter-listview-next-level/">FlutterのListView：あなたのアプリを次のレベルへ</a> first appeared on <a href="https://aichi.blog">AichiLog</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>FlutterのListViewは、あなたのアプリにスクロール可能なリストを追加するための魔法のツールです。</p>



<p>大量のデータを効率的に表示することができ、ユーザーがスクロールするときに動的にアイテムを生成します。これはまるで、あなたのアプリが自分で考え、必要な情報を提供してくれるかのようです。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-20" checked><label class="toc-title" for="toc-checkbox-20">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">一歩ずつ進む：簡単なアプリの例</a></li><li><a href="#toc2" tabindex="0">ListViewの魔法を解き明かす</a></li><li><a href="#toc3" tabindex="0">ListViewの使い方：ヒントとコツ</a></li><li><a href="#toc4" tabindex="0">ユーザーとの対話を強化する</a></li><li><a href="#toc5" tabindex="0">リストを見やすくする裏技</a></li><li><a href="#toc6" tabindex="0">注意点：パフォーマンスと安定性</a></li><li><a href="#toc7" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">一歩ずつ進む：簡単なアプリの例</span></h2>



<p>さて、まずは簡単な例から始めましょう。以下のコードは、20個のアイテムを持つリストを作成します。各アイテムは、そのインデックス番号を表示する<code>ListTile</code>ウィジェットです。</p>



<pre class="wp-block-code"><code class="">import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('ListView Example'),
        ),
        body: ListView.builder(
          itemCount: 20,
          itemBuilder: (context, index) {
            return ListTile(
              title: Text('Item ${index + 1}'),
            );
          },
        ),
      ),
    );
  }
}
</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><span id="toc2">ListViewの魔法を解き明かす</span></h2>



<p>このコードでは、<code>ListView.builder</code>という魔法の杖を振っています。この杖は、リストのアイテムを動的に作成します。</p>



<p><code>itemCount</code>はリストのアイテム数を指定し、<code>itemBuilder</code>は各アイテムのウィジェットを作成します。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><span id="toc3">ListViewの使い方：ヒントとコツ</span></h2>



<p>ListViewは、大量のデータをスクロール可能なリストとして表示する場合や、データが動的に変化し、リストが更新される必要がある場合に最適です。しかし、使い方によっては、パフォーマンスが低下する可能性もあります。そのため、以下のヒントとコツを覚えておきましょう。</p>



<ul class="wp-block-list">
<li>複雑なウィジェットを生成するときは注意: <code>itemBuilder</code>関数で生成されるウィジェットが複雑になると、パフォーマンスが低下する可能性があります。シンプルに保つことが鍵です。</li>



<li>同じ高さのアイテムがない場合: <code>ListView.builder</code>ではなく<code>ListView.custom</code>を使用してみてください。これにより、各アイテムのサイズを自由に設定することができます。</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><span id="toc4">ユーザーとの対話を強化する</span></h2>



<p>さらに、ユーザーがリストのアイテムをタップできるようにしたい場合は、<code>ListTile</code>ウィジェットの<code>onTap</code>プロパティを活用しましょう。</p>



<p>これにより、ユーザーがアイテムをタップしたときにフィードバックを提供できます。これは、アプリがユーザーと対話する一つの方法で、ユーザーエクスペリエンスを向上させる重要な要素です。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><span id="toc5">リストを見やすくする裏技</span></h2>



<p>そして、リストを見やすくするための裏技があります。</p>



<p>それは、<code>ListView.separated</code>を使用することです。</p>



<p>これを使用すると、アイテム間に簡単に区切り線を追加できます。これにより、リストが一目で理解しやすくなります。これは、ユーザーが情報を迅速に消化できるようにするための素晴らしい方法です。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><span id="toc6">注意点：パフォーマンスと安定性</span></h2>



<p>しかし、注意しなければならないこともあります。</p>



<p>それは、<code>ListView.builder</code>を使用するときに、<code>itemCount</code>を指定しないことです。</p>



<p><code>itemCount</code>を指定しないと、<code>ListView.builder</code>は無限にアイテムを生成しようとします。これは、パフォーマンスの問題を引き起こすだけでなく、アプリがクラッシュする可能性もあります。だからこそ、<code>itemCount</code>の指定は必須です。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><span id="toc7">まとめ</span></h2>



<p>以上が、FlutterのListViewの使い方の基本と、そのヒントとコツです。これらを活用して、あなたのアプリをさらに素晴らしいものにしましょう！これらのテクニックを使えば、あなたのアプリはユーザーフレンドリーで、効率的で、そして何よりも魅力的になるでしょう。</p><p>The post <a href="https://aichi.blog/flutter-listview-next-level/">FlutterのListView：あなたのアプリを次のレベルへ</a> first appeared on <a href="https://aichi.blog">AichiLog</a>.</p>]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
