ÿÿ Adaptyクイックスタートガイド | Adapty ドキュメント

Flutter SDKã§ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼è­˜åˆ¥

ã“ã®ã‚¬ã‚¤ãƒ‰ã¯ã€ç‹¬è‡ªã®èªè¨¼ã‚·ã‚¹ãƒ†ãƒ ã‚’ãŠæŒã¡ã®æ–¹å‘ã‘ã§ã™ã€‚ã“ã“ã§ã¯ã€Adaptyã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ãƒ—ロファイルを既存ã®èªè¨¼ã‚·ã‚¹ãƒ†ãƒ ã«åˆã‚ã›ã¦ç®¡ç†ã™ã‚‹æ–¹æ³•ã«ã¤ã„ã¦èª¬æ˜Žã—ã¾ã™ã€‚

ユーザーã®è³¼å…¥ç®¡ç†æ–¹æ³•ã¯ã€ã‚¢ãƒ—リã®èªè¨¼ãƒ¢ãƒ‡ãƒ«ã«ã‚ˆã£ã¦ç•°ãªã‚Šã¾ã™ï¼š

主è¦ãªæ¦‚念:

  • プロファイルã¯SDKãŒå‹•作ã™ã‚‹ãŸã‚ã«å¿…è¦ãªã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã§ã€AdaptyãŒè‡ªå‹•çš„ã«ä½œæˆã—ã¾ã™ã€‚
  • プロファイルã¯åŒ¿å(カスタマーユーザーIDãªã—)ã¾ãŸã¯è­˜åˆ¥æ¸ˆã¿ï¼ˆã‚«ã‚¹ã‚¿ãƒžãƒ¼ãƒ¦ãƒ¼ã‚¶ãƒ¼IDã‚り)ã®ã„ãšã‚Œã‹ã§ã™ã€‚
  • カスタマーユーザーIDã‚’æä¾›ã™ã‚‹ã“ã¨ã§ã€Adaptyã®ãƒ—ロファイルã¨å†…部èªè¨¼ã‚·ã‚¹ãƒ†ãƒ ã‚’クロスリファレンスã§ãã¾ã™ã€‚

匿åユーザーã¨è­˜åˆ¥æ¸ˆã¿ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®é•ã„ã¯ä»¥ä¸‹ã®é€šã‚Šã§ã™ï¼š

匿åユーザー識別済ã¿ãƒ¦ãƒ¼ã‚¶ãƒ¼
購入管ç†ã‚¹ãƒˆã‚¢ãƒ¬ãƒ™ãƒ«ã®è³¼å…¥å±¥æ­´å¾©å…ƒã‚«ã‚¹ã‚¿ãƒžãƒ¼ãƒ¦ãƒ¼ã‚¶ãƒ¼IDを通ã˜ã¦ãƒ‡ãƒã‚¤ã‚¹é–“ã§è³¼å…¥å±¥æ­´ã‚’ç¶­æŒ
プロファイル管ç†å†ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã®ãŸã³ã«æ–°ã—ã„プロファイルを作æˆã‚»ãƒƒã‚·ãƒ§ãƒ³ã‚„デãƒã‚¤ã‚¹ã‚’ã¾ãŸã„ã§åŒã˜ãƒ—ロファイルを使用
ãƒ‡ãƒ¼ã‚¿ä¿æŒåŒ¿åユーザーã®ãƒ‡ãƒ¼ã‚¿ã¯ã‚¢ãƒ—リã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã«ç´ã¥ã識別済ã¿ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ãƒ‡ãƒ¼ã‚¿ã¯ã‚¢ãƒ—リã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã‚’ã¾ãŸã„ã§ä¿æŒã•れる

匿åユーザー

ãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰èªè¨¼ã‚’使用ã—ã¦ã„ãªã„å ´åˆã€ã‚¢ãƒ—リã®ã‚³ãƒ¼ãƒ‰ã§èªè¨¼ã‚’処ç†ã™ã‚‹å¿…è¦ã¯ã‚りã¾ã›ã‚“:

  1. アプリã®åˆå›žèµ·å‹•時ã«SDKãŒæœ‰åŠ¹åŒ–ã•れるã¨ã€Adaptyã¯ãƒ¦ãƒ¼ã‚¶ãƒ¼ç”¨ã®æ–°ã—ã„プロファイルを作æˆã—ã¾ã™ã€‚
  2. ユーザーãŒã‚¢ãƒ—リ内ã§ä½•ã‹ã‚’購入ã™ã‚‹ã¨ã€ãã®è³¼å…¥ã¯ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®Adaptyプロファイルã¨ã‚¹ãƒˆã‚¢ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã«ç´ã¥ã‘られã¾ã™ã€‚
  3. ユーザーãŒã‚¢ãƒ—リをå†ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—ãŸã‚Šã€æ–°ã—ã„デãƒã‚¤ã‚¹ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—ãŸã‚Šã™ã‚‹ã¨ã€Adaptyã¯æœ‰åŠ¹åŒ–æ™‚ã«æ–°ã—ã„匿åプロファイルを作æˆã—ã¾ã™ã€‚
  4. ユーザーãŒä»¥å‰ã«ã‚¢ãƒ—リ内ã§è³¼å…¥ã‚’ã—ã¦ã„ã‚‹å ´åˆã€ãƒ‡ãƒ•ォルトã§ã¯ã€SDK有効化時ã«App Storeã‹ã‚‰è³¼å…¥ãŒè‡ªå‹•çš„ã«åŒæœŸã•れã¾ã™ã€‚

匿åユーザーã®å ´åˆã€ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã®ãŸã³ã«æ–°ã—ã„プロファイルãŒä½œæˆã•れã¾ã™ãŒã€Adaptyã®ã‚¢ãƒŠãƒªãƒ†ã‚£ã‚¯ã‚¹ã§æ–°ã—ã„インストールã¨ã—ã¦æ‰±ã‚れるæ¡ä»¶ã‚’設定ã§ãã‚‹ãŸã‚ã€å•題ã‚りã¾ã›ã‚“。

匿åユーザーã®å ´åˆã€ãƒ‡ãƒã‚¤ã‚¹IDã§ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã‚’カウントã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ã“ã®å ´åˆã€å†ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã‚’å«ã‚ã€ãƒ‡ãƒã‚¤ã‚¹ã¸ã®ã‚¢ãƒ—リã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ãれãžã‚ŒãŒ1回ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã¨ã—ã¦ã‚«ã‚¦ãƒ³ãƒˆã•れã¾ã™ã€‚

識別済ã¿ãƒ¦ãƒ¼ã‚¶ãƒ¼

ユーザーを識別ã™ã‚‹ã«ã¯2ã¤ã®æ–¹æ³•ãŒã‚りã¾ã™ï¼š

  • ログイン・サインアップ時: アプリ起動後ã«ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒã‚µã‚¤ãƒ³ã‚¤ãƒ³ã™ã‚‹å ´åˆã¯ã€èªè¨¼æ™‚ã«identify()をカスタマーユーザーIDã¨å…±ã«å‘¼ã³å‡ºã—ã¾ã™ã€‚

  • SDK有効化時: アプリ起動時ã«ã™ã§ã«ã‚«ã‚¹ã‚¿ãƒžãƒ¼ãƒ¦ãƒ¼ã‚¶ãƒ¼IDãŒä¿å­˜ã•れã¦ã„ã‚‹å ´åˆã¯ã€activate()ã®å‘¼ã³å‡ºã—時ã«é€ä¿¡ã—ã¾ã™ã€‚

デフォルトã§ã¯ã€AdaptyãŒç¾åœ¨åˆ¥ã®ã‚«ã‚¹ã‚¿ãƒžãƒ¼ãƒ¦ãƒ¼ã‚¶ãƒ¼IDã«ç´ã¥ã„ã¦ã„るカスタマーユーザーIDã‹ã‚‰ã®è³¼å…¥ã‚’å—ã‘å–ã£ãŸå ´åˆã€ã‚¢ã‚¯ã‚»ã‚¹ãƒ¬ãƒ™ãƒ«ã¯å…±æœ‰ã•れるãŸã‚ã€ä¸¡æ–¹ã®ãƒ—ãƒ­ãƒ•ã‚¡ã‚¤ãƒ«ãŒæœ‰æ–™ã‚¢ã‚¯ã‚»ã‚¹ã‚’æŒã¤ã“ã¨ã«ãªã‚Šã¾ã™ã€‚ã“ã®è¨­å®šã‚’変更ã—ã¦ã€æœ‰æ–™ã‚¢ã‚¯ã‚»ã‚¹ã‚’一方ã®ãƒ—ロファイルã‹ã‚‰åˆ¥ã®ãƒ—ロファイルã«ç§»è­²ã—ãŸã‚Šã€å…±æœ‰ã‚’完全ã«ç„¡åйã«ã—ãŸã‚Šã§ãã¾ã™ã€‚詳細ã¯ã“ã¡ã‚‰ã®è¨˜äº‹ã‚’å‚ç…§ã—ã¦ãã ã•ã„。

identify-diagram.webp

ログイン・サインアップ時

アプリ起動後ã«ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’識別ã™ã‚‹å ´åˆï¼ˆä¾‹ï¼šãƒ­ã‚°ã‚¤ãƒ³ã‚„サインアップ後)ã¯ã€identifyメソッドを使用ã—ã¦ã‚«ã‚¹ã‚¿ãƒžãƒ¼ãƒ¦ãƒ¼ã‚¶ãƒ¼IDを設定ã—ã¾ã™ã€‚

  • ã“ã®ã‚«ã‚¹ã‚¿ãƒžãƒ¼ãƒ¦ãƒ¼ã‚¶ãƒ¼IDを使用ã—ãŸã“ã¨ãŒãªã„å ´åˆã€Adaptyã¯è‡ªå‹•çš„ã«ç¾åœ¨ã®ãƒ—ロファイルã«ç´ã¥ã‘ã¾ã™ã€‚
  • 以å‰ã«ã“ã®ã‚«ã‚¹ã‚¿ãƒžãƒ¼ãƒ¦ãƒ¼ã‚¶ãƒ¼IDã§ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’識別ã—ãŸã“ã¨ãŒã‚ã‚‹å ´åˆã€Adaptyã¯ãã®ã‚«ã‚¹ã‚¿ãƒžãƒ¼ãƒ¦ãƒ¼ã‚¶ãƒ¼IDã«é–¢é€£ã™ã‚‹ãƒ—ロファイルã«åˆ‡ã‚Šæ›¿ãˆã¾ã™ã€‚

カスタマーユーザーIDã¯å„ユーザーã§ä¸€æ„ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“。パラメーターã®å€¤ã‚’ãƒãƒ¼ãƒ‰ã‚³ãƒ¼ãƒ‰ã™ã‚‹ã¨ã€ã™ã¹ã¦ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒåŒä¸€äººç‰©ã¨ã—ã¦æ‰±ã‚れã¾ã™ã€‚

ä»–ã®SDKメソッドを呼ã³å‡ºã™å‰ã«ã€å¿…ãšidentifyã‚’awaitã—ã¦ãã ã•ã„。並列呼ã³å‡ºã—ã‚’ã™ã‚‹ã¨#3006 profileWasChangedãŒç™ºç”Ÿã™ã‚‹ã‹ã€åŒ¿åプロファイルã«å¯¾ã—ã¦å‡¦ç†ãŒè¡Œã‚れã¾ã™ã€‚詳ã—ãã¯Flutter SDKã®å‘¼ã³å‡ºã—é †åºã‚’å‚ç…§ã—ã¦ãã ã•ã„。

try {
  await Adapty().identify(customerUserId); // Unique for each user
} on AdaptyError catch (adaptyError) {
  // handle the error
} catch (e) {
}

SDK有効化時

SDKを有効化ã™ã‚‹æ™‚点ã§ã‚«ã‚¹ã‚¿ãƒžãƒ¼ãƒ¦ãƒ¼ã‚¶ãƒ¼IDãŒã‚ã‹ã£ã¦ã„ã‚‹å ´åˆã¯ã€identifyを別途呼ã³å‡ºã™ä»£ã‚りã«ã€activateãƒ¡ã‚½ãƒƒãƒ‰ã«æ¸¡ã™ã“ã¨ãŒã§ãã¾ã™ã€‚

カスタマーユーザーIDãŒã‚ã‹ã£ã¦ã„ã¦ã‚‚有効化後ã«è¨­å®šã™ã‚‹å ´åˆã€æœ‰åŠ¹åŒ–æ™‚ã«AdaptyãŒæ–°ã—ã„匿åプロファイルを作æˆã—ã€identifyを呼ã³å‡ºã—ãŸå¾Œã«ã®ã¿æ—¢å­˜ã®ãƒ—ロファイルã¸åˆ‡ã‚Šæ›¿ã‚りã¾ã™ã€‚

既存ã®ã‚«ã‚¹ã‚¿ãƒžãƒ¼ãƒ¦ãƒ¼ã‚¶ãƒ¼ID(以å‰ã«ä½¿ç”¨ã—ãŸã‚‚ã®ï¼‰ã§ã‚‚æ–°ã—ã„ã‚‚ã®ã§ã‚‚渡ã™ã“ã¨ãŒã§ãã¾ã™ã€‚æ–°ã—ã„IDを渡ã™ã¨ã€æœ‰åŠ¹åŒ–æ™‚ã«ä½œæˆã•ã‚ŒãŸæ–°ã—ã„プロファイルãŒãã®ã‚«ã‚¹ã‚¿ãƒžãƒ¼ãƒ¦ãƒ¼ã‚¶ãƒ¼IDã«è‡ªå‹•çš„ã«ç´ã¥ã‘られã¾ã™ã€‚

デフォルトã§ã¯ã€åŒ¿åプロファイルã®ä½œæˆã¯ã‚¢ãƒŠãƒªãƒ†ã‚£ã‚¯ã‚¹ã®ãƒ€ãƒƒã‚·ãƒ¥ãƒœãƒ¼ãƒ‰ã«å½±éŸ¿ã—ã¾ã›ã‚“。インストールã¯ãƒ‡ãƒã‚¤ã‚¹IDã«åŸºã¥ã„ã¦ã‚«ã‚¦ãƒ³ãƒˆã•れるãŸã‚ã§ã™ã€‚

デãƒã‚¤ã‚¹IDã¯ã‚¹ãƒˆã‚¢ã‹ã‚‰ãƒ‡ãƒã‚¤ã‚¹ã¸ã®ã‚¢ãƒ—リã®1回ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã‚’表ã—ã€ã‚¢ãƒ—リをå†ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—ãŸå ´åˆã«ã®ã¿å†ç”Ÿæˆã•れã¾ã™ã€‚
åˆå›žã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã‹å†ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã‹ã«é–¢ä¿‚ãªãã€ã¾ãŸæ—¢å­˜ã®ã‚«ã‚¹ã‚¿ãƒžãƒ¼ãƒ¦ãƒ¼ã‚¶ãƒ¼IDを使用ã™ã‚‹ã‹ã©ã†ã‹ã«ã‚‚ä¾å­˜ã—ã¾ã›ã‚“。

プロファイルã®ä½œæˆï¼ˆSDK有効化時ã¾ãŸã¯ãƒ­ã‚°ã‚¢ã‚¦ãƒˆæ™‚)ã€ãƒ­ã‚°ã‚¤ãƒ³ã€ã¾ãŸã¯ã‚¢ãƒ—リã®å†ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ãªã—ã®ã‚¢ãƒƒãƒ—グレードã§ã¯ã€è¿½åŠ ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã‚¤ãƒ™ãƒ³ãƒˆã¯ç”Ÿæˆã•れã¾ã›ã‚“。

デãƒã‚¤ã‚¹ã§ã¯ãªã一æ„ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’基準ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã‚’カウントã—ãŸã„å ´åˆã¯ã€App settingsã«ç§»å‹•ã—ã¦Installs definition for analyticsを設定ã—ã¦ãã ã•ã„。

   try {
       await Adapty().activate(
           configuration: AdaptyConfiguration(apiKey: 'YOUR_API_KEY')
             ..withCustomerUserId(YOUR_CUSTOMER_USER_ID) // Customer user IDs must be unique for each user. If you hardcode the parameter value, all users will be considered as one.
       );
   } catch (e) {
       // handle the error
   }

ユーザーã®ãƒ­ã‚°ã‚¢ã‚¦ãƒˆ

ユーザーをログアウトã•ã›ã‚‹ãƒœã‚¿ãƒ³ãŒã‚ã‚‹å ´åˆã¯ã€logoutメソッドを使用ã—ã¾ã™ã€‚

ユーザーをログアウトã™ã‚‹ã¨ã€ãã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«å¯¾ã—ã¦æ–°ã—ã„匿åプロファイルãŒä½œæˆã•れã¾ã™ã€‚

try {
  await Adapty().logout();
} on AdaptyError catch (adaptyError) {
  // handle the error
} catch (e) {
  // handle unknown error
}

ユーザーをアプリã«å†åº¦ãƒ­ã‚°ã‚¤ãƒ³ã•ã›ã‚‹ã«ã¯ã€identifyメソッドを使用ã—ã¦ãã ã•ã„。

ログインãªã—ã§è³¼å…¥ã‚’許å¯ã™ã‚‹

ユーザーãŒã‚¢ãƒ—リã«ãƒ­ã‚°ã‚¤ãƒ³ã™ã‚‹å‰å¾Œã®ä¸¡æ–¹ã§è³¼å…¥ã§ãã‚‹å ´åˆã€ãƒ­ã‚°ã‚¤ãƒ³å¾Œã‚‚アクセスãŒç¶­æŒã•れるよã†å¯¾å¿œã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ï¼š

  1. ログアウト中ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒè³¼å…¥ã‚’行ã†ã¨ã€Adaptyã¯ãれをユーザーã®Anonymous Profile IDã«ç´ã¥ã‘ã¾ã™ã€‚
  2. ユーザーãŒã‚¢ã‚«ã‚¦ãƒ³ãƒˆã«ãƒ­ã‚°ã‚¤ãƒ³ã™ã‚‹ã¨ã€Adaptyã¯è­˜åˆ¥æ¸ˆã¿ãƒ—ロファイルã¸ã®åˆ‡ã‚Šæ›¿ãˆã‚’行ã„ã¾ã™ã€‚
    • æ–°ã—ã„カスタマーユーザーIDã®å ´åˆï¼ˆä¾‹ï¼šç™»éŒ²å‰ã«è³¼å…¥ãŒè¡Œã‚れãŸå ´åˆï¼‰ã€Adaptyã¯ç¾åœ¨ã®ãƒ—ロファイルã«ã‚«ã‚¹ã‚¿ãƒžãƒ¼ãƒ¦ãƒ¼ã‚¶ãƒ¼IDを割り当ã¦ã‚‹ãŸã‚ã€è³¼å…¥å±¥æ­´ãŒã™ã¹ã¦ç¶­æŒã•れã¾ã™ã€‚
    • 既存ã®ã‚«ã‚¹ã‚¿ãƒžãƒ¼ãƒ¦ãƒ¼ã‚¶ãƒ¼IDã®å ´åˆï¼ˆãã®ã‚«ã‚¹ã‚¿ãƒžãƒ¼ãƒ¦ãƒ¼ã‚¶ãƒ¼IDãŒã™ã§ã«ãƒ—ロファイルã«ç´ã¥ã„ã¦ã„ã‚‹å ´åˆï¼‰ã€ãƒ—ロファイル切り替ãˆå¾Œã«å®Ÿéš›ã®ã‚¢ã‚¯ã‚»ã‚¹ãƒ¬ãƒ™ãƒ«ã‚’å–å¾—ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚識別直後ã«getProfileを呼ã³å‡ºã™ã‹ã€ãƒ—ãƒ­ãƒ•ã‚¡ã‚¤ãƒ«ã®æ›´æ–°ã‚’購読ã—ã¦ãƒ‡ãƒ¼ã‚¿ãŒè‡ªå‹•çš„ã«åŒæœŸã•れるよã†ã«ã—ã¦ãã ã•ã„。

次ã®ã‚¹ãƒ†ãƒƒãƒ—

ãŠã‚ã§ã¨ã†ã”ã–ã„ã¾ã™ï¼ã‚¢ãƒ—リã«ã‚¢ãƒ—リ内決済ã®ãƒ­ã‚¸ãƒƒã‚¯ã‚’実装ã§ãã¾ã—ãŸï¼ã‚¢ãƒ—リã®ãƒžãƒã‚¿ã‚¤ã‚ºãŒæˆåŠŸã™ã‚‹ã“ã¨ã‚’願ã£ã¦ã„ã¾ã™ï¼

Adaptyã‚’ã•ã‚‰ã«æ´»ç”¨ã™ã‚‹ãŸã‚ã«ã€ä»¥ä¸‹ã®ãƒˆãƒ”ックを探索ã—ã¦ã¿ã¦ãã ã•ã„:

  • テスト:ã™ã¹ã¦ãŒæœŸå¾…通りã«å‹•作ã™ã‚‹ã“ã¨ã‚’確èªã™ã‚‹
  • オンボーディング:オンボーディングã§ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’引ã付ã‘ã¦ãƒªãƒ†ãƒ³ã‚·ãƒ§ãƒ³ã‚’å‘上ã•ã›ã‚‹
  • インテグレーション:マーケティングアトリビューションや分æžã‚µãƒ¼ãƒ“スã¨ãƒ¯ãƒ³ãƒ©ã‚¤ãƒ³ã§é€£æºã™ã‚‹
  • カスタムプロファイル属性ã®è¨­å®šï¼šãƒ¦ãƒ¼ã‚¶ãƒ¼ãƒ—ロファイルã«ã‚«ã‚¹ã‚¿ãƒ å±žæ€§ã‚’追加ã—ã¦ã‚»ã‚°ãƒ¡ãƒ³ãƒˆã‚’作æˆã—ã€A/Bテストã®å®Ÿæ–½ã‚„ç•°ãªã‚‹ãƒ¦ãƒ¼ã‚¶ãƒ¼ã¸ã®ç•°ãªã‚‹ãƒšã‚¤ã‚¦ã‚©ãƒ¼ãƒ«è¡¨ç¤ºã‚’å¯èƒ½ã«ã™ã‚‹
ÿÿÿÿ