Personal Training & Nutrition
短期的なダイエットで終わらせない。生涯役立つ、
科学的根拠に基づいたトレーニングと食習慣を身につけます。
無料カウンセリングを予約する
完全オーダーメイドのパーソナルトレーニング
姿勢分析に基づき、お客様の目的、体力レベル、ライフスタイルに合わせた最適なメニューを専属トレーナーが作成します。
生涯役立つ、実践的な栄養コンサルティング
無理のない食事指導とライフスタイルへの統合を重視。リバウンドしない食の知識と習慣をマンツーマンで指導します。
挫折させない、徹底したモチベーションサポート
目標達成まで寄り添い、メンタル面もサポート。トレーニング継続の習慣化をサポートする独自の仕組みを提供します。
30代 男性 | 会社員
体脂肪率 8%減、姿勢改善に成功
「食事の知識が身につき、リバウンドの不安がなくなりました。」
50代 女性 | 主婦
長年の腰痛が改善、体力が向上
「トレーナーの熱心なサポートのおかげで、諦めずに続けられました。」
20代 女性 | サービス業
理想のボディラインを実現、自信アップ
「無理なく続けられるレシピ提案が本当に助かりました!」
全ビフォー&アフターを詳しく見る →
短期的な変化だけでなく、お客様の人生を豊かにする「一生モノの健康習慣」を提供します。健康を手段として、充実した毎日を送るサポートこそが私たちの使命です。
- ♦ 知識と実践の統合
- ♦ 継続可能な習慣のデザイン
- ♦ お客様の人生全体を豊かに
全トレーナーのプロフィールを見る →
まずは無料カウンセリングで、あなたの目標と現在の課題をお聞かせください。
無料カウンセリングを予約する (30分)
お電話でのお問い合わせ: 03-XXXX-YYYY (平日 10:00 – 18:00)
//
//
// メインビジュアルの背景画像をAIで動的に生成・表示するためのスクリプトです。
//
const userPrompt = “A cinematic, professional photograph of a fit Japanese woman in her 30s with a healthy, toned physique doing an intense functional training exercise (like lifting weights or kettlebell swings) in a modern, dark gym. The lighting is dramatic and moody, with high-contrast orange and deep black shadows. She looks focused and powerful. Hyperrealistic, fitness photography style.”;
const apiKey = “”;
const apiUrl = `https://generativelanguage.googleapis.com/v1beta/models/imagen-4.0-generate-001:predict?key=${apiKey}`;
// Function to perform exponential backoff retry for fetch requests
const fetchWithRetry = async (url, options, maxRetries = 5) => {
for (let i = 0; i < maxRetries; i++) {
try {
const response = await fetch(url, options);
if (response.status !== 429) {
return response;
}
// If 429, wait using exponential backoff
const delay = Math.pow(2, i) * 1000 + Math.random() * 1000;
await new Promise(resolve => setTimeout(resolve, delay));
} catch (error) {
// For network errors, wait and retry
const delay = Math.pow(2, i) * 1000 + Math.random() * 1000;
await new Promise(resolve => setTimeout(resolve, delay));
}
}
throw new Error(‘Request failed after multiple retries’);
};
// Image generation function
async function generateImageAndDisplay() {
const heroSection = document.getElementById(‘hero-section’);
if (!heroSection) return;
// 1. Show loading indicator
heroSection.style.backgroundImage = ‘none’;
heroSection.classList.add(‘bg-gray-900’, ‘flex’, ‘items-center’, ‘justify-center’);
// Temporarily replace content with loading spinner
const originalContent = heroSection.innerHTML;
heroSection.innerHTML = `
`;
// 2. Prepare payload and call API
const payload = {
instances: [{ prompt: userPrompt }],
parameters: { “sampleCount”: 1 }
};
try {
const response = await fetchWithRetry(apiUrl, {
method: ‘POST’,
headers: { ‘Content-Type’: ‘application/json’ },
body: JSON.stringify(payload)
});
if (!response.ok) {
throw new Error(`API returned status ${response.status}`);
}
const result = await response.json();
const base64Data = result.predictions && result.predictions.length > 0 && result.predictions[0].bytesBase64Encoded;
if (base64Data) {
const imageUrl = `data:image/png;base64,${base64Data}`;
// 3. Update the HTML section with the generated image
heroSection.classList.remove(‘bg-gray-900’, ‘flex’, ‘items-center’, ‘justify-center’);
heroSection.style.backgroundImage = `url(‘${imageUrl}’)`;
heroSection.style.backgroundSize = ‘cover’;
heroSection.style.backgroundPosition = ‘center’;
heroSection.style.filter = ‘brightness(0.7)’; // Keep filter for readability
// Restore original content structure
heroSection.innerHTML = originalContent;
} else {
throw new Error(‘Image data was not found in the response.’);
}
} catch (error) {
console.error(“画像生成エラー:”, error);
// Fallback to placeholder image with error message
heroSection.classList.remove(‘bg-gray-900’, ‘flex’, ‘items-center’, ‘justify-center’);
heroSection.style.backgroundImage = `url(‘https://placehold.co/1920×800/800000/ffffff?text=Image+Generation+Failed%0A%E5%86%99%E7%9C%9F%E7%94%9F%E6%88%90%E3%81%AB%E5%A4%B1%E6%95%97%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F’)`;
heroSection.style.backgroundSize = ‘cover’;
heroSection.style.backgroundPosition = ‘center’;
heroSection.style.filter = ‘brightness(0.7)’;
// Restore content but show error indication (optional, content is already there)
heroSection.innerHTML = originalContent;
const h1 = heroSection.querySelector(‘h1’);
if (h1) h1.innerHTML = ‘画像生成に失敗しました
目標達成に導く指導。’;
}
}
// Ensure the script runs after the DOM is loaded
window.onload = function() {
// Only trigger image generation if the default placeholder is detected
const heroSection = document.getElementById(‘hero-section’);
if (heroSection && heroSection.style.backgroundImage.includes(‘placehold.co’)) {
generateImageAndDisplay();
}
}