はじめに
こんにちは ! AWS Solution Architect の奥村美生 (みみ) です。
2025 年 3 月 1 日、日本の AWS ユーザーグループ JAWS-UG (AWS User Group – Japan) によるイベント「JAWS DAYS 2025」でのライトニングトーク 「恒例 ! AWS エンジニアたちの怒涛の LT」にて、私が開発したアプリケーション「JAWS な answer💡〜 JAWS が JAWSに答えます! 〜」を発表しました。本記事では、このアプリケーションの機能とアーキテクチャについてご紹介します。このアーキテクチャを参考にすることで、LINE と Amazon Nova Canvas を活用した AI 画像生成サービスを効率的に開発することができます。
アプリ開発の動機は、JAWS DAYS 2025 での登壇が決まった際に、JAWS-UG のサメのロゴ を生成 AI で面白く加工できないかと考えたことがきっかけです。2024 年の AWS re:Invent で発表された、AWS 独自の基盤モデルである「Amazon Nova Canvas」の機能を活用し、創造的なアプリケーションを実現しました。
実際に JAWS DAYS 2025 では、参加者の皆様にアプリを体験していただき、Image Variation 機能を使ってサメのロゴがドラゴン風になるなど、様々な創造的なロゴバリエーションを生成することができました。参加者の皆様の想像力が形になる瞬間を共有できたことが何よりの喜びです。イベント後には機能を拡張し、Image Conditioning 機能も追加したことで、ロゴの構図を保ちながらキリン柄に変身させるなど、さらに多様な表現が可能になりました。

生成された画像例

builders.flash メールメンバー登録
JAWS な answer💡の機能
遊び心あふれる画像生成機能
シンプルなコマンドで、誰でも気軽にクリエイティブな体験が可能です。あなたならサメをどんな姿に変身させますか ?
Nova Canvas Image Variation の場合

Nova Canvas Image Conditioning の場合

【主な違いと使い分け】
Image Variation は自由度が高く、同じテーマでまったく新しい表現を探りたい場合に適しています。例えば、ロゴのコンセプトから派生した様々なイラストやデザインの案出しなどに効果的です。
一方、Image Conditioning は元のデザインの構造を重視するため、ロゴやブランドイメージの微調整、既存デザインのカラーバリエーション作成など、より細かな制御が必要な場合に適しています。
身近で頼れるチャット機能
技術的な質問、仕事の相談、趣味の話、ちょっとした疑問。どんな形式でも大丈夫です。あなたの「知りたい」気持ちに、いつでも寄り添います。

アーキテクチャ説明
Amazon Bedrock Nova Canvas の実装詳細
Image Variation 機能
Nova Canvas の Image Variation 機能は、既存の画像をベースに、テーマは維持しながらも自由な解釈で新しいバリエーションの画像を生成できる機能です。
主な特徴
大胆な変換:元画像のコンセプトを保ちながらも、構図、ポーズ、背景などを大きく変更可能
創造的な拡張:元の要素をもとに、新しい要素や状況を追加した画像を生成
多様な解釈:同じ入力画像から全く異なるスタイルやアプローチの画像を生成可能
活用例
JAWS-UG のサメロゴをドラゴン風、忍者風、宇宙飛行士風など様々なキャラクター設定で再解釈
「サメがオフィスで働いている」「サメが海辺でサーフィンしている」など、新しいシチュエーションを追加
元のデザイン要素を活かしながら、全く新しい構図やレイアウトで表現
コード例
このコードは Nova Canvas モデルを使用して画像のバリエーションを生成するための Bedrock API リクエストの例です。
{
"taskType": "IMAGE_VARIATION",
"imageVariationParams": {
"images": string[] (list of Base64 encoded images),
"similarityStrength": float,
"text": string,
"negativeText": string
},
"imageGenerationConfig": {
"height": int,
"width": int,
"cfgScale": float,
"seed": int,
"numberOfImages": int
}
}
実際のコード
実際の画像のバリエーション生成を行うための API リクエストは以下の通りです。
{
"taskType": "IMAGE_VARIATION",
"imageVariationParams": {
"images": [image_data],
"similarityStrength": 1.0,
"text": input_text,
"negativeText": "bad quality, low resolution, cartoon"
},
"imageGenerationConfig": {
"height": 512,
"width": 512,
"cfgScale": 10,
"seed": 12,
"numberOfImages": 1
}
}
主要パラメータの説明
- text : 生成画像の特性を指定するプロンプト。1 ~ 1024 文字の長さである必要がある。
- negativeText : 生成画像に含めたくない特性を指定。1 ~ 1024 文字の長さである必要がある。
- images : 変換の元となる入力画像。1 ~ 5 枚まで追加できる。
- similarityStrength : 元の入力画像との類似度制御 (0.2〜1.0)。値が低いほどより創造性が高まり、高いほど入力画像に忠実になる。今回はできるだけ元の画像の原型を留めて欲しかったので 1.0 に設定しました。
- cfgScale : プロンプトへの忠実度を制御 (値が高いほどプロンプトに忠実)。
- seed : シード値。今回はデフォルトの 12 に設定しました。
生成画像
イメージ:ドラゴン風
元のサメの色やエラの具合、体の向きや姿勢、背景の波飛沫はそのままに、ドラゴンスタイルのサメに仕上がっています。

Image conditioning 機能
Nova Canvas の Image conditioning 機能は、元画像の構図やレイアウトを厳密に保持しながら、色調やテクスチャなどの視覚的要素を変更できる機能です。
主な特徴
- 構造の忠実な保持:元画像の形状、配置、比率などの基本構造を維持
- スタイル変換:同じ構図のまま、異なる画風、素材感、色調などを適用
- エッジ保存処理:CANNY_EDGE モードを使用することで、元画像の輪郭線を正確に保持した変換が可能
活用例
- JAWS-UG のサメロゴの形状はそのままに、キリン柄、ヒョウ柄、亀の甲羅模様などの異なるテクスチャに変換
- ロゴの配置や比率を維持したまま、金属質、木目調、大理石などの素材感を表現
- 元のデザインの認識性を保ちながら、季節やブランドイメージに合わせた配色バリエーションを作成
コード例
コード例
{
"taskType": "TEXT_IMAGE",
"textToImageParams": {
"conditionImage": string (Base64 encoded image),
"controlMode": "CANNY_EDGE" | "SEGMENTATION",
"controlStrength": float,
"text": string,
"negativeText": string
},
"imageGenerationConfig": {
"width": int,
"height": int,
"quality": "standard" | "premium",
"cfgScale": float,
"seed": int,
"numberOfImages": int
}
}
実際のコード
実際のコード
{
"taskType": "TEXT_IMAGE",
"textToImageParams": {
"conditionImage": image_data,
"controlMode": "CANNY_EDGE",
"controlStrength": 1.0,
"text": "A 2D illustration of a crescent-shaped character with a head on the top left, a dorsal fin on the top right, an orange back , tail on the left bottom, and a white belly. In the center are large wave splashes and Mt. Fuji. Flat design, cartoon style, bright colors, simple shapes and clean lines.Add the following sentences as an arrangement."+input_text,
"negativeText": "bad quality, low resolution"
},
"imageGenerationConfig": {
"width": 512,
"height": 512,
"cfgScale": 10,
"seed": 290407041,
"numberOfImages": 1
}
}
主要パラメータの説明
- conditionImage : 構図やレイアウトを保持するための元となる画像。
- controlMode : 入力画像の処理方法を指定。デフォルトは "CANNY_EDGE" 。
- CANNY_EDGE : 画像の輪郭線 (エッジ) を検出し、その線に沿った生成を行う。元画像の細かい線や形状を正確に保持したい場合に適している。
- SEGMENTATION : 画像を領域ごとに分割し、大まかな構造や配置を維持しながら生成を行う。細部よりも全体的な構成を重視し、より創造的な表現が可能。
- controlStrength : 入力画像との構造的類似度の制御 (0〜1.0)。値が低いほど創造性が高まり、高いほど入力画像の構造に忠実になる。デフォルトは 0.7.
- seed : シード値。シード値の選定が最大の技術的課題でした。Nova Canvas モデルの応答の質と一貫性を確保するため、数多くのシード値でテストを重ねました。現在使用しているシード値でも一定の結果は得られていますが、「これが最適解である」という確証は得られていません。シード値と出力品質の関係性については、依然として多くの謎が残されている状況です。
生成画像
元のサメの輪郭や向き、背景の富士山や波などの構図やレイアウトはそのままに、キリンの模様を表現しています。

工夫ポイント
ユーザー体験の最適化
まとめ
実際に開発を進める中で感じたのは、シード値とプロンプトの設定の難しさです。同じプロンプトでも、シード値によって全く異なる画像が生成されることがあり、結果の予測が難しい側面があります。プロンプトのわずかな言い回しの違いや、シード値の変更だけで生成される画像の質や雰囲気が大きく変わってくるのは、挑戦的でありながらも非常に興味深い体験でした。この「偶然性」と「制御」のバランスを探る過程自体が、AI 画像生成の魅力の一つだと感じています。
皆さんも是非 Nova Canvas で遊んでみませんか ? 直感的な操作で、AI の画像生成の力がグッと身近になりますよ。「こんな画像が作れたら面白いのに」というアイデア、Nova Canvas なら実現できるかもしれません !
筆者プロフィール
パブリックセクター技術統括本部 ソリューションアーキテクト

Did you find what you were looking for today?
Let us know so we can improve the quality of the content on our pages