<?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>開発</title>
	<atom:link href="https://techgrowup.net/tag/%e9%96%8b%e7%99%ba/feed/" rel="self" type="application/rss+xml" />
	<link>https://techgrowup.net</link>
	<description>エンジニアを強くする</description>
	<lastBuildDate>Sat, 05 Apr 2025 14:00:00 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://techgrowup.net/wp-content/uploads/2021/05/hp-icon-150x150.png</url>
	<title>開発</title>
	<link>https://techgrowup.net</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Polygonを解説！イーサリアムのスケーリングを変えるLayer2ソリューションの仕組み・メリット・開発手順</title>
		<link>https://techgrowup.net/blockchain-polygon/</link>
					<comments>https://techgrowup.net/blockchain-polygon/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[techgrowup]]></dc:creator>
		<pubDate>Sat, 05 Apr 2025 14:00:00 +0000</pubDate>
				<category><![CDATA[ブロックチェーン]]></category>
		<category><![CDATA[Layer2]]></category>
		<category><![CDATA[Matic]]></category>
		<category><![CDATA[Plasma]]></category>
		<category><![CDATA[Polygon]]></category>
		<category><![CDATA[PoS]]></category>
		<category><![CDATA[イーサリアム]]></category>
		<category><![CDATA[スケーラビリティ]]></category>
		<category><![CDATA[スマートコントラクト]]></category>
		<category><![CDATA[開発]]></category>
		<guid isPermaLink="false">https://techgrowup.net/?p=2736</guid>

					<description><![CDATA[はじめに ブロックチェーン技術の普及とともに、イーサリアムのネットワーク混雑や高騰するガス手数料が頻繁に取り沙汰されるようになりました。こうした問題を解決するための「Layer2ソリューション」が注目される中、Polyg [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h1 class="wp-block-heading">はじめに</h1>



<p class="wp-block-paragraph">ブロックチェーン技術の普及とともに、イーサリアムのネットワーク混雑や高騰するガス手数料が頻繁に取り沙汰されるようになりました。こうした問題を解決するための「Layer2ソリューション」が注目される中、<strong>Polygon（旧Matic Network）</strong> はイーサリアムとの高い互換性やマルチチェーン対応などを掲げ、<strong>高速かつ低コスト</strong>で大量のトランザクションを処理できる基盤として急速に存在感を高めています。<br><a rel="noopener" target="_blank" class="" href="https://wiki.polygon.technology/">Polygon公式Wiki<span class="fa fa-external-link external-icon anchor-icon"></span></a>にも詳しいドキュメントがある通り、Polygonは<strong>Plasma</strong>や<strong>PoS (Proof of Stake)</strong> ブリッジを活用し、EVM互換を維持しながら拡張性を提供するLayer2エコシステムを形成しています。本記事では、その仕組みからメリット、スマートコントラクトの開発手順、代表的なユースケースまで、総合的に解説します。イーサリアム上での開発・運用を考えている方や、安価で高速なブロックチェーンインフラを探している方にとって、Polygonが一つの有力な選択肢となるでしょう。</p>



<h2 class="wp-block-heading">Polygonの背景と特徴</h2>



<h3 class="wp-block-heading">イーサリアムのスケーラビリティ問題</h3>



<p class="wp-block-paragraph">イーサリアムは多くのDeFiやNFTプロジェクトを生み出しましたが、その人気の裏返しとしてネットワーク混雑時には手数料（ガス代）が高騰し、トランザクション処理速度も落ちるケースがしばしば起こります。こうしたスケーラビリティの制約を解消し、<strong>ユーザーが安価かつ迅速にDAppを利用できる環境</strong>を提供することがLayer2ソリューションの大きな使命です。</p>



<h3 class="wp-block-heading">Polygonとは</h3>



<p class="wp-block-paragraph">Polygon（旧名 Matic Network）は、イーサリアムチェーンと互換性を持ちながら<strong>独自のサイドチェーン</strong>を運用し、高速・低コストを実現しているプロジェクトです。</p>



<ul class="wp-block-list">
<li><strong>PoS (Proof of Stake)</strong> のチェーンを提供し、ブリッジを通じてイーサリアム上の資産やトークンを簡単に移動できる</li>



<li><strong>Plasmaフレームワーク</strong>を用いたオプションのセキュリティモデル</li>



<li>2021年以降は<strong>Polygon</strong>という名前で活動の幅を広げ、<strong>PoSチェーン</strong>に加えて<strong>ZK Rollup</strong>や<strong>Optimistic Rollup</strong>など複数のソリューションを取り込もうとする「マルチチェーンエコシステム」へと進化</li>
</ul>



<h3 class="wp-block-heading">MATICトークン</h3>



<p class="wp-block-paragraph">Polygonのネイティブトークンは<strong>MATIC</strong>（マティック）。PoSチェーンにおけるガス手数料の支払い、ステーキングによるバリデータのインセンティブなどに利用されます。Polygonネットワークの名称変更に伴ってトークン名を変える話もあったものの、最終的にはMATICが維持され、各種取引所で売買が行われています。</p>



<h2 class="wp-block-heading">Polygonの技術アーキテクチャ</h2>



<h3 class="wp-block-heading">PlasmaとPoSの連携</h3>



<p class="wp-block-paragraph">もともと<strong>Plasma</strong>はイーサリアムで提案されたオフチェーン処理の概念で、「小さなサブチェーン（子チェーン）」を構築し、大量のトランザクションをまとめて証明をイーサリアムに送信するという手法です。<br>Polygonの初期バージョンは<strong>Plasma + PoS</strong>のハイブリッドアプローチを採用し、<strong>安全性</strong>と<strong>高スループット</strong>を両立。具体的には、イーサリアムのメインネット上に<strong>Checkpoint</strong>を定期的に記録し、PoSチェーンの状態が不正にならないよう保証する設計がなされています。</p>



<h3 class="wp-block-heading">マルチチェーンエコシステム</h3>



<p class="wp-block-paragraph">Polygonは単なる1つのPoSサイドチェーンだけでなく、<strong>多様なスケーリング技術</strong>を取り入れる方向へ進化中です。</p>



<ul class="wp-block-list">
<li><strong>Polygon PoS</strong>（メインのPoSチェーン）</li>



<li><strong>Polygon Hermez</strong>（ZK Rollupを統合）</li>



<li><strong>Polygon Miden, Polygon Zero</strong>（ZKプロジェクト）</li>



<li><strong>Polygon Nightfall</strong>（Rollup + プライバシー技術）<br>開発者は自分のユースケースに合ったスケーリングソリューションを選択し、Polygon上でDAppを構築できるようになるという戦略が打ち出されています。</li>
</ul>



<h3 class="wp-block-heading">2層のセキュリティ</h3>



<p class="wp-block-paragraph">PolygonのPoSチェーンでは<strong>バリデータ</strong>たちがMATICをステークし、ブロックの提案・検証を行います。その一方でイーサリアム上の<strong>Root Contract</strong>がPoSチェーンの最終状態を追認し、もしチェーンが不正に改竄されるならイーサリアムへのメインチェーンにあるセキュリティメカニズムで保護する形となります。<br>これにより、<strong>プルーフ・オブ・ステーク</strong>での高速処理と、**メインネット（イーサリアム）**での最終的な安全性というハイブリッドを実現します。</p>



<h2 class="wp-block-heading">主要なメリットとユースケース</h2>



<h3 class="wp-block-heading">低手数料・高速トランザクション</h3>



<p class="wp-block-paragraph">Ethereumメインネットに比べると、<strong>数秒以内のブロックタイム</strong>かつガス代が数分の1〜数百分の1という環境が整えられています。そのため、<strong>マイクロペイメント</strong>や<strong>ゲーム内トランザクション</strong>、多数のNFT発行など小額・高頻度のトランザクションが必要なユースケースに適しています。</p>



<h3 class="wp-block-heading">DeFiの拡張</h3>



<p class="wp-block-paragraph">多くのDeFiプロジェクト（Aave、SushiSwap、Curveなど）がPolygon上でサービスを展開し、ユーザーはイーサリアムの資産をブリッジしてPolygonで運用することで<strong>大幅に手数料を節約</strong>できます。トレーダーや流動性提供者が混雑や高コストから解放され、DeFiの流動性が高まる効果が期待されます。</p>



<h3 class="wp-block-heading">NFTとゲーム</h3>



<p class="wp-block-paragraph">NFTマーケットやブロックチェーンゲームでも<strong>Polygon</strong>が人気を得ています。メインネットより格段に安い手数料でミントやトレードができ、<strong>ユーザー体験</strong>が向上。<strong>OpenSea</strong>などの大手NFTプラットフォームもPolygonをサポートしているため、アーティストやコレクターが参入しやすい環境が整っています。</p>



<h3 class="wp-block-heading">DAOsや支払いアプリ</h3>



<p class="wp-block-paragraph">PolygonのPoSチェーンを使えば、<strong>支払い</strong>や<strong>投票</strong>などのアクションを高速・安価に実行可能です。これによりDAOの投票コストが下がり、ユーザーの参加が活性化したり、公共サービスでの実装も検討される動きがあります。</p>



<h2 class="wp-block-heading">開発の流れ：Smart Contract &amp; DApp</h2>



<h3 class="wp-block-heading">Solidity互換</h3>



<p class="wp-block-paragraph">Polygonはイーサリアムと<strong>EVM互換</strong>があり、Solidity等で書かれたコントラクトを<strong>ほぼそのまま</strong>Polygon PoSチェーン上にデプロイできます。ツールチェーン（Truffle/Hardhatなど）もEVM互換の<strong>RPCエンドポイント</strong>を指定すればOKです。</p>



<h4 class="wp-block-heading">Hardhatでの簡易設定例</h4>



<p class="wp-block-paragraph"><strong>hardhat.config.js</strong>:</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><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="require(&quot;@nomiclabs/hardhat-waffle&quot;);

module.exports = {
  solidity: &quot;0.8.0&quot;,
  networks: {
    polygon: {
      url: &quot;https://polygon-rpc.com/&quot;, // Matic/Polygon mainnet RPC
      accounts: [&quot;0xyourprivatekey&quot;] // テスト用秘密鍵
    },
    mumbai: {
      url: &quot;https://rpc-mumbai.maticvigil.com&quot;, // テストネット
      accounts: [&quot;0xyourprivatekey&quot;]
    }
  }
};" 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: #DCDCAA">require</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">&quot;@nomiclabs/hardhat-waffle&quot;</span><span style="color: #D4D4D4">);</span></span>
<span class="line"></span>
<span class="line"><span style="color: #4EC9B0">module</span><span style="color: #D4D4D4">.</span><span style="color: #4EC9B0">exports</span><span style="color: #D4D4D4"> = {</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #9CDCFE">solidity:</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&quot;0.8.0&quot;</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #9CDCFE">networks:</span><span style="color: #D4D4D4"> {</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #9CDCFE">polygon:</span><span style="color: #D4D4D4"> {</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #9CDCFE">url:</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&quot;https://polygon-rpc.com/&quot;</span><span style="color: #D4D4D4">, </span><span style="color: #6A9955">// Matic/Polygon mainnet RPC</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #9CDCFE">accounts:</span><span style="color: #D4D4D4"> [</span><span style="color: #CE9178">&quot;0xyourprivatekey&quot;</span><span style="color: #D4D4D4">] </span><span style="color: #6A9955">// テスト用秘密鍵</span></span>
<span class="line"><span style="color: #D4D4D4">    },</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #9CDCFE">mumbai:</span><span style="color: #D4D4D4"> {</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #9CDCFE">url:</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&quot;https://rpc-mumbai.maticvigil.com&quot;</span><span style="color: #D4D4D4">, </span><span style="color: #6A9955">// テストネット</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #9CDCFE">accounts:</span><span style="color: #D4D4D4"> [</span><span style="color: #CE9178">&quot;0xyourprivatekey&quot;</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></code></pre></div>



<p class="wp-block-paragraph">あとは <code>npx hardhat run scripts/deploy.js --network polygon</code> のように実行するとデプロイされます。</p>



<h3 class="wp-block-heading">ブリッジを利用した資産移動</h3>



<p class="wp-block-paragraph">イーサリアム上のERC-20やERC-721をPolygonに移す場合、<strong>公式ブリッジ</strong>あるいはサードパーティツールを使って<strong>資産のロック＆Mint</strong>を行います。ユーザー目線では「イーサリアムからPolygonへ送金」のようなUIになることが多いです。</p>



<ul class="wp-block-list">
<li><strong>PoSブリッジ</strong>: トークン転送にPoS検証を使う。数分〜数十分程度で完了（場合により異なる）</li>



<li><strong>Plasmaブリッジ</strong>: セキュリティがより厳格だが引き出しに長めのチャレンジ期間がある</li>
</ul>



<h2 class="wp-block-heading">コードサンプル：SolidityコントラクトをPolygonにデプロイ</h2>



<p class="wp-block-paragraph">以下の例は、先ほどの Hardhat config を使って<code>Counter.sol</code>を Polygon のMumbaiテストネットにデプロイするイメージ。</p>



<h4 class="wp-block-heading"><code>contracts/Counter.sol</code></h4>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><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="// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract Counter {
    uint256 public count;

    constructor(uint256 _initial) {
        count = _initial;
    }

    function increment() public {
        count++;
    }

    function reset() public {
        count = 0;
    }
}" 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: #6A9955">// SPDX-License-Identifier: MIT</span></span>
<span class="line"><span style="color: #C586C0">pragma</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">solidity</span><span style="color: #D4D4D4"> ^0.8.0;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #569CD6">contract</span><span style="color: #4EC9B0"> Counter</span><span style="color: #D4D4D4"> {</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #4EC9B0">uint256</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">public</span><span style="color: #D4D4D4"> count;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">constructor</span><span style="color: #D4D4D4">(</span><span style="color: #4EC9B0">uint256</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">_initial</span><span style="color: #D4D4D4">) {</span></span>
<span class="line"><span style="color: #D4D4D4">        count = _initial;</span></span>
<span class="line"><span style="color: #D4D4D4">    }</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">function</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">increment</span><span style="color: #D4D4D4">() </span><span style="color: #569CD6">public</span><span style="color: #D4D4D4"> {</span></span>
<span class="line"><span style="color: #D4D4D4">        count++;</span></span>
<span class="line"><span style="color: #D4D4D4">    }</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">function</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">reset</span><span style="color: #D4D4D4">() </span><span style="color: #569CD6">public</span><span style="color: #D4D4D4"> {</span></span>
<span class="line"><span style="color: #D4D4D4">        count = </span><span style="color: #B5CEA8">0</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></code></pre></div>



<h4 class="wp-block-heading"><code>scripts/deploy.js</code></h4>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><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="async function main() {
  const [deployer] = await ethers.getSigners();
  console.log(&quot;Deploying contract with account:&quot;, deployer.address);

  const Counter = await ethers.getContractFactory(&quot;Counter&quot;);
  const counter = await Counter.deploy(10); // initial value
  await counter.deployed();
  
  console.log(&quot;Counter deployed to:&quot;, counter.address);
}

main()
  .then(() =&gt; process.exit(0))
  .catch((error) =&gt; {
    console.error(error);
    process.exit(1);
  });" 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">async</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">function</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">main</span><span style="color: #D4D4D4">() {</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">const</span><span style="color: #D4D4D4"> [</span><span style="color: #4FC1FF">deployer</span><span style="color: #D4D4D4">] = </span><span style="color: #C586C0">await</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">ethers</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">getSigners</span><span style="color: #D4D4D4">();</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #9CDCFE">console</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">log</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">&quot;Deploying contract with account:&quot;</span><span style="color: #D4D4D4">, </span><span style="color: #9CDCFE">deployer</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">address</span><span style="color: #D4D4D4">);</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">const</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">Counter</span><span style="color: #D4D4D4"> = </span><span style="color: #C586C0">await</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">ethers</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">getContractFactory</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">&quot;Counter&quot;</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">const</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">counter</span><span style="color: #D4D4D4"> = </span><span style="color: #C586C0">await</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Counter</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">deploy</span><span style="color: #D4D4D4">(</span><span style="color: #B5CEA8">10</span><span style="color: #D4D4D4">); </span><span style="color: #6A9955">// initial value</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #C586C0">await</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">counter</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">deployed</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: #9CDCFE">console</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">log</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">&quot;Counter deployed to:&quot;</span><span style="color: #D4D4D4">, </span><span style="color: #9CDCFE">counter</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">address</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: #DCDCAA">main</span><span style="color: #D4D4D4">()</span></span>
<span class="line"><span style="color: #D4D4D4">  .</span><span style="color: #DCDCAA">then</span><span style="color: #D4D4D4">(() </span><span style="color: #569CD6">=&gt;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">process</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">exit</span><span style="color: #D4D4D4">(</span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4">))</span></span>
<span class="line"><span style="color: #D4D4D4">  .</span><span style="color: #DCDCAA">catch</span><span style="color: #D4D4D4">((</span><span style="color: #9CDCFE">error</span><span style="color: #D4D4D4">) </span><span style="color: #569CD6">=&gt;</span><span style="color: #D4D4D4"> {</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #9CDCFE">console</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">error</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">error</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #9CDCFE">process</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">exit</span><span style="color: #D4D4D4">(</span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">  });</span></span></code></pre></div>



<p class="wp-block-paragraph">実行:</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><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="npx hardhat run scripts/deploy.js --network mumbai" 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: #DCDCAA">npx</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">hardhat</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">run</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">scripts/deploy.js</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">--network</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">mumbai</span></span></code></pre></div>



<p class="wp-block-paragraph">成功すれば、<code>counter.address</code> にコントラクトがMumbaiテストネット上でデプロイされる。あとはPolygonスキャンなどのブロックエクスプローラーでコントラクトを確認できる。</p>



<h2 class="wp-block-heading">セキュリティとリスク</h2>



<h3 class="wp-block-heading">セキュリティモデル</h3>



<p class="wp-block-paragraph">Polygonはイーサリアムとは異なる独自のバリデータセットがPoSでチェーンを運営しているため、<strong>イーサリアム本体ほどの分散性</strong>を必ずしも持たない可能性があります。ただし、定期的に<strong>イーサリアムのマスター契約</strong>と同期することで、不正なチェーン改ざんが起きにくい仕組みを敷いています。<br>DeFiやNFT等の重要プロジェクトがPolygon上で稼働していることから、ハッキングやブリッジ攻撃などのリスクは常に存在し、セキュリティ監査やコミュニティチェックが不可欠です。</p>



<h3 class="wp-block-heading">ブリッジ攻撃</h3>



<p class="wp-block-paragraph">過去にはクロスチェーンブリッジがハッキングされ、大量の資産流出が起こった事例が他プロジェクトで報告されています。Polygonでも同様のリスクがあり、ブリッジを利用する際は<strong>公式の信頼できるエンドポイント</strong>や、しっかりしたマルチシグや監査を受けているサービスを選ぶことが大切です。</p>



<h3 class="wp-block-heading">中央集権的要素</h3>



<p class="wp-block-paragraph">Polygonが独自のバリデータ選出ルールや管理者コントラクトを持つため、ネットワーク運営にどれほど<strong>中央集権</strong>が介在するか、コミュニティ内で議論されることもあります。検閲耐性や永久改ざん防止がどの程度保障されるかは、イーサリアムやビットコインと比べると若干異なる評価となるでしょう。</p>



<h2 class="wp-block-heading">今後の展望</h2>



<h3 class="wp-block-heading">ZK技術への注力</h3>



<p class="wp-block-paragraph">PolygonはPoSチェーンだけでなく、<strong>ZK Rollup</strong>や<strong>ZK EVM</strong>にも積極的に投資しています。ZK技術（ゼロ知識証明）を用いることで<strong>プライバシーとスケーラビリティ</strong>を両立し、より安全かつ高速なブロックチェーンプラットフォームを形成する計画が進んでいます。</p>



<h3 class="wp-block-heading">マルチチェーン時代との整合</h3>



<p class="wp-block-paragraph">今後、<strong>クロスチェーンブリッジ</strong>や<strong>マルチチェーン対応</strong>がさらに進む中で、Polygonは**“イーサリアムのインターネットオブブロックチェーン”**を標榜し、さまざまなレイヤー2やサイドチェーンを統合するハブになる可能性があります。<br>他のLayer2（Arbitrum, Optimism, zkSyncなど）や独自チェーンとの競争・協調関係がどう変化していくかに注目が集まっています。</p>



<h3 class="wp-block-heading">アプリ連合とエコシステム拡大</h3>



<p class="wp-block-paragraph">Polygon上で稼働するアプリケーション（Aave, QuickSwap, OpenSea, GameFi等）が増加することで、<strong>流動性</strong>や<strong>ユーザー基盤</strong>が強化され、さらなる開発者や企業が参入する好循環が期待されます。特に大手ゲーム会社やエンタープライズ企業がPoSチェーンを導入するケースも増えれば、多くのユーザーがブロックチェーンを意識せずに使える世界がより近づくでしょう。</p>



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



<p class="wp-block-paragraph">Polygonは「イーサリアムのスケーリングソリューション」として、<strong>高速トランザクション</strong>や<strong>低手数料</strong>を提供しながら、イーサリアムとの高い互換性を保つLayer2/Sidechainプラットフォームです。PlasmaやPoSなどの技術を組み合わせて独自のアーキテクチャを実現し、多くのDeFiプロジェクトやNFTサービスが活用を進めています。</p>



<ul class="wp-block-list">
<li><strong>メリット</strong>
<ul class="wp-block-list">
<li>EVM互換のため開発が容易で、Solidityや既存ツールを活用可能</li>



<li>トランザクション手数料が安く、高速処理が可能</li>



<li>大手DeFiやNFTマーケットが次々に参入し、ユーザー体験が向上</li>
</ul>
</li>



<li><strong>注意点</strong>
<ul class="wp-block-list">
<li>イーサリアム本体ほどの分散度があるかは議論が分かれる</li>



<li>ブリッジ攻撃などクロスチェーン特有のリスク</li>



<li>コミュニティ主導やガバナンス強化が進みつつあるが、中央集権的要素への批判も残る</li>
</ul>
</li>



<li><strong>今後の見通し</strong>
<ul class="wp-block-list">
<li>ZK技術の採用拡大や複数ソリューションの取り込みで、ハブ的な役割を果たす方向へ</li>



<li>マルチチェーン時代に対応し、イーサリアムの主要なサイドチェーンとして位置づけを強化</li>



<li>大規模ゲームや企業導入などのユースケースが増えれば、ユーザー数も急激に伸びる可能性</li>
</ul>
</li>
</ul>



<p class="wp-block-paragraph">もしあなたがイーサリアムでDAppを開発中で、<strong>高いガス代や遅延</strong>に悩まされているなら、Polygonへのデプロイを検討してみる価値は大いにあります。EVM互換によって既存コードをほぼそのまま移植できるうえ、ユーザーは<strong>リーズナブル</strong>な手数料でトランザクションを行えます。ぜひ公式Wikiや開発者向けドキュメントを参照しながら、Polygonでのスマートコントラクト開発を試してみてはいかがでしょうか。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://techgrowup.net/blockchain-polygon/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>初めてのイーサリアム入門：基本構造・スマートコントラクト・開発手法を解説</title>
		<link>https://techgrowup.net/blockchain-ethereum/</link>
					<comments>https://techgrowup.net/blockchain-ethereum/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[techgrowup]]></dc:creator>
		<pubDate>Sat, 05 Apr 2025 13:00:00 +0000</pubDate>
				<category><![CDATA[ブロックチェーン]]></category>
		<category><![CDATA[DeFi]]></category>
		<category><![CDATA[Ethereum]]></category>
		<category><![CDATA[EVM]]></category>
		<category><![CDATA[NFT]]></category>
		<category><![CDATA[Solidity]]></category>
		<category><![CDATA[イーサリアム]]></category>
		<category><![CDATA[スマートコントラクト]]></category>
		<category><![CDATA[開発]]></category>
		<guid isPermaLink="false">https://techgrowup.net/?p=2733</guid>

					<description><![CDATA[はじめに イーサリアムは、ビットコインに続く第二世代のブロックチェーンとして誕生し、「スマートコントラクト」と呼ばれる仕組みを世界に広めたプロジェクトです。ブロックチェーンが持つ分散型・改ざん耐性といった特性を活かしなが [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h1 class="wp-block-heading">はじめに</h1>



<p class="wp-block-paragraph">イーサリアムは、ビットコインに続く第二世代のブロックチェーンとして誕生し、「スマートコントラクト」と呼ばれる仕組みを世界に広めたプロジェクトです。ブロックチェーンが持つ分散型・改ざん耐性といった特性を活かしながら、プログラム可能な仕組みを導入したことで、金融（DeFi）やアート（NFT）、ゲーム、サプライチェーン管理など幅広い領域にインパクトを与えています。<br><a rel="noopener" target="_blank" class="" href="https://ethereum.org/en/developers/docs/intro-to-ethereum/">公式ドキュメント<span class="fa fa-external-link external-icon anchor-icon"></span></a>でも言及されるように、イーサリアムは単なる暗号通貨プラットフォームではなく、「世界中の誰もが参加し、アプリケーションをデプロイできるグローバルコンピュータ」を目指す壮大なプロジェクトといえます。本記事では、イーサリアムの基本構造やスマートコントラクトの動作原理、開発に必要な言語・ツール、さらにはDeFiやNFTといったユースケースも含め、初心者にもわかりやすく解説していきます。<br>ブロックチェーンや暗号資産に関心を持つ方、具体的にdApp（分散型アプリケーション）を開発したい方にとって、本記事がイーサリアム理解の一助となれば幸いです。</p>



<h2 class="wp-block-heading">イーサリアムの概要</h2>



<h3 class="wp-block-heading">ブロックチェーンとスマートコントラクト</h3>



<p class="wp-block-paragraph">イーサリアムは「ブロックチェーンの上でプログラム（= スマートコントラクト）を実行できるプラットフォーム」として登場しました。ビットコインが送金・決済を主な機能としていたのに対し、イーサリアムでは<strong>任意のロジック</strong>をチェーン上に載せることで、分散型アプリケーション（dApp）を作れるようにした点が最大の特徴です。<br>スマートコントラクトはブロックチェーン上で改ざん不能な状態で動作し、自動的に条件分岐を行ったり、アセットの移転を実行したりできます。従来のサーバーベースのアプリと異なり、<strong>特定の管理者が存在しなくても</strong>動き続けるため、金融サービスなどで新しい可能性が切り開かれました。</p>



<h3 class="wp-block-heading">第二世代ブロックチェーンとして</h3>



<p class="wp-block-paragraph">ビットコインを「第一世代」とするならば、イーサリアムは「第二世代ブロックチェーン」と呼ばれます。以下のような進化が挙げられます。</p>



<ul class="wp-block-list">
<li><strong>チューリング完全なプログラム実行</strong>: EVM（Ethereum Virtual Machine）を用い、複雑な条件分岐・計算が可能</li>



<li><strong>ERCトークン標準</strong>: イーサリアム上で独自トークンを発行・管理できる仕組み（ERC-20, ERC-721など）が普及</li>



<li><strong>コミュニティと開発者</strong>: オープンソースのエコシステムが爆発的に広がり、多数のツール・ライブラリ・フレームワークが整備</li>
</ul>



<h2 class="wp-block-heading">基本構造：アカウントとEVM</h2>



<h3 class="wp-block-heading">アカウントモデル</h3>



<p class="wp-block-paragraph">イーサリアムは「アカウント」という概念で資産と状態を管理し、以下の2種類が存在します。</p>



<ol class="wp-block-list">
<li><strong>外部所有アカウント（EOA）</strong>: ユーザーが秘密鍵を持って操作するアドレス。残高（ETH）を保持し、トランザクションを送信する</li>



<li><strong>コントラクトアカウント</strong>: コードとストレージを持つアドレス。スマートコントラクトがデプロイされる場所。EOAからの呼び出しやコントラクト間呼び出しで動作し、内部にstateを保持可能</li>
</ol>



<h3 class="wp-block-heading">EVM（Ethereum Virtual Machine）</h3>



<p class="wp-block-paragraph">イーサリアムのトランザクションが実行される際、EVMがバイトコードを解釈し、<strong>ガスコスト</strong>に基づいて命令の実行を進めます。ハッシュ関数や算術演算、外部コールなど多数の命令が用意され、スマートコントラクトのあらゆる動作がEVM内部で再現される形です。<br>EVMはスタックベースのマシンであり、Solidityなどの高級言語がコンパイルされた<strong>バイトコード</strong>を読み取り、分散合意下で状態を更新する設計となっています。</p>



<h2 class="wp-block-heading">ガスと手数料の仕組み</h2>



<h3 class="wp-block-heading">ガスとは</h3>



<p class="wp-block-paragraph">イーサリアムでスマートコントラクトを実行する際、<strong>計算やストレージ操作</strong>に応じて「ガス」という単位が消費されます。トランザクションを送信するユーザーは、<strong>gasLimit</strong>を設定して最大消費量を制限し、かつ<strong>gasPrice</strong>（または EIP-1559導入後は baseFee + priorityFee）を指定して手数料を支払う形になります。<br>もしトランザクション実行中にガスが尽きれば、「Out of gas」エラーでロールバックされる仕組みです。こうした設計により、ブロックチェーン上でのリソース浪費（無限ループやスパムなど）を防いでいます。</p>



<h3 class="wp-block-heading">EIP-1559とベース手数料</h3>



<p class="wp-block-paragraph">EIP-1559 で導入された手数料メカニズムでは、<strong>baseFee</strong>がブロックごとに自動調整され、ネットワーク混雑時には値上がりし、空いているときは値下がりする仕組みになりました。さらに<strong>priorityFee</strong>（tip）をマイナー（またはバリデーター）へ渡すことで、取引を優先してもらうことが可能です。<br>ガスモデルは複雑に見えますが、要するに「トランザクション実行にはリソースが必要で、それに応じたコストを支払うことでネットワークをスパムから守る」という理念がベースにあります。</p>



<h2 class="wp-block-heading">スマートコントラクトの開発フロー</h2>



<h3 class="wp-block-heading">Solidity言語</h3>



<p class="wp-block-paragraph">現在最も一般的なイーサリアム向け言語は<strong>Solidity</strong>です。JavaScriptやC++の要素を取り入れた文法で、<strong>static typed</strong>かつEVMに最適化されています。以下はSolidityで書いた簡単なコントラクト例です。</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><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="// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract Counter {
    uint256 public count;

    constructor(uint256 _initial) {
        count = _initial;
    }

    function increment() public {
        count += 1;
    }

    function reset() public {
        count = 0;
    }
}" 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: #6A9955">// SPDX-License-Identifier: MIT</span></span>
<span class="line"><span style="color: #C586C0">pragma</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">solidity</span><span style="color: #D4D4D4"> ^0.8.0;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #569CD6">contract</span><span style="color: #4EC9B0"> Counter</span><span style="color: #D4D4D4"> {</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #4EC9B0">uint256</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">public</span><span style="color: #D4D4D4"> count;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">constructor</span><span style="color: #D4D4D4">(</span><span style="color: #4EC9B0">uint256</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">_initial</span><span style="color: #D4D4D4">) {</span></span>
<span class="line"><span style="color: #D4D4D4">        count = _initial;</span></span>
<span class="line"><span style="color: #D4D4D4">    }</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">function</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">increment</span><span style="color: #D4D4D4">() </span><span style="color: #569CD6">public</span><span style="color: #D4D4D4"> {</span></span>
<span class="line"><span style="color: #D4D4D4">        count += </span><span style="color: #B5CEA8">1</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: #D4D4D4">    </span><span style="color: #569CD6">function</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">reset</span><span style="color: #D4D4D4">() </span><span style="color: #569CD6">public</span><span style="color: #D4D4D4"> {</span></span>
<span class="line"><span style="color: #D4D4D4">        count = </span><span style="color: #B5CEA8">0</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></code></pre></div>



<ul class="wp-block-list">
<li><code>constructor</code>はコントラクトの初期化処理。<code>_initial</code>の値を<code>count</code>に格納して初期設定</li>



<li><code>increment</code>関数を呼ぶと<code>count</code>が1つ増える</li>



<li><code>reset</code>関数でリセット可能</li>
</ul>



<p class="wp-block-paragraph">このシンプルなコントラクトを<strong>EVMバイトコード</strong>にコンパイルし、ブロックチェーンにデプロイすれば動的な状態管理が可能になります。</p>



<h3 class="wp-block-heading">開発ツール: Hardhat / Truffle / Foundry</h3>



<p class="wp-block-paragraph">開発者は主に以下のようなツールを利用します。</p>



<ol class="wp-block-list">
<li><strong>Hardhat</strong>：JavaScript/TypeScriptでテストやスクリプトを記述しやすく、プラグインが豊富</li>



<li><strong>Truffle</strong>：古参のフレームワーク。<code>truffle init</code>でプロジェクトを作り、<code>truffle compile</code>, <code>truffle migrate</code>, <code>truffle test</code>などのコマンドで開発できる</li>



<li><strong>Foundry</strong>：Rustに影響を受けた高速ツール。Solidity専用のテストフレームワークやデプロイ機能を備えている</li>
</ol>



<p class="wp-block-paragraph">これらのツールで<strong>テストネット</strong>（Ropsten, Goerli, Sepolia, etc）へデプロイし、動作確認やユニットテストを行い、本番ネットワークへのデプロイを準備します。</p>



<h2 class="wp-block-heading">dAppとインタラクション</h2>



<h3 class="wp-block-heading">Web3ライブラリ</h3>



<p class="wp-block-paragraph">フロントエンド（webアプリ）がイーサリアムのスマートコントラクトと通信する場合、<strong>web3.js</strong>や<strong>ethers.js</strong>などのJavaScriptライブラリが広く使われます。ユーザーは<strong>MetaMask</strong>等のウォレットを介してトランザクション承認を行い、<strong>RPC</strong>経由でネットワークとやりとりします。<br>以下は ethers.js でシンプルにコントラクトを呼び出す例です。</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><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 { ethers } from &quot;ethers&quot;;

async function callContract() {
  const provider = new ethers.providers.Web3Provider(window.ethereum);
  await provider.send(&quot;eth_requestAccounts&quot;, []);
  const signer = provider.getSigner();

  const contractAddress = &quot;0x1234...&quot;; 
  const abi = [...]; // コントラクトのABI
  const contract = new ethers.Contract(contractAddress, abi, signer);

  const tx = await contract.increment();
  console.log(&quot;Transaction sent:&quot;, tx.hash);
  const receipt = await tx.wait();
  console.log(&quot;Transaction confirmed:&quot;, receipt.blockNumber);
}" 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: #C586C0">import</span><span style="color: #D4D4D4"> { </span><span style="color: #9CDCFE">ethers</span><span style="color: #D4D4D4"> } </span><span style="color: #C586C0">from</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&quot;ethers&quot;</span><span style="color: #D4D4D4">;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #569CD6">async</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">function</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">callContract</span><span style="color: #D4D4D4">() {</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">const</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">provider</span><span style="color: #D4D4D4"> = </span><span style="color: #569CD6">new</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">ethers</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">providers</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">Web3Provider</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">window</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">ethereum</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #C586C0">await</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">provider</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">send</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">&quot;eth_requestAccounts&quot;</span><span style="color: #D4D4D4">, []);</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">const</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">signer</span><span style="color: #D4D4D4"> = </span><span style="color: #9CDCFE">provider</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">getSigner</span><span style="color: #D4D4D4">();</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">const</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">contractAddress</span><span style="color: #D4D4D4"> = </span><span style="color: #CE9178">&quot;0x1234...&quot;</span><span style="color: #D4D4D4">; </span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">const</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">abi</span><span style="color: #D4D4D4"> = [...]; </span><span style="color: #6A9955">// コントラクトのABI</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">const</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">contract</span><span style="color: #D4D4D4"> = </span><span style="color: #569CD6">new</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">ethers</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">Contract</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">contractAddress</span><span style="color: #D4D4D4">, </span><span style="color: #9CDCFE">abi</span><span style="color: #D4D4D4">, </span><span style="color: #9CDCFE">signer</span><span style="color: #D4D4D4">);</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">const</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">tx</span><span style="color: #D4D4D4"> = </span><span style="color: #C586C0">await</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">contract</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">increment</span><span style="color: #D4D4D4">();</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #9CDCFE">console</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">log</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">&quot;Transaction sent:&quot;</span><span style="color: #D4D4D4">, </span><span style="color: #9CDCFE">tx</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">hash</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">const</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">receipt</span><span style="color: #D4D4D4"> = </span><span style="color: #C586C0">await</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">tx</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">wait</span><span style="color: #D4D4D4">();</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #9CDCFE">console</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">log</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">&quot;Transaction confirmed:&quot;</span><span style="color: #D4D4D4">, </span><span style="color: #9CDCFE">receipt</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">blockNumber</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">}</span></span></code></pre></div>



<ul class="wp-block-list">
<li><strong>provider</strong>: ノード（またはMetaMask）へのRPC接続</li>



<li><strong>signer</strong>: ユーザー秘密鍵を持ち署名できるオブジェクト</li>



<li><code>contract.increment()</code>で実際にスマートコントラクトを呼び出す</li>
</ul>



<h3 class="wp-block-heading">フロントエンド + スマートコントラクト</h3>



<p class="wp-block-paragraph">多くのdAppは<strong>React</strong>や<strong>Vue</strong>などのフロントエンドフレームワークと組み合わせ、ユーザーがボタンクリックやフォーム送信を通じてトランザクションを送信したり、コントラクトの状態を表示したりします。ブロックチェーンならではの特徴として、サーバーサイドを持たずに<strong>クライアント・分散ネットワーク</strong>構成をとることも可能です。</p>



<h2 class="wp-block-heading">ユースケース：DeFi, NFT, DAOなど</h2>



<h3 class="wp-block-heading">DeFi (分散型金融)</h3>



<p class="wp-block-paragraph">イーサリアム最大の成功事例ともいわれるDeFiは、<strong>貸し借りプロトコル（Aave, Compound）</strong>、<strong>分散型取引所（Uniswap, SushiSwap）</strong>、**ステーブルコイン（DAI, USDCなど）**などが代表的です。スマートコントラクトが資産を自動管理し、中央の銀行や取引所を介さずに大規模な金融サービスを実現できる点が特長です。</p>



<h3 class="wp-block-heading">NFTとデジタルアセット</h3>



<p class="wp-block-paragraph"><strong>ERC-721</strong>規格などを通じてNFT（Non-Fungible Token）を発行し、アートやゲームアイテム、メタバース資産をオンチェーンで表現する動きが盛んです。「CryptoKitties」や「Bored Ape Yacht Club」など、有名プロジェクトが大きな注目を集めています。NFTは<strong>唯一性</strong>を示すための仕組みとして、イーサリアムが最も活用されている分野のひとつです。</p>



<h3 class="wp-block-heading">DAO（分散型自律組織）</h3>



<p class="wp-block-paragraph">イーサリアムがもたらす「誰もが参加でき、透明性のある投票や資金管理」が可能な組織形態として<strong>DAO</strong>が登場しました。トークン保有者が提案や投票を行い、結果をコントラクトが自動で執行することで、<strong>トップダウンの指揮命令体系を排した</strong>組織運営を実現します。<br>この仕組みによりコミュニティが資金をプールし、共同でプロジェクトを立ち上げたり、クリエイティブ活動を支援したりと、多彩な試みがなされています。</p>



<h2 class="wp-block-heading">イーサリアムの課題と拡張</h2>



<h3 class="wp-block-heading">スケーラビリティとガス高騰問題</h3>



<p class="wp-block-paragraph">イーサリアムは<strong>PoW</strong>から<strong>PoS</strong>への移行（The Merge）を経て、エネルギー消費を大幅に削減しましたが、オンチェーンの<strong>スケーラビリティ</strong>はいまだ課題です。混雑時にはガス価格が高騰し、一般ユーザーが小額取引を行うのが困難になることも。<br>これに対し、<strong>レイヤー2</strong>（Optimistic Rollup, ZK Rollupなど）や<strong>シャーディング</strong>が計画されており、将来的に大幅なTPS向上が見込まれています。</p>



<h3 class="wp-block-heading">レイヤー2（L2）ソリューション</h3>



<p class="wp-block-paragraph">レイヤー2は、主に<strong>オフチェーンの処理</strong>や<strong>Rollup</strong>技術で多量のトランザクションをまとめ、最終的な要約をメインチェーンに書き込むアプローチです。<strong>Arbitrum</strong>や<strong>Optimism</strong>、<strong>zkSync</strong>などが代表的で、EVM互換を維持しつつ<strong>手数料が低い</strong>DApp開発環境を提供しています。</p>



<h3 class="wp-block-heading">セキュリティとユーザビリティ</h3>



<p class="wp-block-paragraph">Solidityのコントラクトはパワフルな反面、<strong>Re-entrancy</strong>や<strong>Overflow</strong>などの脆弱性が存在し、過去にも多額の資金流出事件が起きています。開発者や監査会社がセキュリティツールやベストプラクティスを整備し、ユーザーが慎重にプロジェクトを選べるようになってきたとはいえ、依然として<strong>注意が必要</strong>です。<br>また、<strong>ウォレットの秘密鍵管理</strong>や<strong>ガス代の仕組み</strong>など初心者にはハードルが高く、ユーザビリティの向上も大きな課題として残っています。</p>



<h2 class="wp-block-heading">今後の展望</h2>



<h3 class="wp-block-heading">イーサリアム2.0とシャーディング</h3>



<p class="wp-block-paragraph">イーサリアムは<strong>The Merge</strong>でPoSへの切り替えを完了し、次なる段階として<strong>シャーディング</strong>など大規模アップグレードが計画されています。シャーディングによってチェーンが分割され、データハンドリングや検証を分担することで、ネットワーク全体のスループットとコスト効率が向上すると期待されています。</p>



<h3 class="wp-block-heading">マルチチェーンと相互運用</h3>



<p class="wp-block-paragraph">DeFiやNFTがマルチチェーン化する流れの中で、<strong>イーサリアムがマルチチェーンの中心</strong>として機能する可能性が高いです。ブリッジやクロスチェーンソリューションが成熟すれば、イーサリアムの資産やNFTを他チェーンで利用したり、逆に他チェーンのトークンをイーサリアムDeFiで活用するなど、相互運用がより活発になるでしょう。</p>



<h3 class="wp-block-heading">RollupやZK技術の普及</h3>



<p class="wp-block-paragraph"><strong>ZK-Rollup</strong>や<strong>Optimistic Rollup</strong>がさらに発展すれば、レイヤー2上で多数のトランザクションをまとめつつEVM互換を保ち、実用的なdApp体験を提供できるようになります。これが<strong>グローバルスケール</strong>のサービス（SNSやゲームなど）にも対応できる道を開くと考えられています。</p>



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



<p class="wp-block-paragraph">イーサリアムは、ブロックチェーンを単なる送金だけでなく、<strong>汎用的な分散コンピューティングプラットフォーム</strong>に進化させた先駆的プロジェクトです。EVMという仮想マシンを通じてスマートコントラクトを動作させ、DeFiやNFT、DAOなど多彩なユースケースを生み出しました。</p>



<ul class="wp-block-list">
<li><strong>特徴</strong>
<ul class="wp-block-list">
<li>EVMによるチューリング完全なスマートコントラクト実行</li>



<li>ガスモデルによってリソース乱用を防ぎ、トランザクションごとに手数料を徴収</li>



<li>大規模コミュニティ・ツール・フレームワークが揃い、開発しやすい環境</li>
</ul>
</li>



<li><strong>開発フロー</strong>
<ul class="wp-block-list">
<li>SolidityやVyperでコントラクトを記述</li>



<li>Hardhat/Truffle/Foundryなどのツールでコンパイル・デプロイ・テスト</li>



<li>フロントエンドからweb3/ethers.jsでコントラクト呼び出し</li>
</ul>
</li>



<li><strong>課題と展望</strong>
<ul class="wp-block-list">
<li>スケーラビリティの不足をレイヤー2やシャーディングで解決へ</li>



<li>セキュリティとユーザビリティの向上が依然として重要</li>



<li>マルチチェーン化やZK技術など革新が続き、より幅広い分散アプリに対応</li>
</ul>
</li>
</ul>



<p class="wp-block-paragraph">イーサリアムは暗号資産やブロックチェーンの世界を一変させた存在であり、今後もさらなるアップグレードや周辺技術の成長によって「分散型の世界コンピュータ」としての地位を確立していくでしょう。DeFiやNFT、DAOといったキーワードをきっかけに、イーサリアムが実現する次世代のインターネット（Web3）の姿を追いかける価値はますます高まっています。もし開発を始めたいなら、SolidityチュートリアルやHardhatなどのツールから入門し、公式ドキュメントやコミュニティリソースで最新の情報をキャッチアップするのが近道です。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://techgrowup.net/blockchain-ethereum/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>ドラッカーのマネジメント論を開発プロジェクトに置き換えて考察してみた</title>
		<link>https://techgrowup.net/drucker-management-develop/</link>
					<comments>https://techgrowup.net/drucker-management-develop/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[techgrowup]]></dc:creator>
		<pubDate>Wed, 09 Jun 2021 12:39:27 +0000</pubDate>
				<category><![CDATA[エンジニアコラム]]></category>
		<category><![CDATA[ドラッカー]]></category>
		<category><![CDATA[開発]]></category>
		<guid isPermaLink="false">https://techgrowup.net/?p=1331</guid>

					<description><![CDATA[はじめに 　本記事では、オーストラリア出身で「経営学の父」とも言われるピーター・ドラッカーのマネジメント論をシステム開発に置き換えてみると、どんな効果が得られそうかを考えてみた記事です。ドラッカーは経営を主軸においていま [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">はじめに</h2>



<p class="wp-block-paragraph">　本記事では、オーストラリア出身で「経営学の父」とも言われるピーター・ドラッカーのマネジメント論をシステム開発に置き換えてみると、どんな効果が得られそうかを考えてみた記事です。ドラッカーは経営を主軸においていますが、経営とシステムは現代では切ってもきれない関係になっており、開発プロジェクトが頓挫すれば経営も傾いてしまう状態の会社もたくさんある。</p>



<p class="wp-block-paragraph">　ベンダーやユーザーと言えどもあらゆる会社でソフトウェアやハードウェア、クラウドが開発・利用されていることを背景に、ドラッカーのマネジメント論を応用することでシステム開発を上手くリードすることが出来るのではないかと考察してみたい。</p>



<p class="wp-block-paragraph"></p>



<h2 class="wp-block-heading">本記事の読み方</h2>



<p class="wp-block-paragraph">　ドラッカーはマネジメントを「組織に成果をあげさせるためのもの」と定義している。システム開発で言えば、プロジェクトそのものが組織に値し、開発プロジェクトの目的はQCDのバランスを考慮し、高品質なシステム・サービスを作り上げることが使命である。</p>



<p class="wp-block-paragraph">　本記事ではドラッカーが組織を如何にマネジメントするかを、プロジェクトに置き換えて考えてみることにする。※本記事は下記の本を参考にしています。</p>



<div class="amazon-html">
    <iframe width="120" height="240" style="width:120px;height:240px;" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" src="https://rcm-fe.amazon-adsystem.com/e/cm?ref=tf_til&amp;t=daichimizuno-22&amp;m=amazon&amp;o=9&amp;p=8&amp;l=as1&amp;IS1=1&amp;detail=1&amp;asins=B087J9JKDY&amp;linkId=b6a433e4336c706c0eaaafe540ce6a49&amp;bc1=ffffff&amp;lt1=_blank&amp;fc1=333333&amp;lc1=0066c0&amp;bg1=ffffff&amp;f=ifr">
    </iframe>
</div>



<h2 class="wp-block-heading">開発プロジェクトのマネジメント</h2>



<p class="wp-block-paragraph">　ドラッカーのマネジメント論を開発に置き換えて見ると、プロジェクトをマネジメントをする上で最も大切な要素は次の3要素である。</p>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box has-border-color has-amber-border-color"><div class="tab-caption-box-label block-box-label box-label fab-lightbulb"><span class="tab-caption-box-label-text block-box-label-text box-label-text">Point</span></div><div class="tab-caption-box-content block-box-content box-content">
<p class="wp-block-paragraph">①　プロジェクトの使命<br>②　プロジェクトの生産性<br>③　プロジェクトの社会的責任</p>
</div></div>



<h2 class="wp-block-heading">プロジェクトの使命</h2>



<p class="wp-block-paragraph">　ドラッカーはどんな組織(政府や組織、教育機関、企業)であっても使命が大切で、誰かのニーズを満たすために存在していると論じている。</p>



<p class="wp-block-paragraph">　開発プロジェクトも同様で、使命なきプロジェクトを完遂することなど不可能であり、システムやサービスは誰かに利用してもらうために開発プロジェクトが存在すると考える。本来プロジェクトでは特定の個人が、一時的な期間を伴った共通の目的のために存在しているものであり、ゴールに到達すれば解散するというのがプロジェクトの本質である。</p>



<p class="wp-block-paragraph">　皆さんも、「このプロジェクトは何のためにやっているのだろうか」と思ったことはないだろうか。これはプロジェクトが存在する意味（使命）が伝達されていないか、そもそも明確に決められていないことが多く、このようなプロジェクトは大抵炎上している。少なくともプロジェクトをマネジメントする場合には、ドラッカーが掲げる5つの質問に答えられないのであれば、プロジェクトとして成り立っていないので、見直す必要があるだろう。</p>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box has-border-color has-teal-border-color"><div class="tab-caption-box-label block-box-label box-label fab-check"><span class="tab-caption-box-label-text block-box-label-text box-label-text">Check</span></div><div class="tab-caption-box-content block-box-content box-content">
<p class="wp-block-paragraph">①　われわれのミッションは何か？<br>②　われわれの顧客（ユーザー）は誰か？<br>③　顧客（ユーザー）にとっての価値は何か？<br>④　われわれにとっての成果は何か？<br>⑤　われわれの計画は何か？</p>
</div></div>



<p class="wp-block-paragraph">　ここで注意しておきたいと思うのが、<span class="marker-under">「④　われわれにとっての成果は何か？」</span>である。短期的に見ればシステムを納品することが成果になってしまうが、そうなってはいけないと考えている。他の問にもあるように、開発プロジェクトの目的は常に顧客（ユーザー）目線で、価値を提供することにあり、開発することが目的になってしまうことは避けたいところである。</p>



<p class="wp-block-paragraph"></p>



<h2 class="wp-block-heading">プロジェクトの生産性</h2>



<h3 class="wp-block-heading">知的労働社会</h3>



<p class="wp-block-paragraph">　現代では1900年代の大量生産社会と違って、大量に同じものを作っても売れない。既に世の中にモノは溢れかえっている。そして2000年代には知的労働社会になり、単純に作って売るというビジネスモデルから、労働者の知識を活用して各企業独自の製品やサービスを作っていくことが必要である。</p>



<p class="wp-block-paragraph">　最近ではアウトソーシングや副業なども流行ってきており、ますます個々人が持つ専門性に焦点が当てられている。また、大量生産社会では企業が生産設備を持ち、労働者はそれを利用することでモノを作っていたが、現代では専門性を持つ労働者達そのものが生産設備を所有していることと同等になっている。そのため、<span class="marker-under">専門性を持つ方たちは生産設備を「移動」することが簡単になっている</span>。</p>



<p class="wp-block-paragraph">　このような時代に大事になってくるのは、専門性を持つ人達を如何にマネジメントして生産性をあげていくかということになる。ドラッカーは生産性向上のための条件を6つ定義している。</p>



<p class="wp-block-paragraph"></p>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box has-border-color has-amber-border-color"><div class="tab-caption-box-label block-box-label box-label fab-lightbulb"><span class="tab-caption-box-label-text block-box-label-text box-label-text">Point</span></div><div class="tab-caption-box-content block-box-content box-content">
<p class="wp-block-paragraph">①　仕事の目的を考える<br>②　自らがマネジメントを行う<br>③　継続してイノベーションを行う<br>④　自ら継続して学び、人に教える<br>⑤　量より質だと知る<br>⑥　組織にとっての資本財</p>
</div></div>



<p class="wp-block-paragraph">　</p>



<h3 class="wp-block-heading">変化をマネジメントする</h3>



<p class="wp-block-paragraph">　知的労働社会では知識が生産設備となるため、常に知識をアップデート（変化）させていくことが必要になる。これは個人の労働者だけでなく企業も同様。ドラッカーが推奨している方法として、「体系的破棄」というものが存在する。</p>



<p class="wp-block-paragraph">　これは、全ての仕事や作業を実行していないと考え、その上で今からでも実行するかと問い、「ノー」ならば破棄するという考え方である。プロジェクトを始めると報告のための資料作りや、大した意味もない進捗会議などあるのではないだろうか。プロジェクト開始直後であれば必要であったものでも、<span class="marker-under">必要がないものはどんどん破棄していくことが必要</span>だ。</p>



<p class="wp-block-paragraph">　この考え方と似ている開発手法としてアジャイル開発/スクラム開発というものがある。アジャイル開発は簡単に言えば必要な要件を優先度を上げて開発し、常にリリース可能なシステムを開発していくことである。スクラム開発はアジャイル開発手法の一つであり、決定しない要件に対して柔軟に変更を加えていくことで、よりユーザーのニーズに合った開発をしていくことが可能になる。詳しい説明は下記を参照してください。</p>



<figure class="wp-block-embed is-type-wp-embed is-provider-【techgrowth】 wp-block-embed-【techgrowth】"><div class="wp-block-embed__wrapper">

<a target="_self" href="https://techgrowup.net/2021/06/02/about-scrum/" title="最近注目のスクラムによるアジャイル開発とは？メリットは何？" class="blogcard-wrap external-blogcard-wrap a-wrap cf"><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 fetchpriority="high" decoding="async" src="https://techgrowup.net/wp-content/uploads/2021/06/スクラム開発とは？.jpg" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">最近注目のスクラムによるアジャイル開発とは？メリットは何？</div><div class="blogcard-snippet external-blogcard-snippet">スクラム開発はユーザーのニーズが目まぐるしく変わる現代では、アジャイル開発とセットで用いられることが多い開発手法です。スクラムを導入することで強固で柔軟なチームを作り上げることが可能です。</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://techgrowup.net/about-scrum/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">techgrowup.net</div></div></div></div></a>
</div></figure>



<p class="wp-block-paragraph"></p>



<h3 class="wp-block-heading">強みにフォーカスする</h3>



<p class="wp-block-paragraph">　プロジェクトを複数メンバーで行っていれば、各個人によって「強み」「弱み」が出てくるだろう。ただ、この時に「弱み」に着目して克服しようとしないことが知的労働者会では重要になってくる。日本の教育制度だと受験などもあってか、弱い教科を重点的に克服することを求められるため、弱みを克服させようとする会社は多い。</p>



<p class="wp-block-paragraph">　一方ビジネスでは、より専門性を持ったビジネスモデルや企業が勝つことは明確になっている。アップルでは従来コンピュータのハードウェアを製造していたが、中国などが台頭してきてからは撤退をしている。アップルでは製造は弱みだったからだ。</p>



<p class="wp-block-paragraph">　開発プロジェクトでも同じで、各エンジニアに弱みを克服させようと無理に強いることは辞めておきたい。例えば、開発・実装が得意で管理が苦手なメンバーに、管理業務を割り当てることは必要ない。それならば管理が得意なメンバーに任せれば良い。ただ、<span class="marker-under">1点注意しておきたいのは、その「弱み」によって「強み」が阻害されている場合は、早急に克服させるべきだろう</span>。</p>



<p class="wp-block-paragraph"></p>



<h2 class="wp-block-heading">プロジェクトの社会的責任</h2>



<p class="wp-block-paragraph">　ドラッカーは企業が果たすべき最も重要な社会的責任とは、特定の社会目的の達成、つまりは使命の遂行と論じている。これをプロジェクトに置き換えて考えてみると、少し大袈裟な感じもするが、プロジェクトにも必ず使命が存在し、その使命が社会的責任に繋がっていることは間違いない。</p>



<p class="wp-block-paragraph">　現在日本では老年人口（65歳以上）が増え、生産年齢人口（15〜64歳）が減り続けている。2065年には生産年齢人口は現在の60%程度から50%程度まで減少し、人口全体では9000万人近くまで減少すると見られている。</p>



<p class="wp-block-paragraph">　こうした中で1プロジェクトが社会的責任を負うというのは中々考えづらいところではあるが、製品やサービスを開発することで顧客（ユーザー）を想像し、ひいては経済的発展につながるということを考えれば、<span class="marker-under">製品を生み出すことへの責任と、将来に対する責任</span>を持つと言えるだろう。</p>



<p class="wp-block-paragraph">　前者については言わずもがなで、新製品を作り経済を回していくことで社会に対して何らかの貢献ができることはイメージできる。後者については、例えば選挙における投票システムを開発したとしよう。日本が抱える人口減少による生産労働人口の減少を考えれば、現在のような投票所を運営していくことは到底困難になるとともに、投票システムが存在することで将来の労働者は、より専門的な仕事を行うことが出来る。こういった側面を考慮すると、将来の社会問題に対しての社会的責任を負っていると考えられる。</p>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph"></p>



<h2 class="wp-block-heading">顧客（ユーザー）とは誰か？</h2>



<p class="wp-block-paragraph">　何度か顧客（ユーザー）という言葉が出てきているが、これをもう少し深堀りしてみよう。顧客にはシステム・サービスと直接している想像しやすい顧客と、潜在的な顧客がいると考えられる。ベンダー企業であれば目の前にいるクライアントが顧客になるだろう。ユーザー企業であればシステム・サービスを利用してもらうインターネットを介したユーザーかもしれない。</p>



<p class="wp-block-paragraph">　しかし、実際には想像しやすい顧客（ユーザー）だけでなく、潜在的にいる顧客（ユーザー）を見落としてはいけない。例えば分かりやすい例で言うと、認証システムを伴った経理システムがあるとする。経理システムそのものは依頼元のクライアントが利用するためのシステムなので顧客（ユーザー）はクライアントになるだろう。</p>



<p class="wp-block-paragraph">　一方認証システムのみが欲しい潜在的な顧客も存在するかもしれないという前提に立てば、認証基盤はベンダー企業で所有し、その上に経理システムをサービスとして乗せることで、潜在的に認証システムのみを利用したい顧客に別サービスをコストを下げて再開発することができる。いわゆるシステムの再利用性と言われるものだ。エンジニアだとライブラリなどがそれに値するだろう。こうした顧客を見落とさず、我々の顧客は誰になるのかということを本質的に考える必要がある。</p>



<p class="wp-block-paragraph"></p>



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



<p class="wp-block-paragraph">　今回は、ドラッカーのマネジメント入門を軸に、経営・企業マネジメントを流用して開発プロジェクトに応用できないかと考察してみました。少々強引な部分はあると思いますが、現代では開発プロジェクトそのものがビジネスになり得るケースが大半を占めており、活かせる部分は大いにあると思います。</p>



<p class="wp-block-paragraph">　特に、プロジェクトの使命を考えることは最も大事なことがだと考え、企業が存在する意義からブレークダウンし、「なぜこの開発プロジェクトが必要なのか」ということを明確にした上で、プロジェクトを始めることが成功に繋がる大きな要因であることは間違いないと思う。<br></p>



<p class="wp-block-paragraph">　一方実際に開発を行っていく上では、使命があるだけでは不十分で、アジャイル開発/スクラム開発のような具体的な手法を活かしていくことも必要だと考えます。下記にスクラム開発においてのアンチパターンを書いていますので、開発を行っている方はぜひ見ていただきたいと思います。</p>



<figure class="wp-block-embed is-type-wp-embed is-provider-【techgrowth】 wp-block-embed-【techgrowth】"><div class="wp-block-embed__wrapper">

<a target="_self" href="https://techgrowup.net/2021/06/05/scrum-anti-pattern/" title="スクラム開発の半数が失敗？　失敗させるプロセスアンチパターン１０選" class="blogcard-wrap external-blogcard-wrap a-wrap cf"><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 loading="lazy" decoding="async" src="https://techgrowup.net/wp-content/uploads/2021/06/スクラム失敗？-「アンチパターン１０選」.png" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">スクラム開発の半数が失敗？　失敗させるプロセスアンチパターン１０選</div><div class="blogcard-snippet external-blogcard-snippet">アジャイル開発手法の１つであるスクラム開発では、ソフトウェア開発を柔軟に正確に進めることを可能にします。一方間違った方法で行っていれば、上手く行きません。そんな失敗するパターンを10選まとめました。</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 loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://techgrowup.net/scrum-anti-pattern/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">techgrowup.net</div></div></div></div></a>
</div></figure>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">　最後に、オススメのドラッカー書を紹介して終わりたいと思います。</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<iframe style="width:120px;height:240px;" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" src="https://rcm-fe.amazon-adsystem.com/e/cm?ref=tf_til&amp;t=daichimizuno-22&amp;m=amazon&amp;o=9&amp;p=8&amp;l=as1&amp;IS1=1&amp;detail=1&amp;asins=4478300593&amp;linkId=0d147b1101ca010e69348a555a9364f1&amp;bc1=ffffff&amp;lt1=_blank&amp;fc1=333333&amp;lc1=0066c0&amp;bg1=ffffff&amp;f=ifr">
    </iframe>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<iframe style="width:120px;height:240px;" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" src="https://rcm-fe.amazon-adsystem.com/e/cm?ref=tf_til&amp;t=daichimizuno-22&amp;m=amazon&amp;o=9&amp;p=8&amp;l=as1&amp;IS1=1&amp;detail=1&amp;asins=4478300615&amp;linkId=67b2e52ec3e0711b6e4da3c0bb87af2e&amp;bc1=ffffff&amp;lt1=_blank&amp;fc1=333333&amp;lc1=0066c0&amp;bg1=ffffff&amp;f=ifr">
    </iframe>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<iframe style="width:120px;height:240px;" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" src="https://rcm-fe.amazon-adsystem.com/e/cm?ref=tf_til&amp;t=daichimizuno-22&amp;m=amazon&amp;o=9&amp;p=8&amp;l=as1&amp;IS1=1&amp;detail=1&amp;asins=B0083ZDWPE&amp;linkId=b1946f08f2f17b0e21d49838e883b25a&amp;bc1=ffffff&amp;lt1=_blank&amp;fc1=333333&amp;lc1=0066c0&amp;bg1=ffffff&amp;f=ifr">
    </iframe>
</div>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://techgrowup.net/drucker-management-develop/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/?utm_source=w3tc&utm_medium=footer_comment&utm_campaign=free_plugin

Disk: Enhanced  を使用したページ キャッシュ

Served from: techgrowup.net @ 2026-07-04 09:53:56 by W3 Total Cache
-->