Vega SDKの評価をお聞かせください。
Vega SDKとOSバージョン2.0
Vega SDK 2.0、Vega OS 2.0、Vega開発者ツールは現在一般公開されており、オープンベータ版は終了しています。Vega OS 2.0はVega搭載のすべてのFire TVデバイスにロールアウトされているため、今すぐOS 2.0向けにビルドできます。 Vega 2.0では以下のことが可能になります。- React Native 0.83を使用して、より高速で応答性の高いアプリをビルドします。 React Native 0.83が一般公開され、React 19、Reactコンパイラ、Hermes v1がリリースされました。Reactコンパイラはビルド時にメモ化を行うので、
React.memoまたはuseCallbackを手作業で追加する必要はもうありません。React Native DevToolsでパフォーマンスの問題をデバッグします。boxShadowやoutlineなどの新しいCSSプロパティを使用してフォーカスステートのスタイルを設定します。SDK 0.24以降、RN 0.83をサポートするライブラリが増えました。これらには、React Navigation、Reanimated、Lottieのほか、その他のExpoライブラリが含まれます。 - React Nativeアプリにネイティブ機能を追加します。 VegaネイティブAPIを使用して、C++でカスタムUIコンポーネントをビルドし、アプリ終了後に実行されるバックグラウンドタスクをスケジュールします。アプリの残りの部分はReact Nativeでビルドしてください。ネイティブツールはオープンベータ版です。
- AIの支援を受けて移行とビルドを行います。 AI用のAmazon Devices Builder Tools(ADBT)は、Vegaの開発にAIコーディングエージェントを使用する際におすすめの方法です。これを使用して、RN 0.72からRN 0.83へのアップグレードを計画したり、Fire OSアプリをVega向けReact Nativeに移行したり、パフォーマンスの問題をデバッグしたりしてください。
- ビルドする前に互換性の問題を把握します。
vega project doctorにJavaScript、TypeScript、およびネイティブコード用の互換性リンターが含まれるようになりました。アプリがターゲットとするすべてのOSバージョンで、使用できないAPIにフラグを立てます。
お知らせ
Vegaの一般提供状況とAPIの安定性
2.0以降、Vega APIサーフェスはSDKのマイナーリリース後も安定しています。重大な変更は、年に一度のメジャーリリースでのみ出荷されます。マイナーリリースは定期的に行われます。各マイナーリリースは手直しなしで導入でき、メジャーアップグレードは独自のタイムラインで計画できます。OSバージョン範囲のサポート
アプリのマニフェストで、サポートされるさまざまなOSバージョン(最小バージョンからターゲットバージョンまで)を宣言できるようになりました。ほとんどのVegaデバイスは最新のOSバージョンにアップデートされるため、ほとんどのアプリではminとtargetの両方を2.0に設定します。将来のリリースでは、一部のデバイスが最新のOSバージョンに対応しない可能性があります。アプリがそれらのデバイスにアクセスする必要がある場合は、サポートしている最も古いOSバージョンにminを設定し、互換性リンターを使用して新しいAPIを保護してください。
必要な対応: manifest.tomlの[os.version]を、アプリがサポートする範囲に設定し、再ビルドします。
ターゲットのOSバージョンを参照してください
TextInputの「完了」と「戻る」の動作が標準のReactNativeと一致
今後のVega OSリリースでは、submitBehaviorなしでReact Native 0.83で単一行のTextInputを実行しても、React NativeのデフォルトであるblurAndSubmitが使用されるようになります。[完了] を押すとonSubmitEditingが起動し、フィールドがぼやけてキーボードが閉じます。[戻る] ボタンを押すと、submitActionが'previous'に設定された状態でonSubmitEditingが起動し、同じ操作を行います。現在、[完了] 後もフィールドはフォーカスを維持し、[戻る] を押すとアプリに通知されずにキーボードが閉じます。submitBehavior="submit"が設定されているフィールド、複数行のフィールド、およびReact Native 0.72アプリは影響を受けません。
必要な対応: RN 0.83アプリがすべてのonSubmitEditingイベントをサブミッションとして扱う場合は、submitActionフィルターをオンにして、'previous'を却下として扱います。[完了] 後もキーボードを開いたままにするには、submitBehavior="submit"を設定します。詳細については、Handle Password Input Events(英語のみ)を参照してください。
互換性にかかわる重要な変更点
OSバージョンモジュールエントリがビルド時に生成されるようになりました
SDK 0.24では、vega project update-manifestがソースmanifest.tomlの[[needs.module]]および[[wants.module]]セクションに/com.amazon.vega.os@IVega_*エントリを書き込みました。SDK 2.0以降、ビルドはこれらのエントリを所有し、[os.version]から生成してパッケージマニフェストに書き込みます。これで、vega project update-manifestはminとtargetの値のみを書き込み、実行するたびにツール所有のモジュールエントリがソースマニフェストから削除されるようになりました。他のシステムモジュール用に宣言したモジュールエントリは保持されます。
SDK 0.24で作成されたプロジェクトでは、最初の実行でソース管理マニフェストから次の行が削除されます。
React Native 0.83ライブラリでディープインポートが解決されなくなりました
SDK 2.0以降、Vega向けReact NativeコアパッケージとVegaバージョンのGesture Handler、Lottie、React Navigation、Reanimated、React Native SVG、React Native Screensは、パブリックな JavaScript インターフェイスのみをnode_modulesに公開しています。パブリックAPIは変更されていません。RN 0.83アプリがトップレベルのインポートを使用している場合、影響はありません。ライブラリの内部実装パスに到達するディープインポートを使用すると、それらのパスが解決されなくなるため、ビルドが失敗します。この変更はRN 0.72アプリには影響しません。
必要な対応: RN 0.83アプリがディープインポートを使用している場合は、トップレベルのインポート(推奨)または遅延インポートに置き換えてください。Jestテストのいずれかがライブラリの内部実装に依存している場合は、代わりにテストコードでそれらのモジュールをモックしてください。
React Native 0.83では、React Linear Gradientがビルトインのスタイルプロパティに置き換えられました
React Native 0.83は、experimental_backgroundImageスタイルプロパティを通じて線形グラデーションをネイティブにサポートしています。スタイルプロパティはすべてのViewで標準CSSlinear-gradient()構文を受け入れます。@amazon-devices/react-linear-gradientライブラリは不要になり、RN 0.83ライブラリセットには含まれていません。RN 0.72アプリは影響を受けません。
@amazon-devices/react-linear-gradient依存関係を削除し、Viewで<LinearGradient>コンポーネントをexperimental_backgroundImageのスタイルプロパティに置き換えます。
LinearGradient with the backgroundImage style prop(英語のみ)を参照してください
React Native 0.83では、@amazon-devices/shopify__flash-listの代わりに@shopify/flash-listを使用します
React Native 0.72では、Vegaは独自のFlashList実装を@amazon-devices/shopify__flash-listとして提供しました。React Native 0.83では、代わりにパブリックFlashListパッケージ@shopify/flash-listを使用してください。@amazon-devices/shopify__flash-listパッケージはReact Native 0.83アプリでは使用できないため、まだインポートしているアプリは実行時に失敗します。RN 0.72アプリは影響を受けません。
必要な対応: RN 0.83に移行するときは、@amazon-devices/shopify__flash-list依存関係を@shopify/flash-listに置き換え、インポートを更新してください。
実験的なAPIはサポートされなくなりました
SDK 0.24は、Vega SDKの試験運用APIが廃止されることを発表しました。SDK 2.0以降、実験的なAPIはサポートされなくなりました。 必要な対応: アプリで試験運用版APIを使用している場合は、SDK 2.0でビルドする前に、サポートされているAPIに移行してください。アプリ内の実験的なAPIを見つけて移行を計画するには、AIバージョン1.0.19以降のAmazon Devices Builder Tools(ADBT)を使用してください。新機能
C++でのネイティブUIコンポーネントとバックグラウンドタスクのビルド
Vega向けReact Nativeアプリには、C++で記述されたビューとモジュールを含めることができ、他のコンポーネントやモジュールと同様にJavaScriptからそれらを使用できるようになりました。React Native 0.83の2つのサンプルアプリがその方法を示しています。どちらもFire TV StickとVega仮想デバイスで動作します。- ネイティブUIコンポーネントのサンプル: Reactツリー内のVega UIツールキットで構築されたC++ビューをレンダリングします。このサンプルはJavaScriptからネイティブコードにプロパティを渡し、イベントをJavaScriptに送り返します。また、D-padによるフォーカス、アニメーション、画像のプリフェッチ、VoiceViewのアクセシビリティについても説明します。
- 定期バックグラウンドタスクのサンプル: VegaタスクマネージャーをC++ Turboモジュールでラップするので、アプリはヘッドレスJavaScriptタスクを繰り返しスケジュールで実行できます。スケジュールは、アプリを閉じた後もそのまま残ります。最小間隔は60秒で、1回の実行には最大5分かかります。
PeriodicTasks Turbo Moduleをアプリにコピーします。
詳しくは、ブログ投稿Enhance your React Native App with Vega native APIs(英語のみ)を参照してください。
Vega Studioでの編集中にアクセシビリティの問題を見つけて修正
Vega StudioのA11yインスペクターは、編集中に.tsxファイルと.jsxファイルをチェックします。VoiceViewなどの支援技術では説明できないコンポーネントや操作できないコンポーネントにフラグを付け、簡単な修正を提案します。インスペクターはVega ESLintプラグインと同じルールを使用するため、結果はビルドパイプラインと一致します。Vega Studio 0.24.2以降ではデフォルトでオンになっています。 Vega Studioのアクセシビリティ問題の発見と修正を参照してくださいJavaScriptとTypeScriptの互換性リント
minがtargetよりも低い場合、min後に導入されたAPIが、アプリがサポートするすべての端末に存在しない可能性があります。vega project doctorにより、ソースコードがSDK互換性マニフェストと照合され、次の3つのルールがレポートされます。
no-unguarded-os-api(エラー):min後に導入したAPIはガードなしで使用されます。no-removed-api(エラー):min以前に削除されたAPIはまだ使用中です。warn-deprecated-api(警告):target以前に廃止されたAPIがまだ使用されています。
@amazon-devices/kepler-compatibilityからisPresentOnOS()チェックでラップし、フォールバックを提供するか、minをレイズしてください。isPresentOnOS()の2番目の引数は、OSバージョンではなく、APIを提供するライブラリのバージョンです。チェックが失敗するとvega project doctorが0以外のステータスで終了するので、これをCIパイプラインのゲートとして使用できます。
ネイティブコードの互換性リント
kepler.projectTypeがnativeに設定されているプロジェクトでは、vega project doctorはCおよびC++ソースもチェックします。このレポートでは、min後に追加されたOmniKitインターフェイス、およびmin以前に削除された、またはtargetによって廃止されたインタフェースに対する保護されていないQueryInterface呼び出しが報告されます。オプションの新しいインターフェイスを使用するには、TryQueryInterface<T>()を呼び出し、nullptrを確認してください。minで保証されているインターフェイスにのみQueryInterface<T>()を使用してください。
Upgrade Your App’s OS Version Compatibility(英語のみ)を参照してください
コマンドラインからアカウントログインの統合を確認
Vegaデバイスにプリインストールされている新しいkcp-cli-v2ツールを使用すると、別のテストハーネスなしでアプリのContent Launcherアカウントのログインステータスを確認できます。アプリのコンポーネントシェルから、kcp-cli-v2 account-login read-statusを実行して現在のログインステータスを読み取ります。アプリにログイン/ログアウトするときに、kcp-cli-v2 account-login watch-statusを実行してログインステータスの変化をリアルタイムで監視します。このツールには開発者モードとサイドロードされたアプリが必要で、Vega仮想デバイスでは動作しません。
Test Content Launcher Integration(英語のみ)を参照してください
機能改善
React Native SVGでのTextPathの完全サポート
@amazon-devices/react-native-svgではTextPath要素が完全にサポートされるようになったため、テキストを画像として事前にレンダリングしなくても、円形のラベルや曲線の見出しなど、曲線または任意のパスに沿ってテキストをレンダリングできます。
react-native-svgを参照してください
MSEセグメントの境界を越えたスムーズなオーディオ
W3Cメディアパイプラインは、Media Source Extensionのオーディオスプライスアルゴリズムを実装し、重複するオーディオフレームを処理するようになりました。この変更以前は、広告の挿入ポイントやピリオドの境界などで、重複またはパディングされたオーディオセグメントを追加したアダプティブストリームでは、クリック音、ギャップ、ドリフトが聞こえることがありました。デコードされた(PCM)オーディオは、オーディオシンクに到達する前にトリミングおよびリニアライズされるようになりました。これにより、アプリに変更を加えることなく、セグメントの境界を越えて再生が継続するようになりました。 Vega向けReact NativeのW3C Media APIを参照してください解決済みの問題
W3Cメディア機能チェックのAC-3およびE-AC-3コーデック文字列
navigator.mediaCapabilities.decodingInfo()では、ac3、eac3、またはec3コーデック文字列を使用する設定は拒否されなくなりました。この修正の前は、これらの文字列はAV1コーデックパーサーにルーティングされていたため、呼び出しが失敗し、Shaka PlayerなどのプレーヤーがAC-3オーディオのすべてのバリアントを除外していました。これとは別に、video/mp2t; codecs="avc1.4D401F,ac3"などのコーデック文字列を組み合わせたMPEG-TS SourceBufferは、ビデオを再生しましたが、AC-3オーディオトラックをサイレントにドロップしました。これらのストリームは、MPEG-TSのAC-3をサポートするデマルチプレクサーを使用するようになったため、オーディオが再生されます。
dash-rel-v5.0.0-r1.8でのdash.js安定性の修正
dash.jsのVegaリリースには、以下の修正が含まれています。- dash.jsは、再試行のたびにエラーを報告するのではなく、再試行の制限に達したときに1回だけエラーを報告するようになりました。これはアップストリームのdash.js 5.0.0の動作と一致します。
再生の一時停止中のビデオサーフェスのサイズ変更
再生の一時停止中にビデオサーフェスのサイズを変更すると、一時停止したフレームが新しいサイズに拡大されないか、再開する前にビデオが一時的に間違った位置に表示されました。コンポジターは最後のフレームを新しいサイズで再表示するようになったため、ピクチャーインピクチャーレイアウトとマルチビューレイアウトは一時停止状態で正しくサイズ変更されます。MSSEモードでイベントを検索
メディアソースサンプル拡張(MSSE)モードを使用するネイティブアプリが、IMediaSampleSourceTrackでseek()を呼び出してもseekedイベントを受信しませんでした。メディアパイプラインはシーク完了コールバックを登録するようになり、シークが完了すると、IHtmlMediaElementEventListenerはtimeupdateとseekedを受信するようになりました。MSSEモードでは、seek()は非同期です。
フォーカスが変更された後のTextInputカーソル位置
TextInputが別のフォーカス可能な要素の隣に座っているときに、D-padでフォーカスを遠ざけて戻すと、カーソルが毎回1文字移動しました。D-padの押下によるキーアップイベントは、フォーカスがすでに移動した後にTextInputに届きました。これで、カーソルは元の位置にとどまります。
vpm install-asyncがインストール後に終了
vpm install-asyncでINSTALLATION_COMPLETEDが出力されますが、--token引数なしで実行しても終了せず、自動テストスクリプトがブロックされました。これで、インストールが完了するとコマンドが終了します。回避策として--tokenを追加した場合は、削除できます。
W3C Media APIリファレンスのフォーマット
W3C Media APIリファレンスがタイプリンクと複数行の説明を正しくレンダリングするようになりました。これは、MediaCapabilitiesKeySystemConfiguration、VideoPropsのscalingmodeプロパティ、HTMLVideoElement、AudioPlayerに影響します。
AppiumのテストがOS 1.2以降で再び動作
一部のOS 1.2ビルドでは、Appiumが使用する自動化ツールキットサービスがデバイス上で起動しませんでした。ポート8383はリスニング中と表示されましたが、リクエストを処理したプロセスはありませんでした。findElement、takeScreenshot、getPageSourceなどのAppiumコマンドが、socket hang upまたはECONNRESETで失敗し、開発者モードを再度有効にしても効果はありませんでした。自動化ツールキットサービスが開発者モードで起動するようになったため、Appiumセッションは期待どおりに接続および実行されます。
既知の問題
RN 0.83のアプリが、RN 0.72ランタイムに依存関係が取り込まれると、起動時にクラッシュする
RN 0.83アプリがRN 0.72用にビルドされたライブラリバージョンに依存している場合、RN 0.72ランタイムは同じプロセスに読み込まれ、SIGABRTまたはSIGSEGVを使用して起動時にアプリがクラッシュします。デバイスログでFailed to get system bundle path for: index.amzn__react-native-kepler-2.hermes.bundleが表示されます。最も一般的な原因は@amazon-devices/kepler-ui-components 2.xで、これは@amazon-devices/keplerscript-native-ui-componentsおよびバンドルされているRN 0.72ランタイムに依存しています。
回避策: @amazon-devices/kepler-ui-componentsを3.0.0以降にアップグレードしてください。@amazon-devices/react-linear-gradient``experimental_backgroundImageスタイルプロパティに置き換えます(Replace LinearGradient with the backgroundImage style prop(英語のみ)を参照)。クリーンリビルド後、keplerscript-app-config.jsonでRN 0.72システムバンドルがリストされていないことを確認します。
Fire TV Stick HD(2026)でHEVC再生が失敗する
OS 2.0を実行しているFire TV Stick HD(2026)では、HEVCハードウェアデコーダーは使用できません。HEVCストリームはエラーイベントなしで無期限にロードされ、KeplerMediaDescriptor.queryMediaCapabilitiesSync()では、CodecMimeType.MIME_HEVCのデコーダは返されません。H.264の再生には影響しません。
回避策: 再生する前に、KeplerMediaDescriptorにHEVCサポートを照会し、デコーダが返されない場合はH.264ストリームにフォールバックします。
ビデオデコーダーを作成できない場合でもエラーイベントが発生しない
メディアパイプラインがビデオデコーダーを作成またはリンクできない場合、JavaScriptにerrorイベントが送信されません。再生の読み込みが終わらないように見えます。再生前にサポートされていないコーデックを検出するには、KeplerMediaDescriptor.queryMediaCapabilities()を使用します。
MPEG-TSのHEVCライブHLSが起動しない
HEVCビデオをMPEG-TSセグメントに伝送するライブHLSストリームでは、ビデオは表示されません。タイムスタンプオフセットが2回適用されるので、サンプルには負のタイムスタンプが付いてドロップされ、Shaka Playerは繰り返し先へシークします。H.264ストリームとHEVC VODストリームは影響を受けません。 回避策: Shaka Playerで、manifest.hls.sequenceModeをtrueに設定します。
アペンドの進行中にremoveSourceBuffer()がフリーズする
その SourceBufferでまだappendBuffer()が進行中であるときにMediaSource.removeSourceBuffer()を呼び出すと、呼び出しによってJavaScriptスレッドがブロックされ、システムが応答しないとしてアプリケーションを停止します。呼び出しではInvalidStateErrorはスローされません。
回避策: SourceBufferを削除する前に、そのupdatingプロパティがfalseであることを確認するか、updateendイベントが発生するまで待ってください。
ビデオサーフェスがピクセル縦横比を無視する
KeplerVideoSurfaceViewが、デコードされたフレームを正方形ピクセルでレンダリングし、ストリームのピクセル縦横比を無視します。ディスプレイアスペクト比16:9の720x576放送ビデオなどのアナモルフィック標準解像度コンテンツは、横方向に絞られて表示されます。strechを含むすべてのscalingmodeの値は、バッファーの縦横比を保持するため、アプリ内で縦横比を修正することはできません。
複数期間のDASHマニフェストが大きいと、dash.jsアプリがフリーズすることがある
ネイティブXMLパーサーはShaka Playerでのみ使用できるため、dash.jsはJavaScriptでマニフェストを解析します。広告ブレークごとにピリオドを追加するライブDVRストリームは、マニフェストを更新するたびに大きくなります。約25~60分後、1回の更新でJavaScriptスレッドがブロックされ、システムが応答しないとしてアプリケーションを停止するほど長くなります。 回避策: プレーヤーをヘッドレスJavaScriptサービスで実行して、マニフェスト処理がUIスレッドをブロックしないようにします。アプリで、マニフェスト全体に対してログを出力したりJSON.stringifyを実行したりしないでください。
HMACキーは正確に256ビットである必要がある
@amazon-devices/keplercryptoのWebCrypto.subtle.importKey()は、長さが256ビットと正確に一致しないHMAC-SHA-256キーを拒否し、NotSupportedError: A key length greater than the hash length (256 bits) is not supportedが出力されます。
回避策: 512ビットより長いキーの場合は、インポートする前にSHA-256でキーをハッシュします。これによって同じHMAC結果が得られます。その他のキー長については、修正がリリースされるまで別のHMAC実装を使用してください。
スクリーンセーバーが、スマートフォンコントローラーでゲームプレイ中に起動する
スクリーンセーバーは、ユーザーがペアリングされたスマートフォンをコントローラーとしてクラウドストリーミングゲームをプレイしている場合でも、ローカル入力がない状態で5分後に起動します。電話からの入力はクラウドセッションに送られるため、デバイスはユーザーアクティビティを登録しません。Vegaは画面をオンにしておくためのAPIを提供していません。アプリがディスプレイのリフレッシュレートを変更できない
requestConfigChange()やenableAutoConfigSwitch()などの状態を変更するDisplayManagerAPIにはcom.amazon.graphics.privilege.display.manager権限が必要ですが、サードパーティのアプリでは使用できません。これがないと、commitStates()はコミットIDを返しますが、変更を加えず、onCommitSuccessまたはonCommitFailureを呼び出しません。アプリは、23.976や50fpsなどのコンテンツのフレームレートに合わせて出力を切り替えることはできません。
「Alexa、前へ」がアプリに表示されない
再生中にユーザーが「Alexa、前へ」と言うと、アプリのメディア再生ハンドラーは前のコマンドを受信せず、Alexaはコマンドが機能しないと応答します。「Alexa、次へ」と「Alexa、一時停止」は想定どおりに機能します。VPN ManagerがIPv6トラフィックをルーティングしない
VPN Manager APIはWireGuardのみをサポートし、IPv6トラフィックをトンネル経由でルーティングしません。IPv6トラフィックがVPNを経由せずにデバイスから送信され、addRoute()はVPNのIPv6 CIDRを拒否し、Invalid route CIDR formatが出力されます。IPv6のサポートは将来のリリースで予定されています。
PNGスプラッシュスクリーンアニメーションが低フレームレートで再生される
多数のフルHD PNGフレームで構成されるスプラッシュスクリーンアニメーションは、約8fpsで再生され、表示されるまでに数秒かかることがあります。デバイスはCPU上の各PNGをデコードします。 回避策: フレームをASTCとしてエンコードし、assets/raw/のSplashScreenImages.zipの隣にcompressedSplashScreenImages.zipとしてパッケージ化します。ASTCスプラッシュアニメーションは30fpsで再生されます。今回のリリースでは、ASTCスプラッシュスクリーンは、初回起動後、デバイスが再起動するまで毎回黒く表示されることがあります。
クラッシュレポートライブラリでメモリ不足の停止をキャプチャできない
カーネルがメモリ制限を超えたためにアプリを停止すると、プロセスはSIGKILLを受信するため、Sentryなどのクラッシュレポートライブラリはクラッシュを記録できません。現在、tryGetLastTerminationData()はアプリが応答しない終了のみを報告しています。
VoiceViewを開発者モードシェルから有効にできない
vdcm set "com.amazon.devconf/system/accessibility/VoiceViewEnabled" "ENABLED"は開発者モードのシェルでは失敗し、No permission for operationが出力されます。VoiceViewをオンにするには、代わりにデバイスのアクセシビリティ設定を使用してください。
ifconfigが開発者モードのシェルで機能しない
開発者モードシェルは/proc/netにアクセスできないため、ifconfigはネットワーク情報を返しません。VDA over TCP/IPのデバイスのIPアドレスを確認するには、デバイスで [設定] > [ネットワーク] を選択します。
TypeScript 4プロジェクトが@types/node 26でビルドできない
プロジェクトでTypeScript 4を使用しており、@types/node 26.xを直接または別の依存関係経由でインストールすると、型チェックとビルドが失敗し、@types/node宣言ファイルにエラーが表示されます。@types/node 26.xはTypeScript 4がサポートしていないタイプスクリプト構文を使用しています。
@types/nodeはコミュニティが管理するパッケージで、Vega SDKには含まれていません。Vega SDKは@types/nodeバージョンを設定しないため、この問題はどのSDKバージョンのプロジェクトにも影響する可能性があります。
回避策: たとえば、devDependencies内のtypescriptをバージョン5(例:5.8.3)に更新します。TypeScriptをまだアップグレードできない場合は、devDependenciesまたはoverridesで、@types/nodeを26より前のバージョンに固定してください。その後、npm installを実行して再ビルドします。

