<?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>Vuex &#8211; Mach3.laBlog</title>
	<atom:link href="https://blog.mach3.jp/tag/vuex/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.mach3.jp</link>
	<description></description>
	<lastBuildDate>Wed, 13 Aug 2025 06:02:54 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9</generator>
	<item>
		<title>SVG Colk Board で Vuex を使ってみた話</title>
		<link>https://blog.mach3.jp/2018/08/06/svgcolkboard-with-vuex.html</link>
		
		<dc:creator><![CDATA[mach3]]></dc:creator>
		<pubDate>Sun, 05 Aug 2018 22:39:24 +0000</pubDate>
				<category><![CDATA[Laboratory]]></category>
		<category><![CDATA[Illustrator]]></category>
		<category><![CDATA[localStorage]]></category>
		<category><![CDATA[SVG]]></category>
		<category><![CDATA[Vue]]></category>
		<category><![CDATA[Vuex]]></category>
		<guid isPermaLink="false">http://blog.mach3.jp/?p=4430</guid>

					<description><![CDATA[先日リリースしたWebアプリ「SVG Colk Board」の紹介と、 その中身の話を少し綴っておきます。 SVG Colk Board を作った話 SVG Colk Board これは何？ Illustrator 上で [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>先日リリースしたWebアプリ「SVG Colk Board」の紹介と、 その中身の話を少し綴っておきます。</p>



<figure class="wp-block-image"><img decoding="async" src="https://lh3.googleusercontent.com/Q6wVIsl911oqKE_s8_1B8U7lrpd6z5I6juY0Pm4ZQYCNiBQiTFtX_W0uWzDRU1gLE2PzdDu3PNmiHgrFUqafRIq8mJImNhPFXEb28mhTS4uEzxeD5yUDxiCXUKiPXO7u1W1RxcHUUQ=w1200-h630-no" alt=""/></figure>



<p></p>



<span id="more-4430"></span>



<h2 class="wp-block-heading">SVG Colk Board を作った話</h2>



<p><a href="https://colkboard.netlify.com">SVG Colk Board</a></p>



<h3 class="wp-block-heading">これは何？</h3>



<p>Illustrator 上で図をコピーしてテキストエディタにペーストすると、SVGが出力されます。 しかし、そこで出力されるSVGは不要な記述も多く、末尾に付加されている謎文字のおかげで正常に表示されません。</p>



<figure class="wp-block-image"><img decoding="async" src="https://lh3.googleusercontent.com/dpFNQv8ZK29VeQYJstKNhjaS0fiV3kHAE7el-OW2QO4IvcpSvX5x8KlW8ElqCciEhRn76u6sR2xk0paSmH2-5WisWehSuuqh81yh5XBhN5MVfHqZjoULSQBsk69gO-rYRYBZNKQnUQ=w1200-h480-no" alt=""/></figure>



<p></p>



<p>これらをクリーンに最適化する為に作ったのが SVG Colk Board です。</p>



<h3 class="wp-block-heading">使い方</h3>



<ol class="wp-block-list">
<li>Illustrator上で図をコピーする</li>



<li>それを SVG Colk Board 上でペーストする</li>



<li>配置された図を選択すると「SVG」「DataURI」ボタンが表示される</li>



<li>「SVG」「DataURI」のボタンをクリックすると、それぞれ最適化された結果がクリップボードにコピーされる</li>



<li>結果をテキストエディタにペースト</li>
</ol>



<figure class="wp-block-image"><img decoding="async" src="https://lh3.googleusercontent.com/SUNW2kVI7ky6Odgavh3-g5rTmJ3q--p_cSl6vDjXj-PJt-o9kLKsqfCkUrgz-qvm6Ar0E0v5izvtxxkW7R31t3eMaAFgD1zb25doXOPuU6xqOiCTxKQmsujJO0OF8GMhOy0QHhB8nQ=w1200-h800-no" alt=""/></figure>



<p></p>



<ul class="wp-block-list">
<li>ペーストした図のデータは localStorage に保存されるので、ブラウザを閉じた後も保持されます</li>



<li>つまり貼り付けられる図の数は localStorage の容量依存です</li>



<li>もちろんブラウザをまたいでは保持されません</li>
</ul>



<h2 class="wp-block-heading">SVG Colk Board の中身</h2>



<p>このアプリケーションは <a href="https://jp.vuejs.org/index.html">Vue.js</a> で作られています。 そして Vue と共に利用しているのが <a href="https://vuex.vuejs.org/ja/">Vuex</a> と <a href="https://github.com/robinvdvleuten/vuex-persistedstate">vuex-persistedstate</a> です。</p>



<h3 class="wp-block-heading">Vuex</h3>



<p>ここでは詳しい説明を省きますが、 Vuexとは、中規模以上のアプリケーション開発向けの状態管理ライブラリで、 公式ではこのように説明されています。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Vuex は Vue.js アプリケーションのための 状態管理パターン + ライブラリです。 これは予測可能な方法によってのみ状態の変異を行うというルールを保証し、アプリケーション内の全てのコンポーネントのための集中型のストアとして機能します。<br /><a href="https://vuex.vuejs.org/ja">https://vuex.vuejs.org/ja</a></p>
</blockquote>



<p>簡潔に言うと、状態管理にストア（store）という概念を導入する為のライブラリです。 以下、ものすごくざっくりとした説明をします。</p>



<p>Vue.js のコンポーネントは各々が持つ data の値を基にビューを構築・描画し、必要に応じて処理を行います。 store というのはその data に似た振る舞いをしますが、 data が値へのアクセスで直接変更出来るのに対し、 store はセッターのようなメソッドを介してのみ値を変更する事ができ、 それにより値を保護し、変更を集中管理する事ができます。</p>



<figure class="wp-block-image"><img decoding="async" src="https://lh3.googleusercontent.com/dQdUmU0-qeNxQBzUeWfUnx2-eu9AUC5Rx6ZnxT6hkE4yMs0RI2n3AVt2eL0vZzR_Z_KPZBQs3fyimpE6MyN3HvJtt3OOoGbuPXK4BlpCpmJ3wHIJtuuQveiFGPj5MTluMQbgY2doHg=w1200-h800-no" alt=""/></figure>



<p></p>



<p>ざっくりしすぎていてあまりイメージし辛いかと思いますので、下記ページを参考にしてください。</p>



<ul class="wp-block-list">
<li><a href="https://jp.vuejs.org/v2/guide/state-management.html">状態管理 — Vue.js</a></li>
</ul>



<p>先に述べた通り、中規模以上のプロジェクトでなければあまり恩恵にあずかれず、冗長になるだけと感じるかもしれません。 しかし、Vue.js を採用するという事は、ある程度の規模のあるプロジェクトとなる予測が立つとも言えるので、 転ばぬ先の Vuex を問答無用で入れてしまうのも選択肢の一つだと考えられます。</p>



<h3 class="wp-block-heading">vuex-persistedstate</h3>



<p>今回作った様なミニマムなアプリケーションでは正直Vuexは不向きな気がします。 それでもVuexを導入したのは、半分はVuexで習作してみるため、 もう半分はこの <strong>vuex-persistedstate</strong> を使うためです。</p>



<ul class="wp-block-list">
<li><a href="https://github.com/robinvdvleuten/vuex-persistedstate">robinvdvleuten/vuex-persistedstate: <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4be.png" alt="💾" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Persist Vuex state with localStorage.</a></li>
</ul>



<p>vuex-persistedstate は、Vuexのストアの中身（state）をまるっとlocalStorageに保存してくれるプラグインです。 Vuexでストアを書く時にちょっとインポートしてやれば簡単に導入できます。 （下記はREADMEのコードそのままです）</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript"><span class="hljs-keyword">import</span> createPersistedState <span class="hljs-keyword">from</span> <span class="hljs-string">"vuex-persistedstate"</span>;

<span class="hljs-keyword">const</span> store = <span class="hljs-keyword">new</span> Vuex.Store({
  <span class="hljs-comment">// ...</span>
  <span class="hljs-attr">plugins</span>: &#91;createPersistedState()]
});
</code></span></pre>


<p>これで（同じブラウザで見る限りは）ページの状態を永続化できるという寸法です。 なんて便利なんでしょうか！</p>



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



<p>もともとはイラレが吐き出すSVGを最適化する事しか考えてなかったのですが、 ちょうどよいお題だと思って Vuex を使って習作してみたというお話でした。 このアプリで使用している netlify の知見も少しずつたまり始めたので、それはまたいずれ。</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
