【アセット】Simple IAP Systemマニュアルの和訳【unity】

Unity

記述日 2020/7/6

 

unityアセット:Simple IAP System

unityでの課金を管理するunity iapを拡張して、使いやすくなるというアセットのようです。


購入したのでマニュアルを和訳してみました。

実際には使っていないので、使い勝手やバグの有無などはわかりません。

Playfabにも対応しているようです。

 

マニュアルの和訳

フルで見る場合はこちら

 

その他

 

 

検索用

C# unity アセット 課金

シンプルなIAPシステム

ドキュメンテーション

v4.3

 

  

スクリプトリファレンス1

1はじめに2

2 Unity 3でのアプリ内製品の作成

3ショップでの製品のインスタンス化5

4 IAPアイテムのプレハブのカスタマイズ5

5プログラミングとIAPコールバック7

6デバイスストレージの暗号化8

7ショップテンプレートの説明9

8領収書の確認10

9連絡先12

 

 

 

シンプルIAPシステムをお買い上げいただきありがとうございます!

あなたのサポートは大歓迎です。 

 

 

スクリプトリファレンス

www.リバウンド-games.com/docs/sis

 

 

 

    

 

  • はじめ

 

 

ビデオチュートリアルについては、YouTubeチャンネルをご覧ください

 

以下の請求プラグインの設定ウィンドウを開きますウィンドウ > シンプル IAP システム > プラグインの設定.新しいプロジェクトに簡易 IAP システムをインポートした場合、すべての Unity IAP ステータス チェックはOwOKではありません.

Unity IAPを有効にする必要はありませんユーザーに課金したくない場合、ゲーム内で獲得したコインで剣を購入するなど、仮想製品と通貨のみが必要–です。しかし、リアルマネーでバーチャルグッズを販売する場合は、ユニティIAPの活性化が必要です。

 

[サービス] タブで Unity IAP を有効にしてインポートするに説明されているようにこの公式ページ.ユニティ2018以上:ユニティIAPには購入パッケージの対象ウィンドウ > パッケージマネージャ.同様にインポートする場合は、すべての Unity IAP が“ユニティ IAP ステータス”表示する必要があります わかりました.

 

切り替えによって選択されたプラットフォームで Unity IAP を使用するようにシンプル IAP システムに指示します。“ユニティ IAP の有効化”.課金プラットフォームを除外することで、Android上で実際のお金でアプリ内購入を行うことができますが、iOSでは購入できません。もしあなたなら’再完了, 前Ss“適用”.

 

Dぼろぼろ”IAPマネージャー”プレハブからシンプルなIAPシステム> プレハブ > リソースあなたのゲームの最初のシーンに。から開始します。‘オールセレクション’ シーンをしたい場合は、シンプル IAP システムのサンプル シーンを実行します (IAP マネージャは既にそこにあります)。

 

5オプション: プラグインのセットアップウィンドウで PlayFab サービス (アプリ内購入用のクラウド保存、仮想通貨、プレイヤーデータなど) の使用を有効にする場合PlayFabは、SimpleIAPSystem  > プレハブ > リソースからゲームの最初のシーンに 「PlayfabManager」プレハブをドラッグします。

 

をドラッグします。ショップマネージャー”プレハブからSIS > プレハブ表示するシーンにイナップ購入(あなた自身のショップシーン、または、含まれているテンプレートのいずれかを使用します)。

 

その他の請求書類: Unityでアプリ内製品を実際のお金でリンクする前に、まずアプリストア(Google Play、iTunes Connectなど)で作成する必要があります。アプリ内購入に初めて連絡を取る場合は、フォーラムのストア固有のガイドを参照してour forums、App Store での構成を成功に導いてください。

 

  • Unity でアプリ内製品を作成する

 

 

Unity では、IAP 設定エディタは IA Ps を管理するためのメインスポットです。 

Please open it by navigating to Window > Simple IAP System > IAP Settings. 

 

仮想通貨:仮想通貨と開始金額を定義し、アプリ内の他の仮想製品を購入するために使用できます。

アプリ購入 :ここでは、アプリ内製品のカテゴリを指定します。各カテゴリには、アプリ購入(識別子はアプリストア識別子と一致する必要があります)、仮想通貨パック(仮想通貨の量を自動的に付与する)、または仮想経済(real money) 製品(アプリにのみ存在する仮想製品)を追加するための「製品を作成する」buttonがあります。 

 

These are the product variables which need to be defined in the editor:

  • グループ:製品を追加するグループの一意の名前
  • 識別子: 一意の製品識別子
  • アイコン: アイコンとして使用するスプライト テクスチャ
  • タイプ :請求モデルの製品タイプ
  • 消耗品:実際のお金/通貨(例えばコイン)のために、複数回購入することができます
  • 消耗品:実質マネー/通貨(例えばボーナスコンテンツ)のための1回の購入
  • サブスクリプション:定期的にプレイヤーに実際のお金(例えば、サービットベースのコンテンツ)を請求します
  • タイトル説明: お店の商品の説明テキスト
  • 価格:製品価格(実質マネーの文字列値、仮想通貨のint値)。仮想製品は、価格がゼロの場合、事前購入として開始されます。
  • コスト/収益: 仮想経済製品の製品価格 (コスト)、または仮想通貨パックを購入するために自動的に付与される仮想通貨の金額 (収益).
  • 使用法: 消耗品を購入する場合、これは追加する必要がある金額です。現在の金額には、製品識別子 (製品識別子)を使用してアクセスできます。デフォルトは 1 です。この値を 0 に設定すると、すぐに消費済みとして扱われるため、何も保存されません。例えば、選択のための特別な弾丸:量>0、ゲーム内で買った一時的なパワーアップ:アムーンt = 0。
  • Fetch: ローカル製品データを取得した App Store データで上書きするかどうかを指定します (実際の商品にのみ適用されます)。また、PlayFab を使用する場合PlayFabは、PlayFab ダッシュボードから仮想製品データも取得されますPlayFab。
  • R: 要件ウィンドウを開きます。ユーザーは、最初に製品のロックを解除するために、この要件を満たす必要があります。詳細については、「IAP アイテムプレハブのカスタマイズ」セクションを参照してください。

 

プラットフォームのオーバーライド

複数の App Store に展開していて、同じ製品に対して異なる nt 識別子がある場合は、それらを何らかの形でマージする方法が必要です。それがプラットフォームのオーバーライドの目的です。彼らは、彼らの隣の折りたたみ式を拡大することによって、実際のお金IAP製品のためにのみ定義することができます。 

この例では、Google Play と Amazon以外のすべての App Store で商品識別子が「コイン」の場合、それらをプラットフォームのオーバーライド セクションに追加して上書きできます。

 

技術的な前提条件の一部を次に示します。

  • 仮想商品の場合は、最初に使用する必要のある 1 つ以上の仮想通貨を指定する必要があります。これは、資金の不一致や損失につながる可能性がありますので、生産中の通貨の名前を変更/削除することはお勧めしません。
  • IAP マネージャー pのリハブは、常にリソース フォルダーに保存します。IAP 設定エディタに変更を加える際、これらの変更は自動的にプレハブに保存されます。したがって、SIS の新しいバージョンにアップグレードする場合は、IAP マネージャー プレハブのローカル コピーを保持してください (インポート時にIAPManager プレハブと IAPListener スクリプトをオフにします)。
  • アプリで実際のお金の購入を復元するには、単に、お店のどこかに UI ボタンを追加し、UIButtonRestore コンポーネントをそれにアタッチします。サポートされているプラットフォームでは、内部的にこの製品のウィットを購入する識別子 “復元” 。IAP マネージャーはこれを認識し、サポートされているプラットフォームで appropriate 復元メソッドを呼び出します。復元ボタンを指定しないと、Apple はアプリを拒否します。トランザクションを復元する必要がないプラットフォームでは、コンポーネントは自動的に無効になります。これはすべての例のシーンで紹介されています。または、”restore” という識別子を持つ消耗品 IAP 製品を追加することもできます。

   

 

  • ショップで製品をインスタンス化する

 

 

ショップのシーンでショップマネージャープレハブはあなたのためにすべての作業を行います。それを見てみましょう。

Please open one of the example shop scenes, e.g. SimpleIAPSystem > Scenes > Vertical 

 

IAP Settings エディタの各グループに対して、製品をインスタンス化するビジュアル表現 (プレハブ) とコンテナcontainerの位置を定義するだけです。 SimpleIAP システム > プレハブ > 垂直/ホリスオンタルフォルダーに配置されているから選択するいくつかの定義済みの IAP アイテムプレハブがあります。シーンを再生すると、Shop Manager はコンテナの親となる各アイテムに対してこのプレハブをインスタンス化し、Unity の GridLayoutGroup コンポーネントは、それらをシーン内でうまく整列させます。

シーン内のコンテナトランスフォームには、IAPContainer コンポーネントがアタッチされている必要があります。

 

製品をシーン内のアイテムとしてインスタンス化した後、ショップマネージャーは、正しい状態に設定することも確認します。つまり、購入した製品のショップアイテムに購入ボタンが表示されなくなったり、装備されたアイテムの選択を解除するボタンが表示されたりします。 

Shop Manager は、パブリック変数として、ゲームオブジェクトと UI Text への参照を公開します。

 

 

  • IAP アイテム プレハブのカスタマイズ

 

 

前回の章で述べたように、IAP アイテムプレハブは、実行時に店舗内の IAP 製品を視覚化します。これらのプレハブにはIAPItem コンポーネントが添付されており、アイテムのすべての重要な側面 (説明ラベル、購入ボタン、アイコン テクスチャなど) への参照を持っています。製品の状態に基づいて、IAP Itemはプレハブ インスタンスの異なる部分を表示または非表示にします。 

   

ショップアイテムは、以前のユーザーのインターアクションに応じて、いくつかの異なる状態を持つことができます。

Default  (initial state) Purchased (user owns this product) 

 

Single Select (unequips others) Multi Select (does not unequip others) 

 

 

 

アイテムの可能な状態は、IAP 品目コンポーネントへの参照を割り当てることによって指定されます。

  • デフォルト:アイテムは少なくとも説明ラベル(タイトル/説明、価格)と購入ボタンが必要です
  • 購入済み: ゲームオブジェクトを「Sold」スロットに割り当て、販売された製品でアクティベートされます。
  • 単一選択:’選択ボタン’を割り当てるが、’選択解除ボタン’を空のままにします
  • マルチセレクト:’選択ボタン’と’選択解除ボタン’の両方を割り当てる
  • ロック済み:購入ボタン、説明ラベルなどを無効にして、まず「ロックラベル」と「ロック解除時に隠す」ゲームオブジェクトを表示して、プレハブfまたはロックされた状態を準備します。アイテムのロックが解除されると、’隠すロック解除時に非表示” と表示され、代わりに「ロック解除時に表示」と表示されます。

 

これは、IAP 設定エディタで定義された、Jetpack 製品の必須製品です。ラベルにカーソルを合わせると、その意味がわかります。たとえば、プレイヤーがレベル1に到達した場合、ここでジェットパックのロックを解除します。

縦横のメニューシーンは、カスタムサブメニューでこの製品を紹介します。

 

アップグレード (1 つの製品に対して複数のレベル) を指定することもできます。この商品の後に来る商品IDを入力するだけで、ショップアイテムは、ユーザーが購入した後、次のレベルに置き換えられます。アップグレードはシーンでインスタンス化する必要はありませんので、Prefab & Container スロットを空のままにすることができますscene,。「スピード」製品は、アイテムセクションに示されているこのサンプルです。 

 

   

 

  • プログラミングと IAP コールバック

 

 

プログラミングのほとんどは、次のような内部的に処理されています。

  • 購入後に消耗品/サブスクリプション製品を「購入済み」に設定する
  • 「通貨」製品を購入した後に仮想通貨を付与する(IAP設定エディタ経由)
  • 消耗品のカスタム使用量を追加する(IAP 設定エディタ経由)
  • 仮想製品購入時の通貨の減算など

ユーザーに素敵なフィードバックウィンドウを表示したい場合は、IAPListenerで広告を表示する必要があります(テキストを自分で定義できるため)。 IAPListener スクリプトには HandleSuccessfulPurchase メソッドがあり、これは、ユーザーが製品を購入したときに、(プラットフォームのオーバーライドではなく) グローバル識別子を追加することによって何が起こるかを示すメソッドです。

以下は、ゲーム内の任意の時点でプログラミングで実行できる例です。すべてのコード スニペットは、提案されたスクリプトの場所を示す例です。

IAP リスナースクリプトで、次の手順を実行します。

ショーメッセージ((「1000コインが残高に追加されました!); //カスタムテキスト付きの手数料のdbackを表示

 

レベルの開始時:

 

場合(DBManager.GetPurchase(“no_ads”)=0)  //製品が購入された場合、または上記のチェックの場合(DBManager .isPurchasedDBManager.isPurchased(“no_adsno_ads” )   //略語

 

 

ゲーム中:

 

DBManager.プレイヤーデータ(「箇条書き」)AsInt;仮想製品の残りの量を返す //します。

DBManager.プレイヤーデータを増やす(「弾丸」、-10);仮想製品の量を 10 減らす //減少

 

レベルの終わりに:

 

DBManager.セットプレイヤーデータ(「スコア」, 新しいシンプル JSON.JSONデータ(2250))。 //sアベニューハイスコア

DBManager.プレイヤーデータを増やす(“xp”,100);現在のユーザー エクスペリエンスを 100 で増やす //します。

DBManager.増資金((“コイン“、200);ユーザーの仮想通貨を 200 で増やす //値上げ

 

おそらく、いくつかの方法がDBManagerを使用していることに気づいたでしょう。  DBManagerは、当社のPlayerPrefsデータベースを管理し、購入、選択、仮想通貨、その他のプレイヤーに関連するデータを追跡します。基本的には、プレーヤーに関連するApp Purchaseまたはカスタムデータを変更したいときはいつでも、DBManagerのメソッドを呼び出す必要がありますDBManager。

SIS使用して名前空間を追加して、名前空間を含めるのを忘れないでください。独自のスクリプトの先頭に表示されます。利用可能なメソッドの完全なリストについては、 スクリプト リファレンス を参照してください。

 

  • デバイスストレージの暗号化

 

 

必要に応じて、デバイス上のDBManagerによって作成された値を暗号化できます。 IAPManager プレハブインスペクターで、これを有効にする”暗号化”を行います。Also, あなた自身の暗号化キーで”obfuscKey”を置き換えることを忘れないでください (iOS / Android上で8文字、Windows Phone 8で16文字).他の手法はより安全ですが、多くの App Store では、これらの標準でアプリを提出するときに暗号化登録番号 (ERN) が必要です。この手法では ERN は必要ありません。Apple のApp Store にアプリを提出する際に、アプリに暗号化が含まれているかどうかを確認するメッセージが表示されたら、[はい] をクリックします。アプリが除外の対象かどうかを確認する画面が表示された場合は、もう一度 [はい] をクリックすると完了です。

 

シンプル IAP システム データベースは Unity の

PlayerPrefsを使用すると、レジストリ ファイルで見ることができます。 

 

But there is actually an easier way:

Unity エディタで、データベース表示ウィンドウを開いて[ウィンドウ] > [シンプル IAP システム] > [データベースの表示]の下に表示すると、コンピュータに現在保存されている内容を確認できます。

 

レジストリでは、暗号化されていないデータと暗号化されたデータは次のようになります。

 

 

IAP テストの間にそのエントリをクリーンアップするのは良い練習氷です。 [ウィンドウ] > [シンプル IAP システム] > [データベースのクリア] ウィンドウを開き、SIS によって設定されたすべてのアプリ固有のデータを削除して、データベースをクリアします。

 

警告:  PlayerPrefs データベース実装 (DB マネージャ) は、変数のセットアップを 1 回だけ行う必要がある場合があります。実稼働バージョンで値を再び変更する場合は、アプリの既存の使用 rs に対して何らかのデータ引き継ぎを自分で実装する必要があります。そうしないと、データ損失のリスクが生じ、顧客の満足が失われる可能性があります。例:

  • IAP エディタで仮想通貨の名前を変更または削除する
  • IAP エディタでの IAP の名前の変更または削除
  • DB マネージャでの内部ストレージ パスの名前変更
  • DB マネージャで暗号化オプションを切り替える

リバウンドゲームは、使用、データ、利益の損失に起因するいかなる損害に対しても、シンプルIAPシステムの使用に起因する、または関連してアリスに対して一切責任を負いません。

 

 

  • ショップテンプレートの説明

 

 

ユニークなデザインのために、独自の画像をインポートし、あなたのゲームのスタイルに合わせてショップのシーンやIAPアイテムのプレハブを構築することを強くお勧めします。これにより、コンバージョン率が大幅に向上します。

  • リスト(例えばシーン’Vertical’/’水平’):これらはSISで最も基本的なサンプルであり、ゲーム内のコンテンツや通貨を含まない、実際のお金のための製品のみが含まれています。彼らはWindow – IAP’ game object with ScrollRects  (?)に加えて、コンテナーにアタッチされた IAPContainer コンポIAPContainer は、さまざまなデバイスの縦横比と解像度、およびシーン内の IAP アイテム プレハブの幅/高さに応じて、GridLayoutGroupのセル サイズを動的に調整します。IAPContainer では、高解像度の場合にアイテムの幅と高さの最大値を設定することもできます。
  • タブ(例えばシーン ‘垂直タブ’/’水平タブ’):  1つのスクロールのRectが十分でない場合、多分いくつかがあります!これらのシーンには、ゲーム内のコンテンツ製品や通貨も含まれています。各カテゴリには、左側の対応するボタンがトリガーされるとアクティブになるシーン内の個別のウィンドウがあります。たとえば、項目のボタンは ‘ウィンドウ -項目’ を有効にしますが、それ以外の項目はすべて無効にします。これらのシーンでは、テキストコンポーネントに添付されたUpdateFundsスクリプトを介して、上部に「コイン」通貨の量も表示されます。
  • メニュー (例えば、シーン ‘VerticalMenu’/’HorizontalMenu’): これらは、SIS で最も複雑なシーンであり、すべての製品タイプを紹介します。ウィンドウを有効にする代わりに、ここではアニメーション化されます。各ウィンドウには、画面内または画面外に移動するアニメーターコンポーネントがあります。たとえば、[項目] ボタンをクリックすると、画面外に ‘Window  – Main’ がアニメーション表示され、「ウィンドウ – アイテム」が表示されます。この動作は、ボタンごとに、2 つの ts を設定して処理されます。各ウィンドウの「ボタン – 戻る」は正反対です。また、カスタムサブメニューで「ボタン –  LevelUp」を押すと、ユーザーレベルが上がり、ショップマネージャーは新しいアイテムのロックを解除しようとします。
  • VR (シーンの例 ‘VerticalVR’): デフォルトのショップシーンは、入力が通常のクリックやタッチではなく、UIキャンバスがワールド空間にある必要があるという2つの理由で、バーチャルリアリティでは動作しません。そのため、SimpleIAPシステム>プレハブ>垂直フォルダに追加のショップアイテムプレハブ(IAPItemVR、IGC  IGCItem_SingleSelectVR)と一緒に、別のVRショップシーンがあります。Unityの公式バーチャルリアルティ学習プロジェクトのコンポーネントは、Oculusデバイスをサポートするために使用されています。このVRショップで使用される仕組みの概要を説明します。
  • MainCamera には、レチクル&選択放射状と共に、いくつかの VR スクリプトが添付されています。
  • ユーザー確認を必要とする各 U I ボタン (ショップアイテムの購入ボタンなど) には、VRInteractiveItem とそれらに関連付けられたBoxCollider コンポーネントがあります。これは、

メインカメラのVREyeRaycasterスクリプトは、実際に確認ボタンとして認識します

  • VRInteractiveItemには、インスペクター内の異なるアクションにマップされたいくつかのUnityEventsがあります。
  • VR で UI インタラクション(ホバー、クリック)を機能させるには、デフォルトのグラフィックレイキャスター  Unity がキャンバスにアタッチする機能は何の使用もしません。私たちのVRGraphicRaycasterは、ユニティのソースのVR cの不動のバージョンです。

追加の注意: プレーヤーの設定で「バーチャルリアリティ対応」がチェックされている場合“、「AllSelection」”シーンからアプリを起動すると、VRショップのシーンが自動的にロードされます。

 

  • レシート確認

 

 

IAP を設定すると、アプリにセキュリティ層を追加して、ハッカーがIAP クラッカーを使用してアイテムのロックを解除したり、偽の購入を送信したり、ローカル データベース ストレージを単に上書きしたりできないようにすることができます。領収書の検証は、IAP の著作権侵害との戦いに役立つ可能性があります。シンプル IAP システムでは、アプリでのレシート検証の使用方法に関するいくつかのオプションがあります。 

 

Client-Side Receipt Verification

このオプションでは、バンドルと App Store 開発者キーを使用して、アプリによってレシートが作成されたことを確認します。ローカル (クライアントのデバイス) でこのチェックを行うとセキュリティ上の欠陥が生じますが、これは数回クリックするだけで著作権侵害防止を追加する非常に高速なアプローチです。

 

  • ウィンドウの下でユニティ IAP の難読化ツールを開く > ユニティ IAP > 領収書検証 Obf uscatoruscator 

 

 

 

  • Google ストア キーを入力します(IAPManagerプレハブで入力したのと同じです)。
  • [難読化] ボタンを押すと、プロジェクトに追加の資格情報ファイルが作成されます。
  • IAPManager プレハブを見つけ、それにレシートValidatorクライアントコンポーネントを追加します。

 

 

 

  • を開く、 ReceiptValidatorClient スクリプトを開き、コメント解除行を削除します */ /* (それ以外の場合、スクリプトは、以前に作成された難読化ファイルを使用せずにエラーをスローするため)。

 

 

 

 

Server-Side Receipt Verification

このオプションでは、領収書が外部サーバーに送信され、トランザクション データがそれぞれ Apple または Google に転送され、トランザクション データがチェックされ、アプリケーションに対して有効または無効な応答が返されます。つまり、検証部分はサーバー上でのみ行われます。また、サブスクリプションの状態を確認し、期限切れのコンテンツを制限する場合は、オンラインの確認を使用する必要があります。このオプションを使用するには、サーバー上の一部の設定がiTunes/Google 開発者アカウントと同様に、再び行われます。この設定に必要な高度な設定と経験のために、この資産の外部の追加パッケージとしてこれを提供しています。当社のサポートフォーラムに登録して、アクセスを得るための専用スレッドを参照してください。

サービスレシートの検証(PlayFabを使用する場合に必要)

このオプションでは、受信確認のためにPlayFab  API + サーバーを使用します。したがって、この o を使用するには、アクティブなPlayFab 開発者アカウント (無料利用枠で十分) が必要です。サーバー側と同じで、検証部分はユーザーの手に渡りません。領収書は購入時にサーバーに送信され、それぞれアップル、グーグル、アマゾンとの取引を検証しますが、一意であり、以前に使用されたことがないことも確認されます。レシートは一度しか検証できないので、このオプションは、重複として拒否されるため、アクティブまたは期限切れのサブスクリプションを検証するのには適していません。ただし、サブスクリプションを実装する予定がない場合は、クライアント側の検証よりもセキュリティが確保されます。それを使用するために:

  1. PlayFab  “フルスイート” または “検証のみ” がプラグインのセットアップ ウィンドウ2 で設定されていることを確認します。IAPManagerプレハブにレシート検証サービスコンポーネントを追加します。

 

PlayFabの検証tion logic for ロジックはコスト的に最適化されています:  PlayFabは、アプリを使用して月間アクティブ ユーザー (MAU) に基づいて追加の API 制限の請求を計算します。「検証のみ」実装ではimplementation, 、PlayFabユーザーは、アプリ内購入(および他のもの)を実際に行うときにのみ作成されるため、MAUカウントは可能な限り低いままです。 

 

   

 

   

 

  • 連絡先

 

 

完全なソースコードが提供され、すべての行が十分に文書化されていますので、スクリプトを見て、あなたのニーズに合わせてそれらを変更してください。

当社の製品に関するご質問、ご意見、ご提案、その他のご質問は、お気軽にお問い合わせください。あなたは、ウィンドウ>シンプルIAPシステムの下にある私たちの「About」ウィンドウに、すべてのインタータントリンクを見つけることができます。

 

 

 

質問があれば、多分私たちのサポートフォーラムは答えを持っています!

質問に答えるだけでなく、ガイド、コードスニペット、エクステンションも共有しています。ご購入後に Unity アセットストアからメールで受け取ったアセット請求書 ID を使用して、フォーラムアカウントを登録してください。

 

フォーラム登録中に問題が発生した場合は、メールにてご連絡ください。

info@rebound-games.com

 

Unity アセットストアでサポートを希望される場合は、簡単なレビューを書いてください。

開発者は意見を形成することができます。繰り返しますが、あなたのサポートに感謝し、幸運を祈ります!

 

リバウンドゲーム

 

 

コメント

タイトルとURLをコピーしました