<?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>プログラミング – AichiLog</title>
	<atom:link href="https://aichi.blog/category/programming/feed/" rel="self" type="application/rss+xml" />
	<link>https://aichi.blog</link>
	<description>学びて富み　富みて学ぶ</description>
	<lastBuildDate>Mon, 28 Apr 2025 14:22:48 +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>プログラミング – 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/feed/"/>
	<item>
		<title>【Python】文字列メソッドの使い方</title>
		<link>https://aichi.blog/python-string-methods/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=python-string-methods</link>
		
		<dc:creator><![CDATA[愛知郎]]></dc:creator>
		<pubDate>Fri, 03 Mar 2023 01:46:33 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[プログラミング]]></category>
		<guid isPermaLink="false">https://aichi.blog/?p=2783</guid>

					<description><![CDATA[<p>プログラミングで、文字列を扱うことは非常によくあることです。Pythonには、文字列を扱う様々なメソッドが用意されています。この記事では、Pythonの文字列メソッドについて学び、それぞれの使い方について確認していきます [&#8230;]</p>
<p>The post <a href="https://aichi.blog/python-string-methods/">【Python】文字列メソッドの使い方</a> first appeared on <a href="https://aichi.blog">AichiLog</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>プログラミングで、文字列を扱うことは非常によくあることです。Pythonには、文字列を扱う様々なメソッドが用意されています。この記事では、Pythonの文字列メソッドについて学び、それぞれの使い方について確認していきます。</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">startswith()メソッド</a></li><li><a href="#toc2" tabindex="0">find()メソッド</a></li><li><a href="#toc3" tabindex="0">count()メソッド</a></li><li><a href="#toc4" tabindex="0">capitalize()メソッド</a></li><li><a href="#toc5" tabindex="0">title()メソッド</a></li><li><a href="#toc6" tabindex="0">upper()メソッド</a></li><li><a href="#toc7" tabindex="0">replace()メソッド</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">startswith()メソッド</span></h2>



<p>Pythonの文字列メソッドの一つに、<code>startswith()</code>があります。<code>startswith()</code>は、指定した文字列で始まるかどうかを判定するメソッドです。このメソッドを使うことで、文字列の先頭が指定した文字列で始まるかどうかを判定できます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-python" data-lang="Python" data-show-lang="1"><code>is_start = s.startswith(&#39;My&#39;)
print(is_start) # True
is_start = s.startswith(&#39;X&#39;)
print(is_start) # False</code></pre></div>



<h2 class="wp-block-heading"><span id="toc2">find()メソッド</span></h2>



<p>Pythonの文字列メソッドの中でも、<code>find()</code>はよく使われるメソッドの一つです。<code>find()</code>は、指定した文字列が最初に現れる位置を返します。もし文字列中に指定した文字列が存在しない場合は、<code>-1</code>を返します。</p>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-python" data-lang="Python"><code>print(s.find(&#39;Mike&#39;)) # 11</code></pre></div>



<p>また、<code>rfind()</code>メソッドは、指定した文字列が最後に現れる位置を返すメソッドです。</p>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-plain"><code>print(s.rfind(&#39;Mike&#39;)) # 17</code></pre></div>



<h2 class="wp-block-heading"><span id="toc3">count()メソッド</span></h2>



<p><code>count()</code>は、指定した文字列が何回現れるかを返すメソッドです。</p>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-plain"><code>print(s.count(&#39;Mike&#39;)) # 2</code></pre></div>



<h2 class="wp-block-heading"><span id="toc4">capitalize()メソッド</span></h2>



<p><code>capitalize()</code>メソッドは、文字列の先頭の1文字だけを大文字にして、残りを小文字に変換します。</p>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-plain"><code>print(s.capitalize()) # My name is mike. hi mike.</code></pre></div>



<h2 class="wp-block-heading"><span id="toc5">title()メソッド</span></h2>



<p><code>title()</code>メソッドは、各単語の先頭文字を大文字に変換します。</p>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-plain"><code>print(s.title()) # My Name Is Mike. Hi Mike.</code></pre></div>



<h2 class="wp-block-heading"><span id="toc6">upper()メソッド</span></h2>



<p>文字列をすべて大文字に変換するには、<code>upper()</code>メソッドを使用します。</p>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-plain"><code>print(s.upper()) # MY NAME IS MIKE. HI MIKE.</code></pre></div>



<h2 class="wp-block-heading"><span id="toc7">replace()メソッド</span></h2>



<p>文字列の中にある指定した文字列を、別の文字列に置き換えたい場合は、<code>replace()</code>メソッドを使用します。</p>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-plain"><code>print(s.replace(&#39;Mike&#39;, &#39;Nancy&#39;)) # My name is Nancy. Hi Nancy.</code></pre></div>



<p>以上が、Pythonでの文字列メソッドの使い方です。この記事を参考に、Pythonで文字列を操作する際に役立ててください。</p><p>The post <a href="https://aichi.blog/python-string-methods/">【Python】文字列メソッドの使い方</a> first appeared on <a href="https://aichi.blog">AichiLog</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>【Git】commitzenをシェルスクリプトで実行</title>
		<link>https://aichi.blog/how-to-run-commitizen-with-shell-script/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=how-to-run-commitizen-with-shell-script</link>
		
		<dc:creator><![CDATA[愛知郎]]></dc:creator>
		<pubDate>Tue, 05 Dec 2023 03:56:11 +0000</pubDate>
				<category><![CDATA[コマンドライン]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[node.js]]></category>
		<category><![CDATA[環境構築]]></category>
		<guid isPermaLink="false">https://aichi.blog/?p=3409</guid>

					<description><![CDATA[<p>達人に学ぶSQL徹底指南書 第2版 初級者で終わりたくないあなたへ お疲れ様です。 今回は、commitzenに似た機能を実現できる、シェルスクリプトを作成しましたので、共有します。 目次 commitzenの問題スクリ [&#8230;]</p>
<p>The post <a href="https://aichi.blog/how-to-run-commitizen-with-shell-script/">【Git】commitzenをシェルスクリプトで実行</a> first appeared on <a href="https://aichi.blog">AichiLog</a>.</p>]]></description>
										<content:encoded><![CDATA[<a rel="nofollow" href="//ck.jp.ap.valuecommerce.com/servlet/referral?sid=3639978&#038;pid=890530433&#038;vc_url=https%3A%2F%2Fstore.shopping.yahoo.co.jp%2Fsapphire98%2Fsapphire0dbc66359d.html%3Fsc_i%3Dshopping-pc-web-result-item-rsltlst-img"><img decoding="async" src="//ad.jp.ap.valuecommerce.com/servlet/gifbanner?sid=3639978&#038;pid=890530433" height="1" width="0" border="0">達人に学ぶSQL徹底指南書 第2版 初級者で終わりたくないあなたへ</a>



<p>お疲れ様です。</p>



<p>今回は、commitzenに似た機能を実現できる、シェルスクリプトを作成しましたので、共有します。</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">commitzenの問題</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">commitzenの問題</span></h2>



<p>コミットメッセージを標準化する方法として、「commitzen」が挙げられると思います。</p>





<a rel="noopener" href="https://github.com/commitizen/cz-cli" title="GitHub - commitizen/cz-cli: The commitizen command line utility. #BlackLivesMatter" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img decoding="async" src="https://opengraph.githubassets.com/c2ccb40046f0a4fdf5c243200b44192b75497cd231158330cc6a56882c001fba/commitizen/cz-cli" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">GitHub - commitizen/cz-cli: The commitizen command line utility. #BlackLivesMatter</div><div class="blogcard-snippet external-blogcard-snippet">The commitizen command line utility. #BlackLivesMatter - commitizen/cz-cli</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img decoding="async" src="https://www.google.com/s2/favicons?domain=https://github.com/commitizen/cz-cli" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">github.com</div></div></div></div></a>




<p>しかし、このツールは、毎回インストールする手間や、Node.jsベースで、プロジェクトによっては追加の依存関係が必要になったりします。</p>



<p>そのような際、別の選択肢を一から探すのは手間です。</p>



<p>そのため、今回、シェルスクリプトを作成して、いかなるプロジェクトでも、同様のコミットメッセージを導入できるようにしました。</p>



<h2 class="wp-block-heading"><span id="toc2">スクリプト</span></h2>



<pre class="wp-block-code"><code>#!/bin/bash

# コミットタイプを尋ねる
echo "コミットのタイプを選択してください:"
echo "1. feat (新機能)"
echo "2. fix (バグ修正)"
echo "3. docs (ドキュメントの変更)"
echo "4. style (コードのスタイル変更、フォーマット等)"
echo "5. refactor (リファクタリング)"
echo "6. test (テスト関連)"
echo "7. chore (その他、ビルドプロセスや補助ツールの変更)"
echo "8. perf (パフォーマンス改善)"
echo "9. build (ビルドシステムや外部依存関係の変更)"
echo "10. ci (CI設定ファイルやスクリプトの変更)"
read -p "番号を入力してください: " type

case $type in
  1) type="feat";;
  2) type="fix";;
  3) type="docs";;
  4) type="style";;
  5) type="refactor";;
  6) type="test";;
  7) type="chore";;
  8) type="perf";;
  9) type="build";;
  10) type="ci";;
  *) echo "無効な選択肢です"; exit 1;;
esac

# スコープを尋ねる
read -p "変更のスコープ (コンポーネントやファイル名等) を入力してください: " scope

# コミットメッセージの概要を尋ねる
read -p "コミットメッセージの概要を簡潔に記述してください: " summary

# コミットメッセージの本文を尋ねる（オプション）
read -p "詳細なコミットメッセージを入力してください (オプション): " body

# コミットメッセージを組み立てる
commit_message="$type($scope): $summary"
if &#91; -n "$body" ]; then
  commit_message="$commit_message\\n\\n$body"
fi

# コミットを実行
git commit -m "$commit_message"
</code></pre>



<h2 class="wp-block-heading"><span id="toc3">実行方法</span></h2>



<p>上記のスクリプトの実行方法は、下記のコマンドを入力してください。</p>



<pre class="wp-block-code"><code>// ファイル名が「commit.sh」の場合
chmod +x commit.sh
</code></pre>



<p>そして、以下のコマンドで、スクリプトを実行してコミットを行います。</p>



<pre class="wp-block-code bash"><code>./commit.sh
</code></pre>



<h2 class="wp-block-heading"><span id="toc4">おわり</span></h2>



<p>今回のスクリプトは、基本的な機能しか持っていません。</p>



<p>プロジェクトのニーズに合わせて、カスタマイズしていってください。</p><p>The post <a href="https://aichi.blog/how-to-run-commitizen-with-shell-script/">【Git】commitzenをシェルスクリプトで実行</a> first appeared on <a href="https://aichi.blog">AichiLog</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>ReactのuseStateとuseEffectの基本</title>
		<link>https://aichi.blog/react%e3%81%aeusestate%e3%81%a8useeffect%e3%81%ae%e5%9f%ba%e6%9c%ac/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=react%25e3%2581%25aeusestate%25e3%2581%25a8useeffect%25e3%2581%25ae%25e5%259f%25ba%25e6%259c%25ac</link>
		
		<dc:creator><![CDATA[愛知郎]]></dc:creator>
		<pubDate>Tue, 07 Nov 2023 02:10:20 +0000</pubDate>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[next.js]]></category>
		<category><![CDATA[React]]></category>
		<category><![CDATA[文法]]></category>
		<guid isPermaLink="false">https://aichi.blog/?p=3350</guid>

					<description><![CDATA[<p>Reactは、ユーザーインターフェースを構築するためのJavaScriptライブラリです。その中核をなす概念の一つが「状態（state）」です。 useStateとuseEffectは、Reactのフックと呼ばれる機能で [&#8230;]</p>
<p>The post <a href="https://aichi.blog/react%e3%81%aeusestate%e3%81%a8useeffect%e3%81%ae%e5%9f%ba%e6%9c%ac/">ReactのuseStateとuseEffectの基本</a> first appeared on <a href="https://aichi.blog">AichiLog</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Reactは、ユーザーインターフェースを構築するためのJavaScriptライブラリです。その中核をなす概念の一つが「状態（state）」です。</p>



<p>useStateとuseEffectは、Reactのフックと呼ばれる機能で、状態管理と副作用の管理を行います。</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">useStateがない場合</a></li><li><a href="#toc2" tabindex="0">useStateを使う場合</a></li><li><a href="#toc3" tabindex="0">useEffectの使い方</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></ol></li><li><a href="#toc7" tabindex="0">おわり</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">useStateがない場合</span></h2>



<pre class="wp-block-code javascript"><code>function App() {
  let count = 0;

  const handleClick = () =&gt; {
    count++;
    console.log(count);
  };

  return (
    &lt;&gt;
      &lt;h1&gt;普通のカウント&lt;/h1&gt;
      &lt;button onClick={handleClick}&gt;Click Me!&lt;/button&gt;
      &lt;p&gt;{count}&lt;/p&gt;
    &lt;/&gt;
  );
}</code></pre>



<p>上記のコードでは、<code>count</code>はただの変数です。</p>



<p>ボタンをクリックすると<code>count</code>の値は増加しますが、これはReactのレンダリングシステムとは独立しています。そのため、画面上のカウントは更新されず、常に0が表示されます。</p>



<h2 class="wp-block-heading"><span id="toc2">useStateを使う場合</span></h2>



<pre class="wp-block-code"><code>import { useState } from "react";

function App() {
  const &#91;count, setCount] = useState(0);

  const handleClick = () =&gt; {
    setCount(count + 1);
  };

  return (
    &lt;&gt;
      &lt;h1&gt;UseState&lt;/h1&gt;
      &lt;button onClick={handleClick}&gt;Click Me!&lt;/button&gt;
      &lt;p&gt;{count}&lt;/p&gt;
    &lt;/&gt;
  );
}</code></pre>



<p>useStateを使うと、<code>count</code>は状態として管理され、<code>setCount</code>関数によって更新されます。これにより、状態が変更されるとReactはコンポーネントを再レンダリングし、画面上のカウントが実際の値に更新されます。</p>



<h2 class="wp-block-heading"><span id="toc3">useEffectの使い方</span></h2>



<p>useEffectは、コンポーネントのライフサイクルに応じた副作用（データの取得、購読の設定など）を扱います。</p>



<h3 class="wp-block-heading"><span id="toc4">マウント時に一度だけ実行</span></h3>



<pre class="wp-block-code"><code>import { useEffect } from "react";

function App() {
  useEffect(() =&gt; {
    console.log("マウント時に一度だけ実行");
  }, &#91;]);

  return (
    &lt;&gt;
      &lt;h1&gt;UseEffect：デフォルト（マウント時に一度だけ実行）&lt;/h1&gt;
    &lt;/&gt;
  );
}</code></pre>



<p>上記のコードでは、空の依存配列（<code>[]</code>）を渡すことで、コンポーネントがマウントされた時に一度だけ副作用が実行されます。</p>



<h3 class="wp-block-heading"><span id="toc5">依存配列の変数が変わった時に発火</span></h3>



<pre class="wp-block-code"><code>import { useEffect, useState } from "react";

function App() {
  const &#91;count, setCount] = useState(0);

  const handleClick = () =&gt; {
    setCount(count + 1);
  };

  useEffect(() =&gt; {
    console.log("countが変更されました");
  }, &#91;count]);

  return (
    &lt;&gt;
      &lt;h1&gt;UseEffect：変数が変更された時に実行&lt;/h1&gt;
      &lt;button onClick={handleClick}&gt;+1&lt;/button&gt;
      &lt;p&gt;count: {count}&lt;/p&gt;
    &lt;/&gt;
  );
}</code></pre>



<p>ここでは、<code>count</code>が更新されるたびに副作用が実行されます。これは、<code>count</code>を依存配列に含めることで実現されます。</p>



<h3 class="wp-block-heading"><span id="toc6">無限ループの危険性</span></h3>



<pre class="wp-block-code"><code>import { useEffect, useState } from "react";

function App() {
  const &#91;count, setCount] = useState(0);

  useEffect(() =&gt; {
    console.log("NG：countが永遠に変更されるので、無限ループになる");
    setCount(count + 1);
  }, &#91;count]);

  return (
    &lt;&gt;
      &lt;h1&gt;UseEffect：無限ループ&lt;/h1&gt;
      &lt;button onClick={handleClick}&gt;+1&lt;/button&gt;
      &lt;p&gt;count: {count}&lt;/p&gt;
    &lt;/&gt;
  );
}</code></pre>



<p>上記のコードは、<code>count</code>が更新されるたびに<code>setCount</code>を呼び出しているため、無限ループに陥ります。これは避けるべきです。</p>



<h2 class="wp-block-heading"><span id="toc7">おわり</span></h2>



<p>以上がuseStateとuseEffectの基本的な使い方と、それらを使ってReactでの状態管理と副作用を扱う方法です。</p>



<p>これらのフックを適切に使うことで、効率的で再利用可能なコンポーネントを作成することができます。</p><p>The post <a href="https://aichi.blog/react%e3%81%aeusestate%e3%81%a8useeffect%e3%81%ae%e5%9f%ba%e6%9c%ac/">ReactのuseStateとuseEffectの基本</a> first appeared on <a href="https://aichi.blog">AichiLog</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<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-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">海外で人気の 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-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">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-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">環境変数の設定手順</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>【Python】文字列をフォーマットする方法</title>
		<link>https://aichi.blog/python-string-formatting-methods/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=python-string-formatting-methods</link>
		
		<dc:creator><![CDATA[愛知郎]]></dc:creator>
		<pubDate>Fri, 03 Mar 2023 01:51:32 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[プログラミング]]></category>
		<guid isPermaLink="false">https://aichi.blog/?p=2786</guid>

					<description><![CDATA[<p>Pythonでは、文字列をフォーマットする際にformat()メソッドを使用することができます。format()メソッドを使用することで、文字列内に変数を埋め込むことができます。 目次 {}を使用する方法基本的な使い方複 [&#8230;]</p>
<p>The post <a href="https://aichi.blog/python-string-formatting-methods/">【Python】文字列をフォーマットする方法</a> first appeared on <a href="https://aichi.blog">AichiLog</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Pythonでは、文字列をフォーマットする際に<code>format()</code>メソッドを使用することができます。<code>format()</code>メソッドを使用することで、文字列内に変数を埋め込むことができます。</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">基本的な使い方</a></li><li><a href="#toc3" tabindex="0">複数の値を挿入する</a></li><li><a href="#toc4" tabindex="0">順番を変える</a></li><li><a href="#toc5" tabindex="0">変数を使う</a></li></ol></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></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">{}を使用する方法</span></h2>



<p><code>format()</code>メソッドを使用する場合、文字列内に<code>{}</code>を置くことで、変数を埋め込むことができます。以下は、<code>{}</code>を使用した例です。</p>



<h3 class="wp-block-heading"><span id="toc2">基本的な使い方</span></h3>



<pre class="wp-block-code"><code>print('a is {}'.format('test')) # a is test

print('a is {}'.format(1)) # a is 1

</code></pre>



<h3 class="wp-block-heading"><span id="toc3">複数の値を挿入する</span></h3>



<pre class="wp-block-code"><code>print('a is {} {} {}'.format(1, 2, 3)) # a is 1 2 3

</code></pre>



<h3 class="wp-block-heading"><span id="toc4">順番を変える</span></h3>



<pre class="wp-block-code"><code>print('a is {2} {0} {1}'.format(1, 2, 3)) # a is 3 1 2

</code></pre>



<h3 class="wp-block-heading"><span id="toc5">変数を使う</span></h3>



<pre class="wp-block-code"><code>print('My name is {0} {1}.watashi ha {1} {0}'.format('Taro', 'Yamada')) # My name is Taro Yamada

</code></pre>



<p>また、変数名を指定することもできます。</p>



<pre class="wp-block-code"><code>print('My name is {name} {family}'.format(name='Taro', family='Yamada')) # My name is Taro Yamada

</code></pre>



<p>このように、Pythonのフォーマット関数を使うことで、文字列の中に変数や値を簡単に挿入することができます。</p>



<h2 class="wp-block-heading"><span id="toc6">数字を文字列に変換する方法</span></h2>



<p><code>str()</code>関数を使用することで、数字を文字列に変換することができます。</p>



<pre class="wp-block-code"><code>num = str(1)
type(num) # str

</code></pre>



<h2 class="wp-block-heading"><span id="toc7">文字列を数字に変換する方法</span></h2>



<p><code>int()</code>関数を使用することで、文字列を整数に変換することができます。</p>



<pre class="wp-block-code"><code>num = int('1')
type(num) # int

</code></pre>



<h2 class="wp-block-heading"><span id="toc8">フロートを文字列に変換する方法</span></h2>



<p><code>str()</code>関数を使用することで、フロートを文字列に変換することができます。</p>



<pre class="wp-block-code"><code>num = str(3.14)
type(num) # str

</code></pre><p>The post <a href="https://aichi.blog/python-string-formatting-methods/">【Python】文字列をフォーマットする方法</a> first appeared on <a href="https://aichi.blog">AichiLog</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>【Python】f-stringsの使い方</title>
		<link>https://aichi.blog/python-f-strings-usage/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=python-f-strings-usage</link>
		
		<dc:creator><![CDATA[愛知郎]]></dc:creator>
		<pubDate>Fri, 03 Mar 2023 01:53:35 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[プログラミング]]></category>
		<guid isPermaLink="false">https://aichi.blog/?p=2789</guid>

					<description><![CDATA[<p>Python 3.6から、formatではなく、f-stringsが使えるようになりました。f-stringsは新しい書き方で、処理も早いようです。 目次 基本的な使い方複数の変数を使う文字列の結合f-stringsとf [&#8230;]</p>
<p>The post <a href="https://aichi.blog/python-f-strings-usage/">【Python】f-stringsの使い方</a> first appeared on <a href="https://aichi.blog">AichiLog</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Python 3.6から、formatではなく、f-stringsが使えるようになりました。f-stringsは新しい書き方で、処理も早いようです。</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><li><a href="#toc4" tabindex="0">f-stringsとformatの違い</a></li><li><a href="#toc5" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">基本的な使い方</span></h2>



<pre class="wp-block-code"><code>a = 'a'
print(f'a is {a}')

</code></pre>



<p>出力結果:</p>



<pre class="wp-block-code"><code>a is a

</code></pre>



<h2 class="wp-block-heading"><span id="toc2">複数の変数を使う</span></h2>



<pre class="wp-block-code"><code>x, y, z = 1, 2, 3
print(f'a is {x}, {y}, {z}')
print(f'a is {z}, {y}, {x}')

</code></pre>



<p>出力結果:</p>



<pre class="wp-block-code"><code>a is 1, 2, 3
a is 3, 2, 1

</code></pre>



<h2 class="wp-block-heading"><span id="toc3">文字列の結合</span></h2>



<pre class="wp-block-code"><code>name = 'Taro'
family = 'Yamada'
print(f'My name is {name} {family}. Watashi ha {family} {name}')

</code></pre>



<p>出力結果:</p>



<pre class="wp-block-code"><code>My name is Taro Yamada. Watashi ha 
Yamada Taro
</code></pre>



<h2 class="wp-block-heading"><span id="toc4">f-stringsとformatの違い</span></h2>



<p>f-stringsとformatは、同じように文字列をフォーマットする方法ですが、いくつかの違いがあります。</p>



<h4 class="wp-block-heading">処理速度</h4>



<p>f-stringsの方がformatよりも処理が早いです。</p>



<h4 class="wp-block-heading">簡潔さ</h4>



<p>f-stringsは、より簡潔で読みやすいコードを書くことができます。</p>



<h4 class="wp-block-heading">変数のスコープ</h4>



<p>f-stringsは、変数のスコープにアクセスできます。一方、formatは、値を渡す必要があります。</p>



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



<p>f-stringsは、新しい書き方で、処理も早いため、Python 3.6以降では、使い方を覚えておくと便利です。</p><p>The post <a href="https://aichi.blog/python-f-strings-usage/">【Python】f-stringsの使い方</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-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">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-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">レイアウトウィジェット</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>
	</channel>
</rss>
