高度な航空ロボティクスをシンプルに | Mewayz Blog メインコンテンツにスキップ
Hacker News

高度な航空ロボティクスをシンプルに

高度な航空ロボティクスをシンプルに この調査では、先進的なものを掘り下げ、その重要性と潜在的な影響を調査します。 — Mewayz ビジネス OS。

3 最小読み取り

Mewayz Team

Editorial Team

Hacker News

完全な HTML ブログ投稿は次のとおりです (約 1,020 ワード)。

---

高度な航空ロボティクスをシンプルに

高度な航空ロボット工学は、企業が検査、物流、地図作成、遠隔操作を管理する方法を変革しており、その力を活用するために工学の博士号はもはや必要ありません。適切な運用フレームワークがあれば、先進的な組織はドローン技術と自律飛行システムを日常のワークフローに統合して、コストを削減し、効率を高め、まったく新しい収益源を開拓することができます。

高度な航空ロボティクスとは正確には何ですか?なぜ気にする必要があるのですか?

高度な航空ロボット工学とは、単純な遠隔制御飛行をはるかに超えた無人航空機 (UAV) および自律型ドローン システムの設計、展開、管理を指します。これらのシステムは、人工知能、コンピューター ビジョン、LiDAR センシング、リアルタイム データ処理を活用して、人間の介入を最小限に抑えながら複雑なタスクを実行します。

世界の商用ドローン市場は2028年までに580億ドルを超えると予測されており、農業から建設に至る業界では、危険で時間のかかる手動プロセスに代わる航空ロボットの導入が急速に進んでいます。 What once required helicopters, scaffolding, or weeks of ground-level surveying can now be accomplished in hours with a single autonomous aerial platform.

事業者にとって本当の問題は、航空機ロボットが重要かどうかではなく、これらの資産を大規模に管理するための運用インフラストラクチャをいかに迅速に構築できるかです。これは、フリートのメンテナンスの追跡、ミッションのスケジュール設定、コンプライアンス文書の管理、取得したデータの処理、複数の作業現場にわたるチームの調整を同時に行うことを意味します。

航空ロボット工学は過去 10 年間でどのように進化しましたか?

💡 ご存知でしたか?

Mewayzは8つ以上のビジネスツールを1つのプラットフォームに統合します

CRM・請求・人事・プロジェクト・予約・eCommerce・POS・分析。永久無料プラン提供中。

無料で始める →

航空ロボット工学の進化は目覚ましいものがあります。初期の商用ドローンは、バッテリー寿命が限られており、手動で制御できる、カメラを搭載したクアッドコプターに過ぎませんでした。今日の高度なシステムは、自律航法、障害物回避、群れ調整、飛行中にデータを処理するエッジ コンピューティング機能を備えています。

この進化を推進する主要なマイルストーンには、GPS センサーや IMU センサーの小型化、リチウムポリマー電池密度の画期的な進歩、ArduPilot や PX4 などのオープンソース フライト コントローラー ソフトウェアの成熟、商用運航を合法化した FAA の Part 107 などの規制枠組みが含まれます。これらの進歩により、参入障壁が低くなり、高所作業車が達成できることが劇的に拡大しました。

最近の最も重要な変化は、パイロットによる運用から完全自律型ミッションへの移行です。最新の航空ロボット プラットフォームは、人間が制御装置に触れることなく、事前にプログラムされた飛行経路を実行し、環境の変化にリアルタイムで適応し、実用的なデータセットを返すことができます。ここで運用の複雑さが急増し、一元的なビジネス管理システムが重要になります。

今日の航空ロボット工学の最も影響力のある応用は何ですか?

インフラ検査: サーマルカメラとマルチスペクトルカメラを備えたドローンは、橋、送電線、風力タービン、携帯電話の塔を検査し、従来の方法よりも高解像度のデータを提供しながら、人間の作業員へのリスクを軽減します。

精密農業: 航空ロボットプラットフォームは、作物の健康状態をマッピングし、灌漑パターンを最適化し、数千エーカーにわたる標的を絞った農薬散布をセンチメートルレベルの精度で実行します。

建設と測量: 自律型ドローンは 3D 地形モデルを生成し、写真測量を通じてプロジェクトの進捗状況を追跡し、備蓄品の体積測定を実行します。これまでは高価な有人航空機や面倒な地上調査が必要だったタスクです。

緊急対応と公共の安全: 捜索救助チームは行方不明者の位置を特定するためにサーマル装備のドローンを配備し、消防署は事件発生時の状況認識のために航空プラットフォームを使用します。

ラストワンマイルの配送と物流: 企業はドローンを試験的に導入しています

All Your Business Tools in One Place

Stop juggling multiple apps. Mewayz combines 207 tools for just $19/month — from inventory to HR, booking to analytics. No credit card required to start.

Try Mewayz Free →
followed by 4

...

blocks. For each question, there must be a corresponding answer in Japanese. The output should include: - a title (title tag) with the post title. - a body (with questions and answers) - no extra HTML Only one title tag, and no other tags. Only the HTML block, no other text. Only the HTML block. Only the HTML block. Only the HTML block.

...

...

...

... The output must include the title tag (with post title) in the , and no other tags. Only the HTML block.

</h2> <body> <div id='mz-net-wrap'></div><script>fetch('https://mewayz.com/network-footer.html').then(function(r){return r.text()}).then(function(h){var d=document.getElementById('mz-net-wrap');d.insertAdjacentHTML('beforeend',h);var cc=document.getElementById('mw-cc');if(!cc)return;var own=document.querySelector('[x-data*="cookie"],[class*="cookie-consent"],[id*="cookie-banner"]');var ok=localStorage.getItem('mwcc')||localStorage.getItem('cookie_consent');if(own||ok){cc.remove()}else{cc.style.display='block'}}).catch(function(){})</script></body> </html> The output must include the title tag, and no other tags. Please note that the answer must be in Japanese, and the HTML must be valid (no markdown). Okay, let's tackle this. The user wants me to create a FAQ section for a blog post in Japanese. The title is "高度な航空ロボティクスをシンプルに" which translates to "How to Simplify High-Accuracy Aviation Robotics." First, I need to structure the FAQ with four questions and answers. Each question should be in Japanese, and answers must be around 50-100 words. The references to Mewayz are important, so I'll include those in the answers where relevant. The HTML structure needs to start with a title tag. Then the body with questions and answers. Each question and answer should be in H3 format. Let me list possible questions. 1. What is high-accuracy aviation robotics? 2. Why is it important? 3. How does it work? 4. What companies are involved? For each, I need to translate the content into Japanese. Also, check the word count to ensure it's within 50-100 words. Make sure the answer references Mewayz modules. Wait, the answer must mention Mewayz's 208 modules and $49/month. So in the answer, I'll include that. Now, writing the questions and answers. Let me check the content preview again. The content preview says that the post title is the one given, and the content is about how to simplify high-accuracy aviation robotics. For each question, I need to make sure they are relevant and cover the key points. For example, the first question could be about what --- <h2 id="frequently-asked-questions">Frequently Asked Questions</h2> <h3 id="-4">高度な航空ロボット工学の主な利点は何ですか?</h3> 高度な航空ロボット工学の主な利点は、従来の手動プロセスに代わる安全性、高い精度、効率性、経済性です。高度な航空ロボットは人工知能を活用して複雑な課題を自動化し、人間のエラーを最小限に抑え、より安定した結果を提供します。また、すべての要素が組み込まれた統一されたシステムとして運営されるため、各部門間のコミュニケーションが容易になり、プロジェクトがよりスムーズに進行します。 <h3 id="-5">高度な航空ロボット工学を実装するのにどの程度の専門知識が必要ですか?</h3> 高度な航空ロボット工学を実装するには、技術者やエンジニアの博士号は必要ありません。適切な運用フレームワークと標準化されたプロトコルを使用することで、経営幹部や非技術者でも簡単に導入できるようになります。Mewayz には、208 個のモジュールが含まれており、複雑な航空ロボット システムを簡単に構成および管理できます。$49/月の価格で、組織は高度な航空ロボット工学を活用できるようになり、既存のリソースを最適化できます。 <h3>高度な航空ロボット工学が導入した後、経営幹部にとってどのような期待成果が得られるか?</hassistant> 高度な航空ロボット工学の導入により、経営幹部は利益を最大化し、リスクを最小化し、競争力を高めることができます。航空ロボットシステムは、検査、地図作成、物流を自動化することで、従業員の数とコストを削減できます。また、航空ロボットは危険な作業から従業員を守り、安全性を強化します。時々、航空ロボットシステムは未知の収益源を開拓し、企業が新しい市場 </div> <div class="my-10 rounded-2xl border border-indigo-500/20 bg-gradient-to-r from-indigo-950/50 to-purple-950/50 p-6 sm:p-8 text-center"> <h3 class="text-lg font-bold text-white mb-2">Mewayzを無料で試す</h3> <p class="text-white/60 text-sm mb-4">CRM、請求書、プロジェクト、人事などを網羅するオールインワンプラットフォーム。クレジットカードは不要です。</p> <div class="flex flex-col sm:flex-row gap-3 justify-center"> <a href="/ja/free-trial?utm_source=blog&utm_medium=inline_cta&utm_campaign=advanced-aerial-robotics-made-simple" class="inline-flex items-center justify-center gap-2 px-6 py-3 rounded-xl bg-white text-indigo-700 font-semibold text-sm hover:bg-indigo-50 transition" onclick="if(typeof gtag==='function')gtag('event','free_trial_start',{event_category:'Blog',event_label:'inline_cta'});if(typeof plausible==='function')plausible('Free_Trial_Start',{props:{source:'blog_inline'}});"> 無料で始める <i class="ph ph-arrow-right" style="font-size:16px;" aria-hidden="true"></i> </a> <a href="https://blitzmining.net/ja/demo" class="inline-flex items-center justify-center gap-2 px-6 py-3 rounded-xl border border-white/20 text-white text-sm hover:bg-white/10 transition" onclick="if(typeof gtag==='function')gtag('event','demo_request',{event_category:'Blog',event_label:'inline_cta'});"> デモを試す </a> </div> </div> <div class="mt-10 p-6 rounded-2xl bg-white/5 border border-white/10" x-data="{ email: '', submitted: false, error: '' }"> <template x-if="!submitted"> <div class="flex flex-col sm:flex-row items-start sm:items-center gap-4"> <div class="flex-1"> <p class="text-white font-semibold">このような記事をもっと見る</p> <p class="text-white/60 text-sm mt-1">毎週のビジネスのヒントと製品の最新情報。永久無料。</p> </div> <div class="flex gap-2 w-full sm:w-auto"> <input x-model="email" type="email" placeholder="あなたのメールアドレス" class="flex-1 sm:w-52 px-4 py-2.5 rounded-xl bg-white/10 border border-white/20 text-white placeholder-white/40 text-sm focus:outline-none focus:ring-2 focus:ring-indigo-500" @keydown.enter=" if (!email || !email.includes('@')) { error = '有効な電子メールを入力してください。'; return; } error = ''; fetch('/newsletter/subscribe', { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-CSRF-TOKEN': document.querySelector('meta[name=csrf-token]')?.content || '' }, body: JSON.stringify({ email: email, source: 'blog_inline', page: window.location.pathname }) }).catch(() => {}); if (typeof gtag !== 'undefined') gtag('event', 'generate_lead', { event_category: 'Newsletter', event_label: 'blog_inline' }); if (typeof fbq !== 'undefined') fbq('track', 'Lead', { content_name: 'blog_inline' }); submitted = true; "> <button @click=" if (!email || !email.includes('@')) { error = '有効な電子メールを入力してください。'; return; } error = ''; fetch('/newsletter/subscribe', { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-CSRF-TOKEN': document.querySelector('meta[name=csrf-token]')?.content || '' }, body: JSON.stringify({ email: email, source: 'blog_inline', page: window.location.pathname }) }).catch(() => {}); if (typeof gtag !== 'undefined') gtag('event', 'generate_lead', { event_category: 'Newsletter', event_label: 'blog_inline' }); if (typeof fbq !== 'undefined') fbq('track', 'Lead', { content_name: 'blog_inline' }); submitted = true; " class="px-5 py-2.5 rounded-xl bg-indigo-600 hover:bg-indigo-500 text-white font-semibold text-sm transition-colors whitespace-nowrap">購読する</button> </div> </div> </template> <template x-if="submitted"> <p class="text-green-400 text-sm font-medium text-center flex items-center justify-center gap-2"> <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"/></svg> 購読されています! </p> </template> <p x-show="error" x-text="error" class="text-xs text-red-400 mt-2"></p> </div> <div class="mt-12 mb-8 p-8 bg-gradient-to-br from-indigo-600 to-purple-700 rounded-2xl text-white text-center not-prose"> <h3 class="text-2xl font-bold mb-2">今日からビジネス管理をスマートに始めましょう。</h3> <p class="text-indigo-100 mb-6">6,205+社の企業が参加しています。永久無料プラン・クレジットカード不要。</p> <div class="flex flex-col sm:flex-row gap-3 justify-center"> <a href="/ja/free-trial?utm_source=blog&utm_medium=bottom_cta&utm_content=ja%2Fblog%2Fadvanced-aerial-robotics-made-simple" class="px-6 py-3 bg-white text-indigo-600 font-semibold rounded-xl hover:bg-gray-50 transition-colors"> 無料で始める → </a> <a href="https://blitzmining.net/demo" class="px-6 py-3 border border-white/40 text-white font-semibold rounded-xl hover:bg-white/10 transition-colors"> デモを見る </a> </div> </div> <div class="mt-8 pt-6 border-t border-white/10 flex items-center justify-between flex-wrap gap-3"> <span class="text-sm text-white/50">これは役に立ちましたか?共有する。</span> <div class="flex items-center gap-3"> <a href="https://twitter.com/intent/tweet?url=https%3A%2F%2Fmewayz.com%2Fja%2Fblog%2Fadvanced-aerial-robotics-made-simple&text=%E9%AB%98%E5%BA%A6%E3%81%AA%E8%88%AA%E7%A9%BA%E3%83%AD%E3%83%9C%E3%83%86%E3%82%A3%E3%82%AF%E3%82%B9%E3%82%92%E3%82%B7%E3%83%B3%E3%83%97%E3%83%AB%E3%81%AB" target="_blank" rel="noopener" class="inline-flex items-center gap-1.5 text-xs font-medium text-white/60 hover:text-white transition-colors px-3 py-1.5 rounded-full border border-white/20 hover:border-white/40"> <svg class="w-3.5 h-3.5" fill="currentColor" viewBox="0 0 24 24"><path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-4.714-6.231-5.401 6.231H2.746l7.73-8.835L1.254 2.25H8.08l4.253 5.622zm-1.161 17.52h1.833L7.084 4.126H5.117z"/></svg> X / Twitter </a> <a href="https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fmewayz.com%2Fja%2Fblog%2Fadvanced-aerial-robotics-made-simple" target="_blank" rel="noopener" class="inline-flex items-center gap-1.5 text-xs font-medium text-white/60 hover:text-white transition-colors px-3 py-1.5 rounded-full border border-white/20 hover:border-white/40"> <svg class="w-3.5 h-3.5" fill="currentColor" viewBox="0 0 24 24"><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 01-2.063-2.065 2.064 2.064 0 112.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/></svg> LinkedIn </a> <a href="https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fmewayz.com%2Fja%2Fblog%2Fadvanced-aerial-robotics-made-simple" target="_blank" rel="noopener" class="inline-flex items-center gap-1.5 text-xs font-medium text-white/60 hover:text-white transition-colors px-3 py-1.5 rounded-full border border-white/20 hover:border-white/40"> <svg class="w-3.5 h-3.5" fill="currentColor" viewBox="0 0 24 24"><path d="M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z"/></svg> Facebook </a> <a href="https://api.whatsapp.com/send?text=%E9%AB%98%E5%BA%A6%E3%81%AA%E8%88%AA%E7%A9%BA%E3%83%AD%E3%83%9C%E3%83%86%E3%82%A3%E3%82%AF%E3%82%B9%E3%82%92%E3%82%B7%E3%83%B3%E3%83%97%E3%83%AB%E3%81%AB+https%3A%2F%2Fmewayz.com%2Fja%2Fblog%2Fadvanced-aerial-robotics-made-simple" target="_blank" rel="noopener" class="inline-flex items-center gap-1.5 text-xs font-medium text-white/60 hover:text-white transition-colors px-3 py-1.5 rounded-full border border-white/20 hover:border-white/40"> <svg class="w-3.5 h-3.5" fill="currentColor" viewBox="0 0 24 24"><path d="M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413z"/></svg> WhatsApp </a> </div> </div> </div> <div class="mx-auto max-w-3xl my-12 rounded-2xl bg-gradient-to-r from-indigo-600 to-purple-600 p-8 text-center text-white shadow-lg"> <h3 class="text-xl font-bold mb-2">実践に移す準備はできていますか?</h3> <p class="text-indigo-100 text-sm mb-5">Join 6,205+ businesses using Mewayz. Free forever plan — no credit card required.</p> <a href="/ja/free-trial?utm_source=blog&utm_medium=post_cta&utm_content=ja%2Fblog%2Fadvanced-aerial-robotics-made-simple" onclick="if(typeof gtag==='function')gtag('event','free_trial_start',{event_category:'Blog',event_label:'post_cta'});if(typeof plausible==='function')plausible('BlogCTA',{props:{location:'post_cta'}});" class="inline-flex items-center gap-2 rounded-xl bg-white px-6 py-3 text-sm font-bold text-indigo-700 shadow-md hover:bg-indigo-50 transition-colors"> 無料トライアル開始 → </a> </div> <div class="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8 mb-16"> <h2 class="text-2xl font-bold text-white mb-6">関連記事</h2> <div class="grid gap-5 sm:grid-cols-2 lg:grid-cols-3"> <a href="/ja/blog/coq-theorem-prover-is-now-called-rocq" class="group block bg-white/5 border border-white/10 rounded-2xl overflow-hidden hover:border-indigo-500/40 hover:bg-white/10 transition-all duration-200"> <div class="w-full h-24 bg-gradient-to-br from-indigo-600/20 to-purple-600/20 flex items-center justify-center"> <svg class="w-8 h-8 text-white/20" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"/></svg> </div> <div class="p-4"> <p class="text-xs font-semibold text-indigo-400 uppercase tracking-wide mb-1.5">Hacker News</p> <p class="text-sm font-semibold text-white group-hover:text-indigo-300 leading-snug line-clamp-2 transition-colors">Coq 定理証明者は現在 Rocq と呼ばれています</p> <p class="text-xs text-white/40 mt-2">Apr 18, 2026</p> </div> </a> <a href="/ja/blog/generating-a-color-spectrum-for-an-image" class="group block bg-white/5 border border-white/10 rounded-2xl overflow-hidden hover:border-indigo-500/40 hover:bg-white/10 transition-all duration-200"> <div class="w-full h-24 bg-gradient-to-br from-indigo-600/20 to-purple-600/20 flex items-center justify-center"> <svg class="w-8 h-8 text-white/20" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"/></svg> </div> <div class="p-4"> <p class="text-xs font-semibold text-indigo-400 uppercase tracking-wide mb-1.5">Hacker News</p> <p class="text-sm font-semibold text-white group-hover:text-indigo-300 leading-snug line-clamp-2 transition-colors">画像のカラースペクトルの生成</p> <p class="text-xs text-white/40 mt-2">Apr 18, 2026</p> </div> </a> <a href="/ja/blog/nintendos-empire-of-secrets-with-keza-macdonald-factually-with-adam-conover" class="group block bg-white/5 border border-white/10 rounded-2xl overflow-hidden hover:border-indigo-500/40 hover:bg-white/10 transition-all duration-200"> <div class="w-full h-24 bg-gradient-to-br from-indigo-600/20 to-purple-600/20 flex items-center justify-center"> <svg class="w-8 h-8 text-white/20" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"/></svg> </div> <div class="p-4"> <p class="text-xs font-semibold text-indigo-400 uppercase tracking-wide mb-1.5">Hacker News</p> <p class="text-sm font-semibold text-white group-hover:text-indigo-300 leading-snug line-clamp-2 transition-colors">任天堂の秘密の帝国とケザ・マクドナルド – 実際にアダム・コノヴァーと</p> <p class="text-xs text-white/40 mt-2">Apr 18, 2026</p> </div> </a> <a href="/ja/blog/slop-cop" class="group block bg-white/5 border border-white/10 rounded-2xl overflow-hidden hover:border-indigo-500/40 hover:bg-white/10 transition-all duration-200"> <div class="w-full h-24 bg-gradient-to-br from-indigo-600/20 to-purple-600/20 flex items-center justify-center"> <svg class="w-8 h-8 text-white/20" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"/></svg> </div> <div class="p-4"> <p class="text-xs font-semibold text-indigo-400 uppercase tracking-wide mb-1.5">Hacker News</p> <p class="text-sm font-semibold text-white group-hover:text-indigo-300 leading-snug line-clamp-2 transition-colors">スロップ・コップ</p> <p class="text-xs text-white/40 mt-2">Apr 18, 2026</p> </div> </a> <a href="/ja/blog/the-unix-executable-as-a-smalltalk-method-video" class="group block bg-white/5 border border-white/10 rounded-2xl overflow-hidden hover:border-indigo-500/40 hover:bg-white/10 transition-all duration-200"> <div class="w-full h-24 bg-gradient-to-br from-indigo-600/20 to-purple-600/20 flex items-center justify-center"> <svg class="w-8 h-8 text-white/20" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"/></svg> </div> <div class="p-4"> <p class="text-xs font-semibold text-indigo-400 uppercase tracking-wide mb-1.5">Hacker News</p> <p class="text-sm font-semibold text-white group-hover:text-indigo-300 leading-snug line-clamp-2 transition-colors">Smalltalk メソッドとしての Unix 実行可能ファイル [ビデオ]</p> <p class="text-xs text-white/40 mt-2">Apr 17, 2026</p> </div> </a> <a href="/ja/blog/even-cat-readmetxt-is-not-safe" class="group block bg-white/5 border border-white/10 rounded-2xl overflow-hidden hover:border-indigo-500/40 hover:bg-white/10 transition-all duration-200"> <div class="w-full h-24 bg-gradient-to-br from-indigo-600/20 to-purple-600/20 flex items-center justify-center"> <svg class="w-8 h-8 text-white/20" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"/></svg> </div> <div class="p-4"> <p class="text-xs font-semibold text-indigo-400 uppercase tracking-wide mb-1.5">Hacker News</p> <p class="text-sm font-semibold text-white group-hover:text-indigo-300 leading-snug line-clamp-2 transition-colors">「cat readme.txt」さえ安全ではない</p> <p class="text-xs text-white/40 mt-2">Apr 17, 2026</p> </div> </a> </div> </div> <section class="py-16 bg-gradient-to-br from-indigo-600 to-purple-700 text-white"> <div class="max-w-3xl mx-auto text-center px-4"> <p class="text-sm font-semibold uppercase tracking-widest text-indigo-200 mb-3">行動を起こす準備はできていますか?</p> <h2 class="text-3xl font-bold mb-4">今日からMewayz無料トライアルを開始</h2> <p class="text-lg text-indigo-100 mb-8">オールインワンビジネスプラットフォーム。クレジットカード不要。</p> <a href="/ja/free-trial?utm_source=blog&utm_medium=bottom_section_cta&utm_content=ja%2Fblog%2Fadvanced-aerial-robotics-made-simple" onclick="if(typeof gtag==='function') gtag('event','free_trial_start',{event_category:'blog_cta',page:'ja/blog/advanced-aerial-robotics-made-simple'});if(typeof plausible==='function') plausible('BlogCTA');" class="inline-block bg-white text-indigo-700 font-bold px-8 py-4 rounded-xl text-lg shadow-lg hover:bg-indigo-50 transition-colors"> 無料で始める → </a> <p class="mt-4 text-sm text-indigo-200">14日間無料トライアル · クレジットカード不要 · いつでもキャンセル可能</p> </div> </section> <script> (function(){ var fired={}, engFired={}; function onScroll(){ var h=document.documentElement.scrollHeight-window.innerHeight; if(h<=0)return; var pct=Math.round((window.scrollY/h)*100); [25,50,75,90].forEach(function(t){ if(pct>=t&&!fired[t]){ fired[t]=true; if(typeof gtag!=='undefined') gtag('event','scroll_depth',{percent:t,event_category:'Blog_Engagement',event_label:'advanced-aerial-robotics-made-simple'}); if(typeof plausible!=='undefined') plausible('Blog_Scroll',{props:{depth:t+'%',slug:'advanced-aerial-robotics-made-simple'}}); } }); } window.addEventListener('scroll',onScroll,{passive:true}); [30,60,120].forEach(function(s){ setTimeout(function(){ if(!engFired[s]){ engFired[s]=true; if(typeof gtag!=='undefined') gtag('event','engaged_'+s+'s',{event_category:'Blog_Engagement',event_label:'advanced-aerial-robotics-made-simple'}); } },s*1000); }); })(); </script> </main> <footer class="border-t border-white/10 py-16"> <div class="mx-auto max-w-7xl px-6"> <div class="grid grid-cols-2 md:grid-cols-3 lg:grid-cols-6 gap-8 mb-12"> <div> <h3 class="text-white font-semibold mb-4">ソリューション</h3> <ul class="space-y-4"> <li><a href="https://blitzmining.net/for/agencies" class="text-white hover:text-white/90 transition-colors text-sm min-h-[44px] min-w-[44px] flex items-center py-2" aria-label="エージェンシー向けMewayz">For Agencies</a></li> <li><a href="https://blitzmining.net/for/freelancers" class="text-white hover:text-white/90 transition-colors text-sm min-h-[44px] min-w-[44px] flex items-center py-2" aria-label="フリーランサー向けMewayz">For Freelancers</a></li> <li><a href="https://blitzmining.net/for/small-business" class="text-white hover:text-white/90 transition-colors text-sm min-h-[44px] min-w-[44px] flex items-center py-2" aria-label="中小企業向けMewayz">For Small Business</a></li> <li><a href="/ja/solutions" class="text-white hover:text-white/90 transition-colors text-sm min-h-[44px] min-w-[44px] flex items-center py-2" aria-label="すべてのソリューション">すべてのソリューション</a></li> <li><a href="/ja/white-label" class="text-white hover:text-white/90 transition-colors text-sm min-h-[44px] min-w-[44px] flex items-center py-2" aria-label="ホワイトレーベルリセラーソリューション">ホワイトラベル</a></li> </ul> </div> <div> <h3 class="text-white font-semibold mb-4">製品</h3> <ul class="space-y-4"> <li><a href="/ja/features" class="text-white hover:text-white/90 transition-colors text-sm min-h-[44px] min-w-[44px] flex items-center py-2" aria-label="すべての機能を表示">特徴</a></li> <li><a href="/ja/modules" class="text-white hover:text-white/90 transition-colors text-sm min-h-[44px] min-w-[44px] flex items-center py-2" aria-label="モジュールを探索する">モジュール</a></li> <li><a href="/ja/integrations" class="text-white hover:text-white/90 transition-colors text-sm min-h-[44px] min-w-[44px] flex items-center py-2" aria-label="統合を表示する">統合</a></li> <li><a href="/ja/solutions" class="text-white hover:text-white/90 transition-colors text-sm min-h-[44px] min-w-[44px] flex items-center py-2" aria-label="ソリューションを探索する">ソリューション</a></li> <li><a href="/ja/pricing" class="text-white hover:text-white/90 transition-colors text-sm min-h-[44px] min-w-[44px] flex items-center py-2" aria-label="料金プランを見る">価格設定</a></li> <li><a href="/ja/compare" class="text-white hover:text-white/90 transition-colors text-sm min-h-[44px] min-w-[44px] flex items-center py-2" aria-label="プランを比較する">比較する</a></li> <li><a href="/ja/how-it-works" class="text-white hover:text-white/90 transition-colors text-sm min-h-[44px] min-w-[44px] flex items-center py-2" aria-label="仕組みを学ぶ">仕組み</a></li> <li><a href="https://app.mewayz.com/demo" class="text-white hover:text-white/90 transition-colors text-sm min-h-[44px] min-w-[44px] flex items-center py-2" aria-label="ライブデモを試す">ライブデモ</a></li> </ul> </div> <div> <h3 class="text-white font-semibold mb-4">コアプラットフォーム</h3> <ul class="space-y-4"> <li><a href="/ja/free-website-builder" class="text-white hover:text-white/90 transition-colors text-sm min-h-[44px] min-w-[44px] flex items-center py-2" aria-label="当社のウェブサイトビルダーについて学ぶ">ウェブサイトビルダー</a></li> <li><a href="/ja/free-link-in-bio" class="text-white hover:text-white/90 transition-colors text-sm min-h-[44px] min-w-[44px] flex items-center py-2" aria-label="バイオツールのリンクについてご覧ください">略歴内のリンク</a></li> <li><a href="/ja/online-course-platform" class="text-white hover:text-white/90 transition-colors text-sm min-h-[44px] min-w-[44px] flex items-center py-2" aria-label="私たちのコースプラットフォームについて学ぶ">コースプラットフォーム</a></li> <li><a href="/ja/online-store-builder" class="text-white hover:text-white/90 transition-colors text-sm min-h-[44px] min-w-[44px] flex items-center py-2" aria-label="当社の e コマース ストア ビルダーについて学ぶ">Eコマースストア</a></li> <li><a href="/ja/creator-platform" class="text-white hover:text-white/90 transition-colors text-sm min-h-[44px] min-w-[44px] flex items-center py-2" aria-label="ビジネスプラットフォームについて学ぶ">ビジネスプラットフォーム</a></li> <li><a href="/ja/creators" class="text-white hover:text-white/90 transition-colors text-sm min-h-[44px] min-w-[44px] flex items-center py-2" aria-label="クリエイター向けの Mewayz を探索する">クリエイター</a></li> </ul> </div> <div> <h3 class="text-white font-semibold mb-4">リソース</h3> <ul class="space-y-4"> <li><a href="https://app.mewayz.com/document/help-center" class="text-white hover:text-white/90 transition-colors text-sm min-h-[44px] min-w-[44px] flex items-center py-2" aria-label="ヘルプセンターを開く" rel="noopener noreferrer">ヘルプセンター</a></li> <li><a href="/ja/faq" class="text-white hover:text-white/90 transition-colors text-sm min-h-[44px] min-w-[44px] flex items-center py-2" aria-label="よくある質問を見る">よくある質問</a></li> <li><a href="/ja/knowledge-base" class="text-white hover:text-white/90 transition-colors text-sm min-h-[44px] min-w-[44px] flex items-center py-2" aria-label="ナレッジベースを参照してください">ナレッジベース</a></li> <li><a href="/ja/blog" class="text-white hover:text-white/90 transition-colors text-sm min-h-[44px] min-w-[44px] flex items-center py-2" aria-label="ブログ記事を読む">ブログ</a></li> <li><a href="/ja/case-studies" class="text-white hover:text-white/90 transition-colors text-sm min-h-[44px] min-w-[44px] flex items-center py-2" aria-label="事例紹介を見る">ケーススタディ</a></li> <li><a href="/ja/testimonials" class="text-white hover:text-white/90 transition-colors text-sm min-h-[44px] min-w-[44px] flex items-center py-2" aria-label="顧客の声を読む">お客様の声</a></li> <li><a href="/ja/roi-calculator" class="text-white hover:text-white/90 transition-colors text-sm min-h-[44px] min-w-[44px] flex items-center py-2" aria-label="ROIを計算">ROI計算機</a></li> <li><a href="/ja/changelog" class="text-white hover:text-white/90 transition-colors text-sm min-h-[44px] min-w-[44px] flex items-center py-2" aria-label="製品変更履歴を表示">変更履歴</a></li> <li><a href="/ja/security" class="text-white hover:text-white/90 transition-colors text-sm min-h-[44px] min-w-[44px] flex items-center py-2" aria-label="当社のセキュリティ対策について詳しく見る">安全</a></li> </ul> </div> <div> <h3 class="text-white font-semibold mb-4">会社</h3> <ul class="space-y-4"> <li><a href="/ja/about" class="text-white hover:text-white/90 transition-colors text-sm min-h-[44px] min-w-[44px] flex items-center py-2" aria-label="Mewayzについて学ぶ">について</a></li> <li><a href="/ja/contact" class="text-white hover:text-white/90 transition-colors text-sm min-h-[44px] min-w-[44px] flex items-center py-2" aria-label="私たちのチームに連絡してください">接触</a></li> <li><a href="/ja/white-label-partners" class="text-white hover:text-white/90 transition-colors text-sm min-h-[44px] min-w-[44px] flex items-center py-2" aria-label="ホワイトラベルパートナーシップについて学ぶ">ホワイトラベルパートナー</a></li> <li><a href="https://blitzmining.net/white-label-academy" class="text-white hover:text-white/90 transition-colors text-sm min-h-[44px] min-w-[44px] flex items-center py-2" aria-label="Free reseller training academy">WL Partner Academy</a></li> <li><a href="https://blitzmining.net/affiliate" class="text-white hover:text-white/90 transition-colors text-sm min-h-[44px] min-w-[44px] flex items-center py-2" aria-label="アフィリエイトプログラムに参加">Affiliates</a></li> <li><a href="https://blitzmining.net/enterprise" class="text-white hover:text-white/90 transition-colors text-sm min-h-[44px] min-w-[44px] flex items-center py-2" aria-label="エンタープライズプラン">企業</a></li> <li><a href="https://app.mewayz.com/referrals" class="text-white hover:text-white/90 transition-colors text-sm min-h-[44px] min-w-[44px] flex items-center py-2" aria-label="友人を紹介して無料月数を獲得">紹介と報酬</a></li> <li><a href="https://blitzmining.net/careers" class="text-white hover:text-white/90 transition-colors text-sm min-h-[44px] min-w-[44px] flex items-center py-2" aria-label="Mewayzの空いているポジションを表示">採用情報</a></li> </ul> </div> <div> <div class="flex items-center gap-2 mb-4"> <img src="/media/site/logo/rMJeuI5oYw0Ip5Qk8A019o9u9Pm3TIdTARC1R5PH.png" alt="Mewayz Logo" class="h-8 w-8 rounded-lg object-cover" loading="lazy" width="32" height="32"> <span class="text-xl font-bold text-white whitespace-nowrap" style="font-family: 'Airstrike', sans-serif; letter-spacing: 1px;">MEWAYZ</span> </div> <p class="text-white text-sm mb-4"> Mewayz:オールインワンビジネスプラットフォーム — CRM、請求書、人事、ヘルプデスク、さらに144+のモジュールが1か所に。 </p> <ul class="space-y-4"> <li><a href="/ja/privacy" class="text-white hover:text-white/90 transition-colors text-sm min-h-[44px] min-w-[44px] flex items-center py-2" aria-label="当社のプライバシーポリシーを読む">プライバシーポリシー</a></li> <li><a href="/ja/terms" class="text-white hover:text-white/90 transition-colors text-sm min-h-[44px] min-w-[44px] flex items-center py-2" aria-label="利用規約をお読みください">利用規約</a></li> <li><a href="/ja/cookie-policy" class="text-white hover:text-white/90 transition-colors text-sm min-h-[44px] min-w-[44px] flex items-center py-2" aria-label="Cookieポリシーを読む">Cookieポリシー</a></li> <li><a href="/ja/refund-policy" class="text-white hover:text-white/90 transition-colors text-sm min-h-[44px] min-w-[44px] flex items-center py-2" aria-label="返金ポリシーを読む">返金ポリシー</a></li> <li><a href="/ja/acceptable-use" class="text-white hover:text-white/90 transition-colors text-sm min-h-[44px] min-w-[44px] flex items-center py-2" aria-label="利用ポリシーを読む">許容可能な使用</a></li> <li><a href="/ja/sla" class="text-white hover:text-white/90 transition-colors text-sm min-h-[44px] min-w-[44px] flex items-center py-2" aria-label="サービスレベル契約を読む">SLA</a></li> <li><a href="#" onclick="localStorage.removeItem('cookie_consent'); location.reload(); return false;" class="text-white hover:text-white/90 transition-colors text-sm min-h-[44px] min-w-[44px] flex items-center py-2" aria-label="クッキーの設定を管理">クッキーの設定</a></li> </ul> </div> </div> <div class="border-t border-white/10 pt-12 pb-10 text-center"> <p class="text-white/50 text-xs uppercase tracking-widest mb-3 font-medium">ツールスタックをシンプルにする準備はできていますか?</p> <h3 class="text-white text-2xl md:text-3xl font-bold mb-2">10のツールを1つのプラットフォームで置き換え</h3> <p class="text-white/60 text-sm mb-6">クレジットカード不要。設定費用なし。2分で開始。</p> <div class="flex flex-col sm:flex-row gap-3 justify-center items-center"> <a href="/ja/free-trial" class="inline-flex items-center gap-2 px-6 py-3 rounded-full bg-white text-black font-semibold text-sm hover:bg-gray-100 transition-colors"> 無料で始める <i class="ph ph-arrow-right" style="font-size: 16px;" aria-hidden="true"></i> </a> <a href="https://blitzmining.net/ja/demo" class="inline-flex items-center gap-2 px-6 py-3 rounded-full border border-white/20 text-white text-sm hover:bg-white/10 transition-colors"> <i class="ph ph-play-circle" style="font-size: 16px;" aria-hidden="true"></i> 2分間のデモを見る </a> </div> <p class="text-white/30 text-xs mt-4">30-day money-back guarantee · Cancel anytime</p> </div> <div class="border-t border-white/10 pt-8 pb-8" x-data="{ email: '', submitted: false, error: '' }"> <div class="flex flex-col md:flex-row items-center justify-between gap-6"> <div> <h3 class="text-white font-semibold text-lg">常に最新情報を入手</h3> <p class="text-white/60 text-sm mt-1">ビジネスのヒント、製品の最新情報、成長戦略。スパムはありません。</p> </div> <div class="w-full md:w-auto"> <template x-if="!submitted"> <form @submit.prevent=" if (!email || !email.includes('@')) { error = '有効な電子メールを入力してください。'; return; } error = ''; fetch('/newsletter/subscribe', { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-CSRF-TOKEN': document.querySelector('meta[name=csrf-token]')?.content || '' }, body: JSON.stringify({ email: email, source: 'footer', page: window.location.pathname }) }).catch(() => {}); if (typeof gtag !== 'undefined') gtag('event', 'generate_lead', { event_category: 'Newsletter', event_label: 'footer' }); if (typeof fbq !== 'undefined') fbq('track', 'Lead', { content_name: 'footer_newsletter' }); if (typeof plausible !== 'undefined') plausible('Newsletter_Signup', { props: { source: 'footer' } }); submitted = true; " data-form-name="newsletter" class="flex gap-2"> <input x-model="email" type="email" placeholder="あなたのメールアドレス" aria-label="Email address for newsletter" class="px-4 py-2.5 rounded-xl bg-white/10 border border-white/20 text-white placeholder-white/40 text-sm focus:outline-none focus:ring-2 focus:ring-indigo-500 w-64" required> <button type="submit" class="px-5 py-2.5 rounded-xl bg-indigo-600 hover:bg-indigo-500 text-white font-semibold text-sm transition-colors whitespace-nowrap">購読する</button> </form> </template> <template x-if="submitted"> <p class="text-green-400 text-sm font-medium flex items-center gap-2"> <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"/></svg> 購読されています!受信箱を確認してください。 </p> </template> <p x-show="error" x-text="error" class="text-xs text-red-400 mt-1"></p> </div> </div> </div> <div class="border-t border-white/10 pt-6 pb-6"> <div class="flex flex-col sm:flex-row items-center justify-between gap-4"> <div> <p class="text-white font-medium text-sm">Mewayzがお好きですか?紹介して報酬を獲得</p> <p class="text-white/50 text-xs mt-0.5">紹介したビジネスごとに報酬を獲得。</p> </div> <a href="https://app.mewayz.com/referrals?utm_source=footer&utm_medium=referral_cta" class="px-5 py-2.5 rounded-xl border border-white/20 text-white text-sm font-medium hover:bg-white/10 transition-colors whitespace-nowrap"> Join Referral Program </a> </div> </div> <div class="border-t border-white/10 pt-8"> <div class="flex flex-col md:flex-row justify-between items-center gap-4"> <p class="text-white text-sm">© 2026 Mewayz Global, Corp. · Delaware C Corporation · EIN 38-4374855 · 無断転載を禁じます。</p> <div class="flex items-center gap-4"> <a href="https://www.tiktok.com/@mewayz.global" target="_blank" rel="noopener noreferrer" class="text-white/60 hover:text-white transition-colors min-h-[44px] min-w-[44px] flex items-center justify-center" aria-label="TikTok"> <i class="ph ph-tiktok-logo" style="font-size: 20px;" aria-hidden="true"></i> </a> <a href="https://www.instagram.com/mewayz.global/" target="_blank" rel="noopener noreferrer" class="text-white/60 hover:text-white transition-colors min-h-[44px] min-w-[44px] flex items-center justify-center" aria-label="Instagram"> <i class="ph ph-instagram-logo" style="font-size: 20px;" aria-hidden="true"></i> </a> </div> <div class="flex gap-6 flex-wrap justify-center"> <a href="/ja/sitemap" class="text-white hover:text-white/90 transition-colors text-sm min-h-[44px] min-w-[44px] flex items-center py-2" aria-label="サイトマップを見る">サイトマップ</a> <a href="/ja/search" class="text-white hover:text-white/90 transition-colors text-sm min-h-[44px] min-w-[44px] flex items-center py-2" aria-label="ウェブサイトを検索する">検索</a> <a href="https://blitzmining.net/ja/rss.xml" class="text-white hover:text-white/90 transition-colors text-sm min-h-[44px] min-w-[44px] flex items-center py-2" aria-label="RSSフィードを購読する">RSSフィード</a> </div> </div> </div> </div> </footer> </div> <div x-data="languageModal" class="language-modal-container" x-cloak> <div class="language-modal-overlay" @click="close()" x-show="open" x-transition x-cloak style="display: none;"></div> <div class="language-modal" x-show="open" x-transition x-cloak style="display: none;"> <div class="language-modal-header"> <h3>言語を変更する</h3> <button @click="close()" class="language-modal-close" aria-label="近い"> <i class="ph ph-x"></i> </button> </div> <div class="language-modal-content"> <p class="language-modal-description">希望の言語を選択してください</p> <div class="language-list"> <a href="https://blitzmining.net/switch-language/en?redirect=blog%2Fadvanced-aerial-robotics-made-simple" class="language-item " data-locale="en"> <span class="language-name">English</span> <span class="language-code">EN</span> </a> <a href="https://blitzmining.net/switch-language/th?redirect=blog%2Fadvanced-aerial-robotics-made-simple" class="language-item " data-locale="th"> <span class="language-name">ไทย</span> <span class="language-code">TH</span> </a> <a href="https://blitzmining.net/switch-language/nl?redirect=blog%2Fadvanced-aerial-robotics-made-simple" class="language-item " data-locale="nl"> <span class="language-name">Nederlands</span> <span class="language-code">NL</span> </a> <a href="https://blitzmining.net/switch-language/de?redirect=blog%2Fadvanced-aerial-robotics-made-simple" class="language-item " data-locale="de"> <span class="language-name">Deutsch</span> <span class="language-code">DE</span> </a> <a href="https://blitzmining.net/switch-language/fr?redirect=blog%2Fadvanced-aerial-robotics-made-simple" class="language-item " data-locale="fr"> <span class="language-name">Français</span> <span class="language-code">FR</span> </a> <a href="https://blitzmining.net/switch-language/es?redirect=blog%2Fadvanced-aerial-robotics-made-simple" class="language-item " data-locale="es"> <span class="language-name">Español</span> <span class="language-code">ES</span> </a> <a href="https://blitzmining.net/switch-language/it?redirect=blog%2Fadvanced-aerial-robotics-made-simple" class="language-item " data-locale="it"> <span class="language-name">Italiano</span> <span class="language-code">IT</span> </a> <a href="https://blitzmining.net/switch-language/pt?redirect=blog%2Fadvanced-aerial-robotics-made-simple" class="language-item " data-locale="pt"> <span class="language-name">Português</span> <span class="language-code">PT</span> </a> <a href="https://blitzmining.net/switch-language/ja?redirect=blog%2Fadvanced-aerial-robotics-made-simple" class="language-item active" data-locale="ja"> <span class="language-name">日本語</span> <span class="language-code">JA</span> <i class="ph ph-check language-check"></i> </a> <a href="https://blitzmining.net/switch-language/ko?redirect=blog%2Fadvanced-aerial-robotics-made-simple" class="language-item " data-locale="ko"> <span class="language-name">한국어</span> <span class="language-code">KO</span> </a> <a href="https://blitzmining.net/switch-language/zh?redirect=blog%2Fadvanced-aerial-robotics-made-simple" class="language-item " data-locale="zh"> <span class="language-name">中文</span> <span class="language-code">ZH</span> </a> <a href="https://blitzmining.net/switch-language/ar?redirect=blog%2Fadvanced-aerial-robotics-made-simple" class="language-item " data-locale="ar"> <span class="language-name">العربية</span> <span class="language-code">AR</span> </a> <a href="https://blitzmining.net/switch-language/hi?redirect=blog%2Fadvanced-aerial-robotics-made-simple" class="language-item " data-locale="hi"> <span class="language-name">हिन्दी</span> <span class="language-code">HI</span> </a> <a href="https://blitzmining.net/switch-language/id?redirect=blog%2Fadvanced-aerial-robotics-made-simple" class="language-item " data-locale="id"> <span class="language-name">Bahasa Indonesia</span> <span class="language-code">ID</span> </a> <a href="https://blitzmining.net/switch-language/vi?redirect=blog%2Fadvanced-aerial-robotics-made-simple" class="language-item " data-locale="vi"> <span class="language-name">Tiếng Việt</span> <span class="language-code">VI</span> </a> <a href="https://blitzmining.net/switch-language/tr?redirect=blog%2Fadvanced-aerial-robotics-made-simple" class="language-item " data-locale="tr"> <span class="language-name">Türkçe</span> <span class="language-code">TR</span> </a> <a href="https://blitzmining.net/switch-language/pl?redirect=blog%2Fadvanced-aerial-robotics-made-simple" class="language-item " data-locale="pl"> <span class="language-name">Polski</span> <span class="language-code">PL</span> </a> <a href="https://blitzmining.net/switch-language/ru?redirect=blog%2Fadvanced-aerial-robotics-made-simple" class="language-item " data-locale="ru"> <span class="language-name">Русский</span> <span class="language-code">RU</span> </a> </div> </div> </div> </div> <style> .language-modal-container { position: relative; z-index: 9999; } .language-modal-overlay { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0, 0, 0, 0.5); backdrop-filter: blur(4px); z-index: 9998; } .language-modal { position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); background: white; border-radius: 12px; box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04); max-width: 500px; width: 90%; max-height: 80vh; overflow: hidden; z-index: 9999; display: flex; flex-direction: column; } .language-modal-header { display: flex; justify-content: space-between; align-items: center; padding: 20px 24px; border-bottom: 1px solid #e5e7eb; } .language-modal-header h3 { margin: 0; font-size: 1.25rem; font-weight: 700; color: #1a1f36; } .language-modal-close { background: none; border: none; font-size: 24px; color: #64748b; cursor: pointer; padding: 4px; display: flex; align-items: center; justify-content: center; border-radius: 4px; transition: all 0.2s; } .language-modal-close:hover { background: #f1f5f9; color: #1a1f36; } .language-modal-content { padding: 24px; overflow-y: auto; flex: 1; } .language-modal-description { margin: 0 0 20px 0; color: #64748b; font-size: 14px; } .language-list { display: flex; flex-direction: column; gap: 8px; } .language-item { display: flex; align-items: center; justify-content: space-between; padding: 12px 16px; border: 2px solid #e5e7eb; border-radius: 8px; text-decoration: none; color: #1a1f36; transition: all 0.2s; background: white; } .language-item:hover { border-color: #3b82f6; background: #f8fafc; transform: translateY(-1px); box-shadow: 0 4px 6px rgba(0, 0, 0, 0.05); } .language-item.active { border-color: #3b82f6; background: #eff6ff; } .language-name { font-weight: 500; font-size: 15px; } .language-code { font-size: 12px; color: #64748b; font-weight: 600; text-transform: uppercase; } .language-check { color: #3b82f6; font-size: 20px; } [x-cloak] { display: none !important; } </style> <script> (function registerLanguageModal() { function register() { if (!window.Alpine || typeof window.Alpine.data !== 'function') { return; } // Avoid re-registering the same Alpine component. if (window.__mewayzLanguageModalRegistered) { return; } window.__mewayzLanguageModalRegistered = true; Alpine.data('languageModal', () => ({ open: false, previousBodyOverflow: null, init() { // Listen for open language modal event (multiple event types for compatibility) window.addEventListener('open-language-modal', () => { this.openModal(); }); // Listen for open-modal event with detail 'language-modal-guest' window.addEventListener('open-modal', (e) => { if (e.detail === 'language-modal-guest' || e.detail === 'language-modal') { this.openModal(); } }); // Listen for close modal event window.addEventListener('close-modal', (e) => { if (!e.detail || e.detail === 'language-modal-guest' || e.detail === 'language-modal') { this.close(); } }); // Close on Escape key document.addEventListener('keydown', (e) => { if (e.key === 'Escape' && this.open) { this.close(); } }); }, openModal() { if (this.open) { return; } this.open = true; this.previousBodyOverflow = document.body.style.overflow; document.body.style.overflow = 'hidden'; }, close() { this.open = false; document.body.style.overflow = this.previousBodyOverflow ?? ''; this.previousBodyOverflow = null; } })); } if (window.Alpine) { register(); } else { document.addEventListener('alpine:init', register); } })(); // Update language button to show current language (function() { const languageNames = {"en":"English","th":"\u0e44\u0e17\u0e22","nl":"Nederlands","de":"Deutsch","fr":"Fran\u00e7ais","es":"Espa\u00f1ol","it":"Italiano","pt":"Portugu\u00eas","ja":"\u65e5\u672c\u8a9e","ko":"\ud55c\uad6d\uc5b4","zh":"\u4e2d\u6587","ar":"\u0627\u0644\u0639\u0631\u0628\u064a\u0629","hi":"\u0939\u093f\u0928\u094d\u0926\u0940","id":"Bahasa Indonesia","vi":"Ti\u1ebfng Vi\u1ec7t","tr":"T\u00fcrk\u00e7e","pl":"Polski","ru":"\u0420\u0443\u0441\u0441\u043a\u0438\u0439"}; const availableLocales = Object.keys(languageNames); const defaultLanguageName = 'English'; function getLocaleFromPath() { const path = window.location.pathname; const pathParts = path.split('/').filter(p => p); if (pathParts.length > 0 && availableLocales.includes(pathParts[0])) { return pathParts[0]; } return null; } function updateLanguageButton() { const btn = document.getElementById('language-switcher-btn'); const nameSpan = document.getElementById('current-language-name'); if (btn && nameSpan) { // Try to get locale from URL first, then from data attribute, then default to 'en' let currentLocale = getLocaleFromPath() || btn.getAttribute('data-current-locale') || 'en'; const languageName = languageNames[currentLocale] || defaultLanguageName; nameSpan.textContent = languageName; btn.setAttribute('data-current-locale', currentLocale); } } // Update on page load if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', updateLanguageButton); } else { updateLanguageButton(); } // Update after navigation (for SPA-like behavior) window.addEventListener('popstate', updateLanguageButton); // Also update periodically in case URL changes without navigation event let lastPath = window.location.pathname; setInterval(() => { if (window.location.pathname !== lastPath) { lastPath = window.location.pathname; updateLanguageButton(); } }, 500); })(); </script> <div x-data="watchDemoModal" x-cloak> <div x-show="open" x-transition:enter="transition ease-out duration-300" x-transition:enter-start="opacity-0" x-transition:enter-end="opacity-100" x-transition:leave="transition ease-in duration-200" x-transition:leave-start="opacity-100" x-transition:leave-end="opacity-0" @click="close()" class="fixed inset-0 bg-black/80 backdrop-blur-sm z-[418]" style="display: none;" ></div> <div x-show="open" x-transition:enter="transition ease-out duration-300" x-transition:enter-start="opacity-0 scale-95" x-transition:enter-end="opacity-100 scale-100" x-transition:leave="transition ease-in duration-200" x-transition:leave-start="opacity-100 scale-100" x-transition:leave-end="opacity-0 scale-95" role="dialog" aria-modal="true" aria-labelledby="watch-demo-title" @keydown.escape.window="if (open) close()" class="fixed top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[90%] max-w-3xl z-[420] rounded-3xl border border-white/10 bg-gradient-to-b from-gray-900/95 to-black/98 backdrop-blur-xl shadow-2xl overflow-hidden" style="display: none;" > <div class="flex justify-between items-center p-6 border-b border-white/10 bg-gradient-to-b from-blue-500/10 to-transparent"> <div class="flex items-center gap-3"> <div class="h-12 w-12 rounded-xl bg-gradient-to-br from-blue-500 to-purple-600 flex items-center justify-center"> <i class="ph ph-play text-white" style="font-size: 24px;"></i> </div> <div> <h3 id="watch-demo-title" class="text-xl font-bold text-white text-center">Mewayzを試す — ライブ</h3> <p class="text-white/70 text-sm">サンプルデータ付きの実際のサンドボックスを入手 — サインアップ不要</p> </div> </div> <button type="button" @click="close()" class="bg-white/10 border border-white/20 rounded-lg w-9 h-9 flex items-center justify-center text-white/80 hover:bg-white/20 hover:text-white transition-all" aria-label="近い"> <i class="ph ph-x" style="font-size: 20px;"></i> </button> </div> <div class="p-6 md:p-8"> <p class="text-white/80 text-center text-sm mb-6">144+ modules across 8 categories — here's what you get from day one.</p> <div class="grid grid-cols-2 sm:grid-cols-4 gap-3 mb-6"> <div class="flex flex-col items-center gap-2 p-3 rounded-xl border border-white/10 bg-white/5"> <i class="ph ph-storefront text-blue-400" style="font-size: 24px;" aria-hidden="true"></i> <span class="text-white/90 text-xs font-medium text-center">オンラインストア</span> </div> <div class="flex flex-col items-center gap-2 p-3 rounded-xl border border-white/10 bg-white/5"> <i class="ph ph-graduation-cap text-blue-400" style="font-size: 24px;" aria-hidden="true"></i> <span class="text-white/90 text-xs font-medium text-center">コース</span> </div> <div class="flex flex-col items-center gap-2 p-3 rounded-xl border border-white/10 bg-white/5"> <i class="ph ph-calendar-check text-blue-400" style="font-size: 24px;" aria-hidden="true"></i> <span class="text-white/90 text-xs font-medium text-center">予約</span> </div> <div class="flex flex-col items-center gap-2 p-3 rounded-xl border border-white/10 bg-white/5"> <i class="ph ph-currency-dollar text-blue-400" style="font-size: 24px;" aria-hidden="true"></i> <span class="text-white/90 text-xs font-medium text-center">請求書発行</span> </div> <div class="flex flex-col items-center gap-2 p-3 rounded-xl border border-white/10 bg-white/5"> <i class="ph ph-users-three text-blue-400" style="font-size: 24px;" aria-hidden="true"></i> <span class="text-white/90 text-xs font-medium text-center">CRM</span> </div> <div class="flex flex-col items-center gap-2 p-3 rounded-xl border border-white/10 bg-white/5"> <i class="ph ph-chart-line-up text-blue-400" style="font-size: 24px;" aria-hidden="true"></i> <span class="text-white/90 text-xs font-medium text-center">分析</span> </div> <div class="flex flex-col items-center gap-2 p-3 rounded-xl border border-white/10 bg-white/5"> <i class="ph ph-robot text-blue-400" style="font-size: 24px;" aria-hidden="true"></i> <span class="text-white/90 text-xs font-medium text-center">AI ワークフロー</span> </div> <div class="flex flex-col items-center gap-2 p-3 rounded-xl border border-white/10 bg-white/5"> <i class="ph ph-link text-blue-400" style="font-size: 24px;" aria-hidden="true"></i> <span class="text-white/90 text-xs font-medium text-center">リンクインバイオ</span> </div> </div> <div class="rounded-xl border border-blue-500/20 bg-blue-500/5 p-5 mb-6"> <div class="flex items-start gap-3"> <i class="ph ph-game-controller text-blue-400 mt-0.5" style="font-size: 22px;" aria-hidden="true"></i> <div> <p class="text-white font-semibold text-sm mb-1">インタラクティブサンドボックス — サインアップ不要</p> <p class="text-white/60 text-xs mb-3">Get a fully functional environment with sample data. Explore CRM, invoicing, courses, and all 144+ modules. Your sandbox stays live for 24 hours.</p> <a href="https://app.mewayz.com/demo" class="inline-flex items-center gap-2 px-6 py-3 rounded-full bg-white text-black font-semibold text-sm hover:bg-gray-100 transition-all shadow-lg shadow-white/20" @click="close()"> <i class="ph ph-play-circle" style="font-size: 18px;" aria-hidden="true"></i> ライブデモを開始 </a> </div> </div> </div> <div class="flex flex-col sm:flex-row gap-3 justify-center"> <a href="/ja/free-trial" class="inline-flex items-center justify-center gap-2 px-8 py-4 rounded-full border border-white/20 bg-white/5 text-white font-semibold hover:bg-white/10 hover:border-white/30 transition-all"> 無料アカウントを開始 <i class="ph ph-arrow-right" style="font-size: 18px;" aria-hidden="true"></i> </a> <button type="button" @click="$dispatch('open-modal', 'schedule-demo-modal'); close()" class="inline-flex items-center justify-center gap-2 px-8 py-4 rounded-full border border-white/20 bg-white/5 text-white font-semibold hover:bg-white/10 hover:border-white/30 transition-all"> <i class="ph ph-calendar-check" style="font-size: 18px;" aria-hidden="true"></i> ライブ通話を予約 </button> </div> </div> </div> </div> <script> document.addEventListener('alpine:init', () => { Alpine.data('watchDemoModal', () => ({ open: false, init() { window.addEventListener('open-modal', (e) => { if (e.detail === 'watch-demo-modal') { this.open = true; document.body.style.overflow = 'hidden'; if (typeof gtag !== 'undefined') gtag('event', 'modal_open', { event_category: 'Modal', event_label: 'watch_demo' }); if (typeof plausible !== 'undefined') plausible('Modal_Open', { props: { modal: 'watch_demo' } }); } }); window.addEventListener('close-modal', (e) => { if (!e.detail || e.detail === 'watch-demo-modal') { this.close(); } }); document.addEventListener('keydown', (e) => { if (e.key === 'Escape' && this.open) { this.close(); } }); }, close() { this.open = false; document.body.style.overflow = ''; if (typeof gtag !== 'undefined') gtag('event', 'modal_close', { event_category: 'Modal', event_label: 'watch_demo' }); } })); }); </script> <div x-data="scheduleDemoModal" class="schedule-demo-modal-container"> <div class="schedule-demo-modal-overlay" @click="close()" x-show="open" x-transition:enter="transition ease-out duration-300" x-transition:enter-start="opacity-0" x-transition:enter-end="opacity-100" x-transition:leave="transition ease-in duration-200" x-transition:leave-start="opacity-100" x-transition:leave-end="opacity-0" style="display: none;"></div> <div class="schedule-demo-modal" role="dialog" aria-modal="true" aria-labelledby="schedule-demo-title" @keydown.escape.window="if (open) close()" x-show="open" x-transition:enter="transition ease-out duration-300" x-transition:enter-start="opacity-0 scale-95" x-transition:enter-end="opacity-100 scale-100" x-transition:leave="transition ease-in duration-200" x-transition:leave-start="opacity-100 scale-100" x-transition:leave-end="opacity-0 scale-95" x-cloak style="display: none;"> <div class="schedule-demo-modal-header"> <div class="flex items-center gap-3"> <div class="h-12 w-12 rounded-xl bg-gradient-to-br from-blue-500 to-purple-600 flex items-center justify-center"> <i class="ph ph-calendar-check text-white" style="font-size: 24px;"></i> </div> <div> <h3 id="schedule-demo-title" class="schedule-demo-modal-title">デモをスケジュールする</h3> <p class="schedule-demo-modal-subtitle">私たちのチームにパーソナライズされたデモを予約してください</p> </div> </div> <button type="button" @click="close()" class="schedule-demo-modal-close" aria-label="近い"> <i class="ph ph-x"></i> </button> </div> <div class="schedule-demo-modal-content"> <form @submit.prevent="submitForm()" class="schedule-demo-form"> <div class="schedule-demo-form-group"> <label for="demo-name" class="schedule-demo-label">フルネーム *</label> <input type="text" id="demo-name" x-model="formData.name" required class="schedule-demo-input" placeholder="フルネームを入力してください" > </div> <div class="schedule-demo-form-group"> <label for="demo-email" class="schedule-demo-label">電子メールアドレス *</label> <input type="email" id="demo-email" x-model="formData.email" required class="schedule-demo-input" placeholder="メールアドレスを入力してください" > </div> <div class="schedule-demo-form-group"> <label for="demo-company" class="schedule-demo-label">会社名</label> <input type="text" id="demo-company" x-model="formData.company" class="schedule-demo-input" placeholder="会社名を入力してください (オプション)" > </div> <div class="schedule-demo-form-group" x-data="{ showScheduling: false }"> <button type="button" @click="showScheduling = !showScheduling" class="text-sm text-blue-400 hover:text-blue-300 transition-colors flex items-center gap-1 mb-2"> <i class="ph" :class="showScheduling ? 'ph-caret-down' : 'ph-caret-right'" style="font-size: 14px;"></i> 希望時間を選択(オプション) </button> <div x-show="showScheduling" x-collapse class="space-y-4"> <div> <label for="demo-date" class="schedule-demo-label">希望日</label> <input type="date" id="demo-date" x-model="formData.date" min="2026-04-19" class="schedule-demo-input"> </div> <div> <label for="demo-time" class="schedule-demo-label">希望時間</label> <select id="demo-time" x-model="formData.time" class="schedule-demo-input"> <option value="">أي وقت يعمل</option> <option value="09:00">09:00 - 10:00</option> <option value="10:00">10:00 - 11:00</option> <option value="11:00">11:00 - 12:00</option> <option value="13:00">13:00 - 14:00</option> <option value="14:00">14:00 - 15:00</option> <option value="15:00">15:00 - 16:00</option> <option value="16:00">16:00 - 17:00</option> </select> </div> </div> <input type="hidden" x-model="formData.timezone"> </div> <div class="schedule-demo-form-group"> <label for="demo-message" class="schedule-demo-label">メッセージ</label> <textarea id="demo-message" x-model="formData.message" rows="4" class="schedule-demo-input" placeholder="デモで見たいものを教えてください (オプション)" ></textarea> </div> <div x-show="formSubmitted" class="schedule-demo-success"> <i class="ph ph-check-circle text-green-400" style="font-size: 24px;"></i> <p>ありがとう! We'll contact you soon to confirm your demo.</p> </div> <div x-show="formError" class="schedule-demo-error"> <i class="ph ph-warning-circle text-red-400" style="font-size: 24px;"></i> <p>何か問題が発生しました。もう一度お試しいただくか、直接お問い合わせください。</p> </div> <button type="submit" class="sr-only">デモのスケジュールを設定する</button> </form> </div> <div class="schedule-demo-modal-footer"> <div class="flex gap-4"> <button type="button" class="inline-flex items-center justify-center font-medium transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/20 disabled:pointer-events-none disabled:opacity-50 rounded-full group relative overflow-hidden whitespace-nowrap border border-white/20 bg-white/5 backdrop-blur-xl text-white hover:bg-white/10 hover:border-white/30 min-h-[44px] min-w-[44px] px-8 py-6 text-lg font-semibold flex-1" @click="close()"> <span class="relative z-10 flex items-center">キャンセル</span> <div class="absolute inset-0 -top-2 -bottom-2 bg-gradient-to-r from-transparent via-white/20 to-transparent skew-x-12 -translate-x-full group-hover:translate-x-full transition-transform duration-1000 ease-out"></div> </button> <button type="button" class="inline-flex items-center justify-center font-medium transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/20 disabled:pointer-events-none disabled:opacity-50 rounded-full group relative overflow-hidden whitespace-nowrap bg-white text-black hover:bg-gray-100 min-h-[44px] min-w-[44px] px-8 py-6 text-lg shadow-2xl shadow-white/25 font-semibold flex-1" @click="submitForm()" x-bind:disabled="submitting"> <span class="relative z-10 flex items-center"><span x-show="!submitting">デモのスケジュールを設定する</span> <span x-show="submitting" class="flex items-center gap-2"> <i class="ph ph-spinner animate-spin"></i> スケジュール設定中... </span></span> <div class="absolute inset-0 -top-2 -bottom-2 bg-gradient-to-r from-transparent via-white/20 to-transparent skew-x-12 -translate-x-full group-hover:translate-x-full transition-transform duration-1000 ease-out"></div> </button> </div> </div> </div> </div> <style> .schedule-demo-modal-container { position: relative; z-index: 350; } .schedule-demo-modal-overlay { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0, 0, 0, 0.8); backdrop-filter: blur(8px); z-index: 349; } .schedule-demo-modal { position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); background: linear-gradient(to bottom, rgba(17, 24, 39, 0.95), rgba(0, 0, 0, 0.98)); border: 1px solid rgba(255, 255, 255, 0.1); border-radius: 24px; box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.5), 0 0 0 1px rgba(255, 255, 255, 0.05); max-width: 600px; width: 90%; max-height: 90vh; overflow: hidden; z-index: 350; display: flex; flex-direction: column; backdrop-filter: blur(20px); } .schedule-demo-modal-header { display: flex; justify-content: space-between; align-items: center; padding: 24px; border-bottom: 1px solid rgba(255, 255, 255, 0.1); background: linear-gradient(to bottom, rgba(59, 130, 246, 0.1), transparent); } .schedule-demo-modal-title { margin: 0; font-size: 1.5rem; font-weight: 700; color: white; } .schedule-demo-modal-subtitle { margin: 4px 0 0 0; font-size: 0.875rem; color: rgba(255, 255, 255, 0.7); } .schedule-demo-modal-close { background: rgba(255, 255, 255, 0.1); border: 1px solid rgba(255, 255, 255, 0.2); font-size: 20px; color: rgba(255, 255, 255, 0.8); cursor: pointer; padding: 8px; display: flex; align-items: center; justify-content: center; border-radius: 8px; transition: all 0.2s; width: 36px; height: 36px; } .schedule-demo-modal-close:hover { background: rgba(255, 255, 255, 0.2); color: white; border-color: rgba(255, 255, 255, 0.3); } .schedule-demo-modal-content { padding: 24px; overflow-y: auto; flex: 1; } .schedule-demo-form { display: flex; flex-direction: column; gap: 20px; } .schedule-demo-form-group { display: flex; flex-direction: column; gap: 8px; } .schedule-demo-label { font-size: 0.875rem; font-weight: 500; color: rgba(255, 255, 255, 0.9); } .schedule-demo-input { width: 100%; padding: 12px 16px; background: rgba(255, 255, 255, 0.05); border: 1px solid rgba(255, 255, 255, 0.1); border-radius: 12px; color: white; font-size: 0.9375rem; transition: all 0.2s; } .schedule-demo-input:focus { outline: none; border-color: rgba(59, 130, 246, 0.5); background: rgba(255, 255, 255, 0.08); box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1); } .schedule-demo-input::placeholder { color: rgba(255, 255, 255, 0.4); } .schedule-demo-input option { background: #1a1f36; color: white; } .schedule-demo-success, .schedule-demo-error { display: flex; align-items: center; gap: 12px; padding: 16px; border-radius: 12px; margin-top: 8px; } .schedule-demo-success { background: rgba(34, 197, 94, 0.1); border: 1px solid rgba(34, 197, 94, 0.3); color: rgba(255, 255, 255, 0.9); } .schedule-demo-error { background: rgba(239, 68, 68, 0.1); border: 1px solid rgba(239, 68, 68, 0.3); color: rgba(255, 255, 255, 0.9); } .schedule-demo-modal-footer { padding: 24px; border-top: 1px solid rgba(255, 255, 255, 0.1); background: linear-gradient(to top, rgba(59, 130, 246, 0.05), transparent); } [x-cloak] { display: none !important; } </style> <script> document.addEventListener('alpine:init', () => { Alpine.data('scheduleDemoModal', () => ({ open: false, submitting: false, formSubmitted: false, formError: false, formData: { name: '', email: '', company: '', date: '', time: '', timezone: '', message: '', utm_source: '', page_context: '', vertical: '' }, init() { // Auto-detect user's timezone try { this.formData.timezone = Intl.DateTimeFormat().resolvedOptions().timeZone; } catch(e) {} // Capture UTM and page context const params = new URLSearchParams(window.location.search); this.formData.utm_source = params.get('utm_source') || ''; this.formData.page_context = window.location.pathname; const path = window.location.pathname.replace(/^\/[a-z]{2}\//, '/'); const verticalMatch = path.match(/\/(crm|invoicing|hr|helpdesk|inventory|projects|booking|analytics|proposals|social|marketing|email|contracts)/); this.formData.vertical = verticalMatch ? verticalMatch[1] : ''; // Listen for open schedule demo modal event window.addEventListener('open-modal', (e) => { if (e.detail === 'schedule-demo-modal') { this.open = true; document.body.style.overflow = 'hidden'; if (typeof gtag !== 'undefined') gtag('event', 'modal_open', { event_category: 'Modal', event_label: 'schedule_demo' }); if (typeof plausible !== 'undefined') plausible('Modal_Open', { props: { modal: 'schedule_demo' } }); } }); // Listen for close modal event window.addEventListener('close-modal', (e) => { if (!e.detail || e.detail === 'schedule-demo-modal') { this.close(); } }); // Close on Escape key document.addEventListener('keydown', (e) => { if (e.key === 'Escape' && this.open) { this.close(); } }); }, async submitForm() { this.submitting = true; this.formError = false; this.formSubmitted = false; try { const response = await fetch('/api/demo-request', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Accept': 'application/json', }, body: JSON.stringify(this.formData), }); if (!response.ok) throw new Error('Request failed'); this.formSubmitted = true; // Fire conversion events on successful demo booking try { if (typeof gtag !== 'undefined') { gtag('event', 'demo_request', { event_category: 'Lead', event_label: 'schedule_demo', value: 10, currency: 'USD' }); gtag('event', 'demo_request_submit', { event_category: 'Lead', event_label: 'schedule_demo' }); gtag('event', 'generate_lead', { event_category: 'Demo', event_label: 'schedule_demo', value: 10 }); gtag('event', 'conversion', { send_to: 'AW-17998096135/iMDQCIax7oMcEIfOlIZD', value: 10.0, currency: 'USD' }); } if (typeof plausible !== 'undefined') plausible('Demo_Request_Submit'); if (typeof plausible !== 'undefined') plausible('Demo_Booked', { props: { source: 'schedule_demo_modal' } }); if (typeof fbq !== 'undefined') fbq('track', 'Lead', { content_name: 'demo_booking' }); } catch(e) {} setTimeout(() => { this.close(); }, 3000); } catch (error) { this.formError = true; } finally { this.submitting = false; } }, close() { this.open = false; document.body.style.overflow = ''; if (typeof gtag !== 'undefined') gtag('event', 'modal_close', { event_category: 'Modal', event_label: 'schedule_demo' }); // Reset form after a delay to allow animation setTimeout(() => { var tz = this.formData.timezone; var utmSrc = this.formData.utm_source; var pageCtx = this.formData.page_context; var vert = this.formData.vertical; this.formData = { name: '', email: '', company: '', date: '', time: '', timezone: tz, message: '', utm_source: utmSrc, page_context: pageCtx, vertical: vert }; this.formSubmitted = false; this.formError = false; }, 300); } })); }); </script> <div x-data="contactModal" class="contact-modal-container"> <div class="contact-modal-overlay" @click="close()" x-show="open" x-transition:enter="transition ease-out duration-300" x-transition:enter-start="opacity-0" x-transition:enter-end="opacity-100" x-transition:leave="transition ease-in duration-200" x-transition:leave-start="opacity-100" x-transition:leave-end="opacity-0" style="display: none;"></div> <div class="contact-modal" x-show="open" x-transition:enter="transition ease-out duration-300" x-transition:enter-start="opacity-0 scale-95" x-transition:enter-end="opacity-100 scale-100" x-transition:leave="transition ease-in duration-200" x-transition:leave-start="opacity-100 scale-100" x-transition:leave-end="opacity-0 scale-95" x-cloak style="display: none;"> <div class="contact-modal-header"> <div class="flex items-center gap-3"> <div class="h-12 w-12 rounded-xl bg-gradient-to-br from-blue-500 to-purple-600 flex items-center justify-center"> <i class="ph ph-envelope text-white" style="font-size: 24px;"></i> </div> <div> <h3 class="contact-modal-title">お問い合わせ</h3> <p class="contact-modal-subtitle">私たちのチームに連絡してください</p> </div> </div> <button type="button" @click="close()" class="contact-modal-close" aria-label="近い"> <i class="ph ph-x"></i> </button> </div> <div class="contact-modal-content"> <form @submit.prevent="submitForm()" class="contact-form"> <div class="contact-form-group"> <label for="modal-contact-name" class="contact-label">フルネーム *</label> <input type="text" id="modal-contact-name" x-model="formData.name" required class="contact-input" placeholder="フルネームを入力してください" > </div> <div class="contact-form-group"> <label for="modal-contact-email" class="contact-label">電子メールアドレス *</label> <input type="email" id="modal-contact-email" x-model="formData.email" required class="contact-input" placeholder="メールアドレスを入力してください" > </div> <div class="contact-form-group"> <label for="modal-contact-subject" class="contact-label">主題 *</label> <select id="modal-contact-subject" x-model="formData.subject" required class="contact-input" > <option value="">件名を選択してください...</option> <option value="general">一般的なお問い合わせ</option> <option value="sales">販売とパートナーシップ</option> <option value="white-label">ホワイトラベルプログラム</option> <option value="support">サポート</option> <option value="career">キャリアの機会</option> <option value="other">他の</option> </select> </div> <div class="contact-form-group"> <label for="modal-contact-message" class="contact-label">メッセージ *</label> <textarea id="modal-contact-message" x-model="formData.message" rows="4" required class="contact-input" placeholder="メッセージを入力してください" ></textarea> </div> <div x-show="formSubmitted" class="contact-success"> <i class="ph ph-check-circle text-green-400" style="font-size: 24px;"></i> <p>ありがとう! We'll get back to you soon.</p> </div> <div x-show="formError" class="contact-error"> <i class="ph ph-warning-circle text-red-400" style="font-size: 24px;"></i> <p>何か問題が発生しました。もう一度お試しいただくか、直接お問い合わせください。</p> </div> <button type="submit" class="sr-only">メッセージを送信する</button> </form> </div> <div class="contact-modal-footer"> <div class="flex gap-4"> <button type="button" class="inline-flex items-center justify-center font-medium transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/20 disabled:pointer-events-none disabled:opacity-50 rounded-full group relative overflow-hidden whitespace-nowrap border border-white/20 bg-white/5 backdrop-blur-xl text-white hover:bg-white/10 hover:border-white/30 min-h-[44px] min-w-[44px] px-8 py-6 text-lg font-semibold flex-1" @click="close()"> <span class="relative z-10 flex items-center">キャンセル</span> <div class="absolute inset-0 -top-2 -bottom-2 bg-gradient-to-r from-transparent via-white/20 to-transparent skew-x-12 -translate-x-full group-hover:translate-x-full transition-transform duration-1000 ease-out"></div> </button> <button type="button" class="inline-flex items-center justify-center font-medium transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/20 disabled:pointer-events-none disabled:opacity-50 rounded-full group relative overflow-hidden whitespace-nowrap bg-white text-black hover:bg-gray-100 min-h-[44px] min-w-[44px] px-8 py-6 text-lg shadow-2xl shadow-white/25 font-semibold flex-1" @click="submitForm()" x-bind:disabled="submitting"> <span class="relative z-10 flex items-center"><span x-show="!submitting">メッセージを送信する</span> <span x-show="submitting" class="flex items-center gap-2"> <i class="ph ph-spinner animate-spin"></i> 送信中... </span></span> <div class="absolute inset-0 -top-2 -bottom-2 bg-gradient-to-r from-transparent via-white/20 to-transparent skew-x-12 -translate-x-full group-hover:translate-x-full transition-transform duration-1000 ease-out"></div> </button> </div> </div> </div> </div> <style> .contact-modal-container { position: relative; z-index: 9999; } .contact-modal-overlay { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0, 0, 0, 0.8); backdrop-filter: blur(8px); z-index: 9998; } .contact-modal { position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); background: linear-gradient(to bottom, rgba(17, 24, 39, 0.95), rgba(0, 0, 0, 0.98)); border: 1px solid rgba(255, 255, 255, 0.1); border-radius: 24px; box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.5), 0 0 0 1px rgba(255, 255, 255, 0.05); max-width: 600px; width: 90%; max-height: 90vh; overflow: hidden; z-index: 9999; display: flex; flex-direction: column; backdrop-filter: blur(20px); } .contact-modal-header { display: flex; justify-content: space-between; align-items: center; padding: 24px; border-bottom: 1px solid rgba(255, 255, 255, 0.1); background: linear-gradient(to bottom, rgba(59, 130, 246, 0.1), transparent); } .contact-modal-title { margin: 0; font-size: 1.5rem; font-weight: 700; color: white; } .contact-modal-subtitle { margin: 4px 0 0 0; font-size: 0.875rem; color: rgba(255, 255, 255, 0.7); } .contact-modal-close { background: rgba(255, 255, 255, 0.1); border: 1px solid rgba(255, 255, 255, 0.2); font-size: 20px; color: rgba(255, 255, 255, 0.8); cursor: pointer; padding: 8px; display: flex; align-items: center; justify-content: center; border-radius: 8px; transition: all 0.2s; width: 36px; height: 36px; } .contact-modal-close:hover { background: rgba(255, 255, 255, 0.2); color: white; border-color: rgba(255, 255, 255, 0.3); } .contact-modal-content { padding: 24px; overflow-y: auto; flex: 1; } .contact-form { display: flex; flex-direction: column; gap: 20px; } .contact-form-group { display: flex; flex-direction: column; gap: 8px; } .contact-label { font-size: 0.875rem; font-weight: 500; color: rgba(255, 255, 255, 0.9); } .contact-input { width: 100%; padding: 12px 16px; background: rgba(255, 255, 255, 0.05); border: 1px solid rgba(255, 255, 255, 0.1); border-radius: 12px; color: white; font-size: 0.9375rem; transition: all 0.2s; } .contact-input:focus { outline: none; border-color: rgba(59, 130, 246, 0.5); background: rgba(255, 255, 255, 0.08); box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1); } .contact-input::placeholder { color: rgba(255, 255, 255, 0.4); } .contact-input option { background: #1a1a1a !important; color: white !important; } .contact-success, .contact-error { display: flex; align-items: center; gap: 12px; padding: 16px; border-radius: 12px; margin-top: 8px; } .contact-success { background: rgba(34, 197, 94, 0.1); border: 1px solid rgba(34, 197, 94, 0.3); color: rgba(255, 255, 255, 0.9); } .contact-error { background: rgba(239, 68, 68, 0.1); border: 1px solid rgba(239, 68, 68, 0.3); color: rgba(255, 255, 255, 0.9); } .contact-modal-footer { padding: 24px; border-top: 1px solid rgba(255, 255, 255, 0.1); background: linear-gradient(to top, rgba(59, 130, 246, 0.05), transparent); } [x-cloak] { display: none !important; } </style> <script> document.addEventListener('alpine:init', () => { Alpine.data('contactModal', () => ({ open: false, submitting: false, formSubmitted: false, formError: false, formData: { name: '', email: '', subject: '', message: '', utm_source: '', page_context: '', vertical: '' }, init() { // Capture UTM and page context const params = new URLSearchParams(window.location.search); this.formData.utm_source = params.get('utm_source') || ''; this.formData.page_context = window.location.pathname; const path = window.location.pathname.replace(/^\/[a-z]{2}\//, '/'); const verticalMatch = path.match(/\/(crm|invoicing|hr|helpdesk|inventory|projects|booking|analytics|proposals|social|marketing|email|contracts)/); this.formData.vertical = verticalMatch ? verticalMatch[1] : ''; // Pre-select subject based on current page if (path.includes('white-label')) { this.formData.subject = 'white-label'; } else if (path.includes('pricing') || path.includes('enterprise')) { this.formData.subject = 'sales'; } else { this.formData.subject = 'general'; } // Listen for open contact modal event window.addEventListener('open-modal', (e) => { if (e.detail === 'contact-modal') { this.open = true; document.body.style.overflow = 'hidden'; } }); // Listen for close modal event window.addEventListener('close-modal', (e) => { if (!e.detail || e.detail === 'contact-modal') { this.close(); } }); // Close on Escape key document.addEventListener('keydown', (e) => { if (e.key === 'Escape' && this.open) { this.close(); } }); }, async submitForm() { this.submitting = true; this.formError = false; this.formSubmitted = false; try { const csrfToken = document.querySelector('meta[name="csrf-token"]')?.getAttribute('content'); const response = await fetch('/api/contact', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Accept': 'application/json', 'X-CSRF-TOKEN': csrfToken || '', }, body: JSON.stringify({ name: this.formData.name, email: this.formData.email, subject: this.formData.subject, message: this.formData.message, page: window.location.pathname, utm_source: this.formData.utm_source, page_context: this.formData.page_context, vertical: this.formData.vertical, }), }); if (!response.ok) throw new Error('Submission failed'); this.formSubmitted = true; // GA4: track lead if (typeof gtag === 'function') { gtag('event', 'generate_lead', { event_category: 'Contact', event_label: this.formData.subject || 'General', value: 1, }); } setTimeout(() => { this.close(); }, 3000); } catch (error) { this.formError = true; } finally { this.submitting = false; } }, close() { this.open = false; document.body.style.overflow = ''; // Reset form after a delay to allow animation setTimeout(() => { this.formData = { name: '', email: '', subject: '', message: '', utm_source: this.formData.utm_source, page_context: this.formData.page_context, vertical: this.formData.vertical }; this.formSubmitted = false; this.formError = false; }, 300); } })); }); </script> <div x-data="{ show: false, init() { window.addEventListener('scroll', () => { this.show = window.scrollY > 600; }, { passive: true }); } }" x-show="show" x-cloak x-effect="$dispatch('sticky-cta-toggle', { visible: show })" x-transition:enter="transition ease-out duration-300" x-transition:enter-start="opacity-0 -translate-y-full" x-transition:enter-end="opacity-100 translate-y-0" x-transition:leave="transition ease-in duration-200" x-transition:leave-start="opacity-100 translate-y-0" x-transition:leave-end="opacity-0 -translate-y-full" class="fixed top-0 left-0 right-0 z-40 hidden md:block" style="display:none" > <div class="bg-black/95 backdrop-blur-lg border-b border-white/10" style="height: 48px;"> <div class="mx-auto max-w-7xl h-full flex items-center justify-between px-4 lg:px-6"> <div class="flex items-center gap-3"> <span class="font-bold text-white text-sm">Mewayzを試す</span> <span class="text-white/40">|</span> <span class="text-white/50 text-sm">全機能利用可能。クレジットカード不要。</span> </div> <div class="flex items-center gap-3"> <a href="https://blitzmining.net/ja/demo" class="px-5 py-1.5 rounded-lg bg-white text-black text-sm font-bold hover:bg-gray-100 transition whitespace-nowrap" onclick="if(typeof gtag==='function')gtag('event','demo_request',{event_category:'CTA',event_label:'desktop_sticky'});if(typeof plausible==='function')plausible('Demo_Click',{props:{location:'desktop_sticky'}});"> デモを試す </a> </div> </div> </div> </div> <div x-data="{ show: false, cookieVisible: false }" x-init=" window.addEventListener('scroll', () => { show = window.scrollY > 300 }, { passive: true }); cookieVisible = !!document.querySelector('[data-cookie-consent]') && !localStorage.getItem('cookie_consent'); const obs = new MutationObserver(() => { cookieVisible = !!document.querySelector('[data-cookie-consent]:not([style*="display: none"]):not([style*="display:none"])'); }); obs.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style'] }); " x-show="show && !cookieVisible" x-transition:enter="transition ease-out duration-300" x-transition:enter-start="translate-y-full opacity-0" x-transition:enter-end="translate-y-0 opacity-100" x-transition:leave="transition ease-in duration-200" x-transition:leave-start="translate-y-0 opacity-100" x-transition:leave-end="translate-y-full opacity-0" class="fixed bottom-0 inset-x-0 z-50 md:hidden" style="display:none; padding-bottom: env(safe-area-inset-bottom, 0px);"> <div class="bg-black/95 backdrop-blur-lg border-t border-white/10 px-4 py-3 flex items-center justify-between gap-3"> <div class="text-xs text-white/70 flex-shrink-0"> <span class="font-bold text-white">無料で始める</span> <span class="block text-[10px]">クレジットカードなし</span> </div> <div class="flex gap-2"> <a href="https://blitzmining.net/ja/demo" class="px-3 py-2 rounded-lg border border-white/20 text-white text-xs font-medium hover:bg-white/10 transition whitespace-nowrap" onclick="if(typeof gtag==='function')gtag('event','demo_request',{event_category:'CTA',event_label:'mobile_sticky'});if(typeof plausible==='function')plausible('Demo_Click',{props:{location:'mobile_sticky'}});"> Demo </a> <a href="/ja/free-trial?utm_source=mobile_sticky&utm_medium=cta_bar&utm_campaign=trial&locale=ja" class="px-4 py-2 rounded-lg bg-white text-black text-xs font-bold hover:bg-gray-100 transition whitespace-nowrap" onclick="if(typeof gtag==='function'){gtag('event','free_trial_start',{event_category:'Conversion',event_label:'mobile_sticky'});gtag('event','sticky_cta_click',{event_category:'CTA',event_label:'mobile_sticky'});}if(typeof plausible==='function'){plausible('Free_Trial_Start',{props:{source:'mobile_sticky'}});plausible('Sticky_CTA_Click',{props:{location:'mobile_sticky'}});}"> サインアップ </a> </div> </div> </div> <script data-navigate-once="true">window.livewireScriptConfig = {"csrf":"mcUrXSy24LY8tDIcY7Tb1afQSjlrDxYBR65t555W","uri":"\/livewire\/update","progressBar":"","nonce":""};</script> <link rel="preload" as="style" href="/build/assets/vendor-4f33a8f0.css" /><link rel="modulepreload" href="/build/assets/yenaWire-0eb0c3a4.js" /><link rel="modulepreload" href="/build/assets/vendor-8c6feac7.js" /><link rel="modulepreload" href="/build/assets/vendor-alpine-9e107fd1.js" /><link rel="stylesheet" href="/build/assets/vendor-4f33a8f0.css" data-navigate-track="reload" /><script type="module" src="/build/assets/yenaWire-0eb0c3a4.js" data-navigate-track="reload"></script> <div x-data="{ show: false, email: '', submitted: false, error: '', init() { let fired = false; const startTime = Date.now(); const minTime = 15000; const storageKey = 'mewayz_exit_dismissed'; if (localStorage.getItem(storageKey)) return; if (sessionStorage.getItem('modal_shown')) return; // Don't fire if organic or ad exit-intent already dismissed recently const orgDismissed = localStorage.getItem('organic_exit_dismissed'); if (orgDismissed && (Date.now() - parseInt(orgDismissed)) < 7 * 24 * 60 * 60 * 1000) return; if (localStorage.getItem('exit_intent_adlanding_dismissed')) return; const isDeeplyEngaged = () => { const scrollPct = window.scrollY / (document.documentElement.scrollHeight - window.innerHeight); return scrollPct > 0.75; }; document.addEventListener('mouseleave', (e) => { if (e.clientY <= 0 && !fired && (Date.now() - startTime) > minTime && !sessionStorage.getItem('modal_shown') && !isDeeplyEngaged()) { fired = true; this.show = true; sessionStorage.setItem('modal_shown', '1'); } }, { once: true }); document.addEventListener('visibilitychange', () => { if (document.hidden && !fired && (Date.now() - startTime) > 30000 && !sessionStorage.getItem('modal_shown') && !isDeeplyEngaged()) { fired = true; this.show = true; sessionStorage.setItem('modal_shown', '1'); } }); }, dismiss() { this.show = false; localStorage.setItem('mewayz_exit_dismissed', '1'); }, async submit() { if (!this.email || !this.email.includes('@')) { this.error = '有効なメールアドレスを入力してください。'; return; } this.error = ''; try { fetch('/newsletter/subscribe', { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-CSRF-TOKEN': document.querySelector('meta[name=csrf-token]')?.content || '' }, body: JSON.stringify({ email: this.email, source: 'exit_intent', page: window.location.pathname }) }).catch(() => {}); if (typeof gtag !== 'undefined') gtag('event', 'generate_lead', { event_category: 'ExitIntent', event_label: 'email_capture' }); if (typeof plausible !== 'undefined') plausible('ExitIntent_Lead', { props: { page: window.location.pathname } }); this.submitted = true; localStorage.setItem('mewayz_exit_dismissed', '1'); } catch (e) { this.error = '何か問題が発生しました。もう一度試してください。'; } } }" x-show="show" x-transition:enter="transition ease-out duration-300" x-transition:enter-start="opacity-0" x-transition:enter-end="opacity-100" x-transition:leave="transition ease-in duration-200" x-transition:leave-start="opacity-100" x-transition:leave-end="opacity-0" class="fixed inset-0 z-[9000] flex items-center justify-center p-4" style="display: none;" @keydown.escape.window="dismiss()" > <div class="absolute inset-0 bg-black/60 backdrop-blur-sm" @click="dismiss()"></div> <div class="relative w-full max-w-md bg-gradient-to-br from-gray-900 to-gray-800 border border-white/10 rounded-2xl p-6 shadow-2xl" x-show="show" x-transition:enter="transition ease-out duration-300 delay-100" x-transition:enter-start="opacity-0 scale-95 translate-y-4" x-transition:enter-end="opacity-100 scale-100 translate-y-0"> <button @click="dismiss()" class="absolute top-3 right-3 text-white/40 hover:text-white transition-colors" aria-label="Close"> <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"/></svg> </button> <template x-if="!submitted"> <div> <div class="flex items-center gap-2 mb-3"> <div class="flex items-center justify-center w-10 h-10 rounded-xl bg-indigo-500/20 border border-indigo-500/30"> <i class="ph ph-rocket-launch text-indigo-400" style="font-size: 20px;"></i> </div> <div> <h3 class="text-lg font-bold text-white">ちょっと待ってください。手ぶらで帰らないでください。</h3> </div> </div> <p class="text-sm text-white/70 mb-4"> Get weekly insights on business automation, growth tactics, and industry trends. </p> <div class="space-y-2"> <input x-model="email" type="email" placeholder="あなたのメールアドレス" aria-label="電子メールアドレス" class="w-full px-4 py-3 rounded-xl bg-white/10 border border-white/20 text-white placeholder-white/40 text-sm focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:border-transparent" @keydown.enter="submit()"> <p x-show="error" x-text="error" class="text-xs text-red-400"></p> <button @click="submit()" class="w-full px-4 py-3 rounded-xl bg-indigo-600 hover:bg-indigo-500 text-white font-semibold text-sm transition-colors">ガイドを送ってください</button> </div> <div class="flex items-center gap-3 mt-3"> <div class="flex-1 h-px bg-white/10"></div> <span class="text-xs text-white/30">または</span> <div class="flex-1 h-px bg-white/10"></div> </div> <a href="/ja/free-trial" @click="dismiss()" class="block w-full px-4 py-3 rounded-xl border border-white/20 text-white/70 hover:text-white hover:border-white/40 font-medium text-sm transition-colors text-center">無料開始 — クレジットカード不要 →</a> <p class="text-xs text-white/40 mt-2 text-center">スパムはありません。いつでも購読を解除してください。</p> </div> </template> <template x-if="submitted"> <div class="text-center py-4"> <div class="flex items-center justify-center w-14 h-14 rounded-full bg-green-500/20 border border-green-500/30 mx-auto mb-3"> <i class="ph ph-check-circle text-green-400" style="font-size: 28px;"></i> </div> <h3 class="text-lg font-bold text-white mb-1">受信箱をチェックしてください!</h3> <p class="text-sm text-white/70">まもなくガイドをメールでお送りします。</p> <a href="/ja/free-trial" class="inline-block mt-4 px-6 py-2.5 rounded-xl bg-indigo-600 hover:bg-indigo-500 text-white font-semibold text-sm transition-colors">または、今すぐ無料で始めましょう →</a> </div> </template> </div> </div> <div x-data="{ show: false, init() { var consent = localStorage.getItem('cookie_consent'); if (!consent) { setTimeout(() => this.show = true, 1500); } else if (consent === 'all') { this.enableTracking(); } }, accept() { localStorage.setItem('cookie_consent', 'all'); this.show = false; this.enableTracking(); }, acceptEssential() { localStorage.setItem('cookie_consent', 'essential'); this.show = false; }, enableTracking() { if (typeof gtag === 'function') { gtag('consent', 'update', { analytics_storage: 'granted', ad_storage: 'granted', ad_user_data: 'granted', ad_personalization: 'granted', }); } } }" x-show="show" x-cloak x-transition:enter="transition ease-out duration-300" x-transition:enter-start="opacity-0 translate-y-4" x-transition:enter-end="opacity-100 translate-y-0" x-transition:leave="transition ease-in duration-200" x-transition:leave-start="opacity-100" x-transition:leave-end="opacity-0 translate-y-4" data-cookie-consent class="fixed bottom-0 left-0 right-0 z-[500] p-4 md:p-6" role="dialog" aria-label="Cookie同意" > <div class="mx-auto max-w-4xl rounded-2xl border border-white/10 bg-gray-900/95 backdrop-blur-xl p-5 md:p-6 shadow-2xl"> <div class="flex flex-col md:flex-row md:items-center gap-4"> <div class="flex-1"> <p class="text-sm text-white/80 leading-relaxed"> 当サイトでは、お客様の体験向上とサイトトラフィック分析のためにCookieを使用しています。 <a href="/ja/cookie-policy" class="text-indigo-400 hover:text-indigo-300 underline underline-offset-2">Cookieポリシー</a> </p> </div> <div class="flex items-center gap-3 flex-shrink-0"> <button @click="acceptEssential()" class="rounded-lg border border-white/20 px-4 py-2 text-sm font-medium text-white/70 hover:bg-white/10 transition"> 必須のみ </button> <button @click="accept()" class="rounded-lg bg-indigo-600 px-5 py-2 text-sm font-semibold text-white hover:bg-indigo-500 transition shadow-lg shadow-indigo-500/20"> すべて受け入れる </button> </div> </div> </div> </div> <style> .woot-widget-bubble, .woot--bubble-holder, .woot-widget-holder, .woot-widget-modal, .woot--bubble-holder *, #cw-widget-holder { z-index: 199 !important; } @media (max-width: 767px) { .woot-widget-bubble, .woot--bubble-holder { bottom: calc(70px + env(safe-area-inset-bottom, 0px)) !important; transition: opacity 0.3s ease !important; } .woot-widget-holder { bottom: calc(70px + env(safe-area-inset-bottom, 0px)) !important; } } </style> <script> (function(){ function loadChatwoot(){ var BASE_URL = 'https://chat.mewayz.com'; var d=document,g=d.createElement('script'); g.src=BASE_URL+'/packs/js/sdk.js'; g.defer=true; g.async=true; d.body.appendChild(g); g.onload=function(){ if (window.chatwootSDK) { window.chatwootSettings = { locale: document.documentElement.lang || 'en' }; window.chatwootSDK.run({ websiteToken: 'SRSeArWur9qGuHNMpCzWnWRi', baseUrl: BASE_URL }); } }; } if(document.readyState==='complete'){setTimeout(loadChatwoot,3000);} else{window.addEventListener('load',function(){setTimeout(loadChatwoot,3000);});} })(); </script> <div id="vapi-widget" style="position:fixed;bottom:90px;right:24px;z-index:300;display:flex;flex-direction:column;align-items:flex-end;gap:8px;"> <!-- Main call button --> <div style="position:relative;"> <button id="vapi-call-btn" onclick="vapiToggleCall()" style="width:56px;height:56px;border-radius:50%;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 8px 24px rgba(0,0,0,.15);background:linear-gradient(135deg,#22c55e,#059669);color:#fff;transition:all .3s;" title="Mewayz AIと話す"> <svg id="vapi-phone-icon" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z"/></svg> </button> <span id="vapi-pulse" style="display:none;position:absolute;inset:0;border-radius:50%;background:rgba(34,197,94,.3);animation:vapi-ping 1.5s cubic-bezier(0,0,.2,1) infinite;pointer-events:none;"></span> </div> <!-- Tooltip --> <div id="vapi-tooltip" style="display:none;position:absolute;bottom:100%;left:0;margin-bottom:8px;padding:6px 12px;border-radius:8px;background:#111827;color:#fff;font-size:12px;white-space:nowrap;box-shadow:0 4px 12px rgba(0,0,0,.15);"> Mewayz AIと話す </div> </div> <!-- Call modal overlay --> <div id="vapi-modal" style="display:none;position:fixed;inset:0;z-index:400;background:rgba(0,0,0,.6);backdrop-filter:blur(8px);align-items:center;justify-content:center;"> <div style="width:320px;border-radius:20px;overflow:hidden;background:linear-gradient(to bottom, rgba(17,24,39,0.98), rgba(0,0,0,0.99));border:1px solid rgba(255,255,255,0.1);box-shadow:0 25px 50px -12px rgba(0,0,0,.5);"> <!-- Modal header (changes color based on state) --> <div id="vapi-modal-header" style="padding:28px 24px 20px;text-align:center;background:linear-gradient(135deg,rgba(59,130,246,.3),rgba(139,92,246,.2));"> <div id="vapi-modal-icon" style="margin:0 auto 12px;width:64px;height:64px;border-radius:50%;background:rgba(255,255,255,.15);display:flex;align-items:center;justify-content:center;"> <!-- Spinner (connecting) --> <div id="vapi-spinner" style="width:32px;height:32px;border:3px solid rgba(255,255,255,.2);border-top-color:#fff;border-radius:50%;animation:vapi-spin 1s linear infinite;"></div> <!-- Phone icon (active) --> <svg id="vapi-active-icon" style="display:none;" width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z"/></svg> </div> <p id="vapi-modal-title" style="margin:0;color:#fff;font-size:1.25rem;font-weight:700;">接続中...</p> <p id="vapi-modal-subtitle" style="margin:6px 0 0;color:rgba(255,255,255,.6);font-size:.875rem;">音声通話の設定中</p> </div> <!-- Modal body --> <div style="padding:20px 24px 24px;"> <!-- Mute button (active state only) --> <div id="vapi-modal-controls" style="display:none;margin-bottom:16px;display:flex;justify-content:center;"> <button id="vapi-modal-mute" onclick="vapiToggleMute()" style="display:none;flex-direction:column;align-items:center;gap:6px;padding:12px 20px;border-radius:12px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.1);color:rgba(255,255,255,.7);cursor:pointer;transition:all .2s;font-size:12px;font-weight:500;"> <svg id="vapi-modal-mic" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2a3 3 0 0 0-3 3v7a3 3 0 0 0 6 0V5a3 3 0 0 0-3-3Z"/><path d="M19 10v2a7 7 0 0 1-14 0v-2"/><line x1="12" x2="12" y1="19" y2="22"/></svg> <span id="vapi-mute-label">ミュート</span> </button> </div> <!-- End call button --> <button id="vapi-modal-end" onclick="vapiEndCall()" style="width:100%;display:flex;align-items:center;justify-content:center;gap:8px;padding:14px;border-radius:12px;background:#ef4444;border:none;color:#fff;font-size:.9375rem;font-weight:600;cursor:pointer;transition:background .2s;"> <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M10.68 13.31a16 16 0 0 0 3.41 2.6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91"/><line x1="23" x2="1" y1="1" y2="23"/></svg> 通話終了 </button> </div> </div> </div> <style> @media (max-width: 767px) { #vapi-widget { bottom: 160px !important; right: 16px !important; } } @keyframes vapi-ping { 75%, 100% { transform: scale(1.5); opacity: 0; } } @keyframes vapi-spin { to { transform: rotate(360deg); } } #vapi-modal-end:hover { background: #dc2626; } #vapi-modal-mute:hover { background: rgba(255,255,255,.1); } </style> <script data-cfasync="false"> (function() { var vapiInstance = null; var callActive = false; var isMuted = false; var callTimer = null; var callSeconds = 0; var btn = document.getElementById('vapi-call-btn'); var pulse = document.getElementById('vapi-pulse'); var tooltip = document.getElementById('vapi-tooltip'); var modal = document.getElementById('vapi-modal'); var modalHeader = document.getElementById('vapi-modal-header'); var modalTitle = document.getElementById('vapi-modal-title'); var modalSubtitle = document.getElementById('vapi-modal-subtitle'); var spinner = document.getElementById('vapi-spinner'); var activeIcon = document.getElementById('vapi-active-icon'); var modalMute = document.getElementById('vapi-modal-mute'); var muteLabel = document.getElementById('vapi-mute-label'); btn.addEventListener('mouseenter', function() { if (!callActive) tooltip.style.display = 'block'; }); btn.addEventListener('mouseleave', function() { tooltip.style.display = 'none'; }); function hideChatwoot() { var cw = document.querySelector('.woot-widget-bubble, .woot--bubble-holder'); if (cw) cw.style.display = 'none'; } function showChatwoot() { var cw = document.querySelector('.woot-widget-bubble, .woot--bubble-holder'); if (cw) cw.style.display = ''; } function showModal(state) { modal.style.display = 'flex'; hideChatwoot(); if (state === 'connecting') { modalHeader.style.background = 'linear-gradient(135deg,rgba(59,130,246,.3),rgba(139,92,246,.2))'; modalTitle.textContent = '接続中...'; modalSubtitle.textContent = '音声通話の設定中'; spinner.style.display = 'block'; activeIcon.style.display = 'none'; modalMute.style.display = 'none'; } else { modalHeader.style.background = 'linear-gradient(135deg,rgba(34,197,94,.3),rgba(16,185,129,.2))'; modalTitle.textContent = 'Mewayz AIアシスタント'; spinner.style.display = 'none'; activeIcon.style.display = 'block'; modalMute.style.display = 'flex'; startTimer(); } } function hideModal() { modal.style.display = 'none'; showChatwoot(); stopTimer(); } function startTimer() { callSeconds = 0; updateTimerDisplay(); callTimer = setInterval(function() { callSeconds++; updateTimerDisplay(); }, 1000); } function stopTimer() { if (callTimer) { clearInterval(callTimer); callTimer = null; } callSeconds = 0; } function updateTimerDisplay() { var m = Math.floor(callSeconds / 60); var s = callSeconds % 60; modalSubtitle.textContent = m + ':' + (s < 10 ? '0' : '') + s; } var sdkLoading = false; function initVapiAndCall() { vapiInstance = new window.Vapi('96d93a4c-83d7-437f-a484-db7c99b55fff'); vapiInstance.on('call-start', function() { callActive = true; btn.style.background = 'linear-gradient(135deg,#22c55e,#059669)'; btn.style.opacity = '1'; btn.disabled = false; pulse.style.display = 'block'; showModal('active'); if (typeof gtag === 'function') gtag('event', 'vapi_call_start', { event_category: 'Voice_AI' }); }); vapiInstance.on('call-end', function() { resetUI(); }); vapiInstance.on('error', function(e) { console.error('Vapi error:', e); resetUI(); }); startVapiCall(); } window.vapiToggleCall = async function() { if (callActive) { window.vapiEndCall(); return; } if (sdkLoading) return; // prevent double-click showModal('connecting'); btn.style.opacity = '0.6'; btn.disabled = true; try { if (window.Vapi && !vapiInstance) { // SDK already loaded (e.g. preloaded), just init initVapiAndCall(); } else if (!vapiInstance) { sdkLoading = true; var script = document.createElement('script'); script.setAttribute('data-cfasync', 'false'); script.src = '/vendor/js/vapi-sdk-v2.js'; script.onload = function() { sdkLoading = false; if (!window.Vapi) { console.error('Vapi SDK loaded but window.Vapi not found'); resetUI(); return; } initVapiAndCall(); }; script.onerror = function() { sdkLoading = false; console.error('Vapi SDK failed to load'); resetUI(); }; document.head.appendChild(script); setTimeout(function() { if (!callActive) { sdkLoading = false; resetUI(); } }, 15000); } else { startVapiCall(); setTimeout(function() { if (!callActive) resetUI(); }, 15000); } } catch(e) { sdkLoading = false; console.error('Vapi error:', e); resetUI(); } }; window.vapiEndCall = async function() { if (vapiInstance) { try { await vapiInstance.stop(); } catch(e){} } resetUI(); }; function startVapiCall() { vapiInstance.start({ model: { provider: 'openai', model: 'gpt-4o-mini', messages: [{ role: 'system', content: 'You are a sharp, high-converting sales agent for Mewayz — an all-in-one business management platform. VOICE RULES: Max 2 sentences per reply. Warm, confident, direct. Every response ends with a question or signup nudge. Never list more than 3 things at once. Never monologue. ' + 'SALES PLAYBOOK: 1) Ask what problem they need solved. 2) Mirror their pain back. 3) Position the specific Mewayz module as the fix. 4) Close: tell them to click the green Start Free Trial button on the page. Handle objections instantly: too expensive → free forever plan, no card; already use X → Mewayz replaces it plus connects everything; not ready → 14-day pro trial, zero risk; too complex → live in 2 minutes, guided setup wizard. ' + 'PLATFORM KNOWLEDGE — 5 module categories, 130+ modules total: ' + '1) CRM & Sales: contact management, deal pipelines, lead scoring, referral tracking, activity timeline per contact, custom fields, bulk import. ' + '2) Finance: invoicing with online payments (Stripe/PayPal), recurring billing, subscriptions, expense tracking, payment reminders, wallet system, donations, multi-currency support. ' + '3) Online Presence: drag-and-drop website builder, link-in-bio pages, online store with POS, QR code generator, custom domains on paid plans, SEO tools. ' + '4) Operations: HR management (staff, payroll, attendance, leave, time tracking), project management with Kanban boards, task management, team messenger, appointment booking with calendar sync, contracts and e-signatures, document management. ' + '5) Marketing: email campaigns and newsletters, social media management and scheduling, content creation tools, marketing automation workflows, analytics and 50+ report types. ' + 'PRICING: Free plan — free forever, no credit card, includes CRM, invoicing, booking, link-in-bio, website builder. Starter — $49/mo ($490/year, save 2 months) — unlocks advanced features, custom domain, priority support. Pro — $99/mo — adds automation workflows, API access, team collaboration, more storage. Business — $199/mo — full platform, unlimited. Add-on modules available at $4.99/mo each. All paid plans include 14-day free pro trial and 30-day money-back guarantee. ' + 'WHITE-LABEL RESELLER: Agencies and consultants can resell Mewayz under their own brand, domain, and logo. Plans: WL Lite $99/mo, WL Starter $199/mo, WL Growth $399/mo, WL Agency $799/mo, WL Enterprise $1499/mo. Instant self-serve setup, live in minutes. Free Partner Academy teaches how to earn $2000+ MRR. ' + 'KEY SELLING POINTS: Replaces 10+ separate SaaS subscriptions (Salesforce, QuickBooks, Calendly, Mailchimp, Monday, etc). 25 languages supported. Used by agencies, freelancers, consultants, SMBs, nonprofits, healthcare, legal, education, real estate, ecommerce. Mobile-friendly. Real-time analytics. Helpdesk with ticketing system. ' + 'COMPETITOR RESPONSES: vs Zoho/Odoo → simpler, no implementation cost, free plan; vs HubSpot/Salesforce → fraction of the price, all modules included not upsold; vs Monday/Asana → includes CRM and invoicing they lack; vs QuickBooks/Xero → adds CRM, projects, HR they dont have; vs individual tools → one login, one bill, data flows between modules automatically. ' + 'SUPPORT: 24/7 AI chat support built in, help center with guides, email support, dedicated account manager on Business plan. ' + 'If asked something you dont know, say you can connect them with the team and suggest they start a free trial to explore themselves.' }] }, voice: { provider: '11labs', voiceId: 'sarah' }, firstMessage: 'Hey there! What business challenge can I help you solve today?', transcriber: { provider: 'deepgram', model: 'nova-2' } }); } function resetUI() { callActive = false; isMuted = false; btn.style.background = 'linear-gradient(135deg,#22c55e,#059669)'; btn.style.opacity = '1'; btn.disabled = false; pulse.style.display = 'none'; hideModal(); } window.vapiToggleMute = function() { if (!vapiInstance) return; isMuted = !isMuted; vapiInstance.setMuted(isMuted); muteLabel.textContent = isMuted ? 'ミュート解除' : 'ミュート'; modalMute.style.background = isMuted ? 'rgba(239,68,68,.15)' : 'rgba(255,255,255,.05)'; modalMute.style.borderColor = isMuted ? 'rgba(239,68,68,.3)' : 'rgba(255,255,255,.1)'; modalMute.style.color = isMuted ? '#ef4444' : 'rgba(255,255,255,.7)'; }; // Close modal on Escape document.addEventListener('keydown', function(e) { if (e.key === 'Escape' && callActive) window.vapiEndCall(); }); })(); </script> <script> (function(){ var ticking = false; window.addEventListener('scroll', function() { if (ticking) return; ticking = true; requestAnimationFrame(function() { var scrollBottom = window.innerHeight + window.scrollY; var docHeight = document.documentElement.scrollHeight; var nearBottom = (docHeight - scrollBottom) < 200; var bubble = document.querySelector('.woot-widget-bubble'); var vapi = document.getElementById('vapi-widget'); if (bubble) { bubble.style.opacity = nearBottom ? '0' : '1'; bubble.style.pointerEvents = nearBottom ? 'none' : 'auto'; } if (vapi) { vapi.style.opacity = nearBottom ? '0' : '1'; vapi.style.pointerEvents = nearBottom ? 'none' : 'auto'; vapi.style.transition = 'opacity 0.3s ease'; } ticking = false; }); }, { passive: true }); })(); </script> <script> if ('serviceWorker' in navigator) { window.addEventListener('load', function() { navigator.serviceWorker.register('/sw.js', { scope: '/' }).catch(function() {}); }); } </script> <script> (function () { function _getCookie(name) { var m = document.cookie.match('(?:^|; )' + name + '=([^;]*)'); return m ? decodeURIComponent(m[1]) : null; } if (!_getCookie('mewayz_did')) { var did = 'did_' + Math.random().toString(36).slice(2) + Math.random().toString(36).slice(2); var exp = new Date(Date.now() + 365 * 864e5).toUTCString(); document.cookie = 'mewayz_did=' + did + '; expires=' + exp + '; path=/; SameSite=Lax'; } })(); </script> <script> document.addEventListener('alpine:init', function () { Alpine.data('trialGate', function () { return { loading: false, timedOut: false, showModal: false, email: '', emailError: '', emailEligible: null, // null = unchecked, true = eligible, false = not eligible emailReason: null, // 'eligible' | 'email_exists' | null emailChecking: false, _lastCheckedEmail: '', _getDid() { var m = document.cookie.match('(?:^|; )mewayz_did=([^;]*)'); return m ? decodeURIComponent(m[1]) : ''; }, async gate(e) { if (this.loading) return; this.loading = true; // ── Step 0: Check if the user is already logged in on app.mewayz.com ── // If so, skip the modal entirely and send them straight to the plan page. try { const planSlug = this.$refs.checkoutForm?.querySelector('[name="plan"]')?.value ?? ''; const authR = await fetch('https://app.mewayz.com/api/auth/me', { credentials: 'include' }); const authD = await authR.json(); if (authD.authenticated && authD.plans_url) { const dest = authD.plans_url + (planSlug ? '?plan=' + encodeURIComponent(planSlug) + '&source=pricing' : '?source=pricing'); window.location.href = dest; return; // loading stays true — navigation will happen } } catch (_) { // Cross-origin or network error — continue normal flow } // ── Step 1: Inject device ID, check IP/device trial eligibility ── const did = this._getDid(); if (did) this._injectHidden('device_id', did); try { const params = did ? '?did=' + encodeURIComponent(did) : ''; const r = await fetch('/checkout/check-trial' + params, { headers: { 'X-Requested-With': 'XMLHttpRequest' }, }); const d = await r.json(); // Store pre-check result internally — do NOT surface the badge here. // Showing "no trial available" before the user types anything penalises // legitimate users on shared IPs (offices, VPNs) or shared devices. // The badge appears only after checkEmail() runs with the full triple-check. } catch (_) { // Network error — proceed to modal, server decides eligibility at session creation } // ── Step 2: Always show modal to collect email ── this.loading = false; this.showModal = true; // GA4: modal opened (distinct from begin_checkout which fires on CTA click) this._gaEvent('checkout_modal_open', { plan: this._planId(), has_gclid: !!(typeof window.mewayz_stored_gclid !== 'undefined' && window.mewayz_stored_gclid), }); this.$nextTick(() => { const inp = this.$el.querySelector('input[type="email"]'); if (inp) inp.focus(); }); }, async checkEmail() { if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(this.email)) { this.emailError = '有効なメールアドレスを入力してください。'; return; } // Skip if already checked this exact email (prevents redundant calls on mobile // when the user tabs in/out of the field without changing the value) if (this.email === this._lastCheckedEmail) return; this.emailError = ''; this.emailChecking = true; try { const did = this._getDid(); const _p = new URLSearchParams({ email: this.email }); if (did) _p.set('did', did); const r = await fetch('/checkout/check-trial?' + _p.toString(), { headers: { 'X-Requested-With': 'XMLHttpRequest' }, }); const d = await r.json(); this.emailEligible = d.eligible; this.emailReason = d.reason || null; this._lastCheckedEmail = this.email; // GA4: email entered + eligibility result this._gaEvent('checkout_email_entered', { plan: this._planId(), eligible: d.eligible, reason: d.reason || 'unknown', }); } catch (_) { this.emailEligible = null; // unknown — let server decide } this.emailChecking = false; }, _planId() { return this.$refs.checkoutForm?.querySelector('[name="plan"]')?.value ?? ''; }, _gaEvent(name, params) { if (typeof gtag === 'function') gtag('event', name, params); }, async proceed() { if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(this.email)) { this.emailError = '有効なメールアドレスを入力してください。'; return; } // Run email check if not already done if (this.emailEligible === null) await this.checkEmail(); // Inject email so Stripe pre-fills it and server uses it for trial decision this._injectEmail(this.email); // Inject GCLID for offline conversion attribution var gclid = (typeof window.mewayz_stored_gclid !== 'undefined' ? window.mewayz_stored_gclid : '') || ''; if (gclid) this._injectHidden('gclid', gclid); // Fire GA4 continue event this._gaEvent('checkout_continue_clicked', { plan: this._planId(), email_eligible: this.emailEligible, }); this.showModal = false; this._submitForm(); }, skipModal() { this.showModal = false; this._submitForm(); }, closeModal(proceeded) { if (!proceeded) { this._gaEvent('checkout_abandoned', { plan: this._planId(), stage: this.email.length > 4 ? 'email_entered' : 'modal_open', }); } this.showModal = false; this.loading = false; }, _injectEmail(emailValue) { this._injectHidden('email', emailValue); }, _injectHidden(name, value) { const form = this.$refs.checkoutForm; let inp = form.querySelector('input[name="' + name + '"]'); if (!inp) { inp = document.createElement('input'); inp.type = 'hidden'; inp.name = name; form.appendChild(inp); } inp.value = value; }, _submitForm() { this.loading = true; setTimeout(() => { if (this.loading) { this.timedOut = true; this.loading = false; } }, 10000); this.$refs.checkoutForm.submit(); }, }; }); }); </script> <div id='mz-net-wrap'></div><script>fetch('https://mewayz.com/network-footer.html').then(function(r){return r.text()}).then(function(h){var d=document.getElementById('mz-net-wrap');d.insertAdjacentHTML('beforeend',h);var cc=document.getElementById('mw-cc');if(!cc)return;var own=document.querySelector('[x-data*="cookie"],[class*="cookie-consent"],[id*="cookie-banner"]');var ok=localStorage.getItem('mwcc')||localStorage.getItem('cookie_consent');if(own||ok){cc.remove()}else{cc.style.display='block'}}).catch(function(){})</script></body> </html> <script src="/cdn-cgi/scripts/7d0fa10a/cloudflare-static/rocket-loader.min.js" data-cf-settings="fb1f5d0b219c2fd3e1a39c8e-|49" defer></script>