<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Health on NicoLabs</title>
		<link>http://blog.hellonico.info/ja/tags/health/</link>
		<description>Recent content in Health on NicoLabs</description>
		<generator>Hugo</generator>
		<language>ja</language>
		
		
		
		
			<lastBuildDate>Mon, 29 Jun 2026 23:35:00 +0900</lastBuildDate>
		
			<atom:link href="http://blog.hellonico.info/ja/tags/health/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>WebGLによるガイド付き呼吸法: 6-2-6のインタラクティブ体験</title>
				<link>http://blog.hellonico.info/ja/posts/coni/breathing-app-webgl/</link>
				<pubDate>Mon, 29 Jun 2026 23:35:00 +0900</pubDate>
				<guid>http://blog.hellonico.info/ja/posts/coni/breathing-app-webgl/</guid>
				<description>&lt;p&gt;ペースの速い今日のデジタル世界において、メンタルヘルスと集中力は非常に重要です。脳波同調（ブレインウェーブ・エントレインメント）アプリケーションの成功に続き、私たちはウェルビーイングのもう一つの側面である「&lt;strong&gt;意識的な呼吸&lt;/strong&gt;」に取り組むことにしました。&lt;/p&gt;&#xA;&lt;p&gt;私たちの最新のConi WASMアプリケーション、&lt;strong&gt;WebGL Breathing App&lt;/strong&gt;を発表できることを嬉しく思います。これは、落ち着きをもたらす6-2-6の呼吸エクササイズ（6秒吸って、2秒止め、6秒吐く）をガイドするためにゼロから構築された、視覚的および聴覚的な体験です。&lt;/p&gt;&#xA;&lt;h3 id=&#34;生きたuiを作成する&#34;&gt;生きたUIを作成する&lt;/h3&gt;&#xA;&lt;p&gt;単に拡大する円を表示する従来の呼吸タイマーとは異なり、私たちは「生きている」と感じられるものを作りたいと考えました。そこで、&lt;em&gt;Calm&lt;/em&gt;（シアン）、&lt;em&gt;Warm&lt;/em&gt;（オレンジ）、&lt;em&gt;Focus&lt;/em&gt;（パープル）から&lt;strong&gt;ムード&lt;/strong&gt;を設定できるインタラクティブなメニューを設計しました。&lt;/p&gt;&#xA;&lt;p&gt;&lt;img&#xA;        class=&#34;lazyload&#34;&#xA;        src=&#34;http://blog.hellonico.info/svg/loading.min.svg&#34;&#xA;        data-src=&#34;../breathe_in_01.png&#34;&#xA;        data-srcset=&#34;../breathe_in_01.png, ../breathe_in_01.png 1.5x, ../breathe_in_01.png 2x&#34;&#xA;        data-sizes=&#34;auto&#34;&#xA;        alt=&#34;../breathe_in_01.png&#34;&#xA;        title=&#34;Breathing App Interface - Calm&#34; /&gt;&lt;/p&gt;&#xA;&lt;p&gt;エクササイズを開始すると、バックグラウンドの環境ノイズとプロシージャルに生成されたチャイムが再生され始めます。これらのサウンドはWeb Audio APIのみによって駆動され、ネイティブのConi関数によってシームレスにスケジューリングされます。ロジックを標準的なJSランタイムの遅延（ヒカップ）から分離することで、オーディオは完全に一貫性を保ち、ジッター（乱れ）のない状態を維持します。&lt;/p&gt;&#xA;&lt;h3 id=&#34;gpuのパワー&#34;&gt;GPUのパワー&lt;/h3&gt;&#xA;&lt;p&gt;内部では、アプリケーションはネイティブに計算され、WebAssemblyにキャッシュされた&lt;strong&gt;30,000個の幾何学的なパーティクル&lt;/strong&gt;のクラスターを生成します。これらのポイントは、選択したムードカラーと連続的な &lt;code&gt;u_breath_factor&lt;/code&gt; とともにWebGLシェーダーに渡されます。&lt;/p&gt;&#xA;&lt;p&gt;息を吸うと、球体は拡大し、頂点シェーダーで直接適用される三角関数のサインとコサインの操作によって頂点が緩やかに波打ちながら、半径が動的に拡大します。色の強さも増し、エネルギーの膨張を模倣します。&lt;/p&gt;&#xA;&lt;p&gt;息を吐くと、球体はタイトなコアへと収縮します。&lt;/p&gt;&#xA;&lt;p&gt;&lt;img&#xA;        class=&#34;lazyload&#34;&#xA;        src=&#34;http://blog.hellonico.info/svg/loading.min.svg&#34;&#xA;        data-src=&#34;../breathe_in_02.png&#34;&#xA;        data-srcset=&#34;../breathe_in_02.png, ../breathe_in_02.png 1.5x, ../breathe_in_02.png 2x&#34;&#xA;        data-sizes=&#34;auto&#34;&#xA;        alt=&#34;../breathe_in_02.png&#34;&#xA;        title=&#34;Breathing App WebGL Particle Sphere&#34; /&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-clojure&#34; data-lang=&#34;clojure&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;;; フェーズを完全にWASM内で計算します&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;defn &lt;/span&gt;update-phase [t phase-text]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  (&lt;span style=&#34;color:#66d9ef&#34;&gt;let &lt;/span&gt;[cycle-time (&lt;span style=&#34;color:#a6e22e&#34;&gt;fmod&lt;/span&gt; t &lt;span style=&#34;color:#ae81ff&#34;&gt;14000.0&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        inhale-time &lt;span style=&#34;color:#ae81ff&#34;&gt;6000.0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        hold-time &lt;span style=&#34;color:#ae81ff&#34;&gt;2000.0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        exhale-time &lt;span style=&#34;color:#ae81ff&#34;&gt;6000.0&lt;/span&gt;]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    (&lt;span style=&#34;color:#66d9ef&#34;&gt;if &lt;/span&gt;(&amp;lt; cycle-time inhale-time)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#75715e&#34;&gt;;; ... 拡張をスムーズに緩和するための数学ロジック&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;視覚的な変換をGPUにオフロードし、厳格な状態の同期をネイティブにWASM内で維持することで、ロボット的ではなく有機的に感じられる、シルクのように滑らかな60fpsの体験を実現しました。&lt;/p&gt;&#xA;&lt;h3 id=&#34;今すぐ試す&#34;&gt;今すぐ試す&lt;/h3&gt;&#xA;&lt;p&gt;新しいアプリケーションを私たちのWASMアプリ環境にデプロイしました。こちらから直接アクセスできます：&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
