IBM Cloud 簡単操作ドリル (2020年冬)

[夏に作成した簡単操作ドリル](https://qiita.com/yamachan360/items/f3f0f10e8ae41fd65f5d) の評判はわりと良かったので、IBM Cloud の現在の画面にあわせ更新した冬バージョンを作成してみました。

幾つか用意されたお題を IBM Cloud 上で実施してみて、答え合わせする、それだけの単純なドリルです。IBM Cloud 初心者の方、もしよろしかったらチャレンジしてみてください。

# 問題

## Q1. IBM Cloud にログインしてみる (★)

IBM Cloud アカウントはお持ちでしょうか？まずは IBM Cloud にログインしてみてください。

答えは [こちら](#a1)

## Q2. 自分のアカウント情報を確認してみる (★)

お持ちのアカウントは無料のライトアカウントでしょうか、それとも従量課金(PAYG)アカウントでしょうか？IBM Cloud へログインした後、自分のアカウント情報を確認してみましょう！

答えは [こちら](#a2)

## Q3. 使用しているリソースを確認してみる (★)

IBM Cloud を使い始めたばかりの場合、使用しているリソースはまだ無いはずです。以前に使用していたアカウントであれば、昔に作成したものが残っているかもしれませんね。

いま使用中のリソースを確認してみましょう。

答えは [こちら](#a3)

## Q4. SDK for Node.js サービスを作成してみる (★)

IBM Cloud のカタログから **SDK for Node.js** サービスを探して、作成してみてください。作成したサービスに Web ブラウザでアクセスし、Hello World 的な Web ページが表示できれば完了です。ライトプランを選択してください。

答えは [こちら](#a4)

## Q5. SDK for Node.js サービスのログを確認してみる (★★)

クラウド環境で起動したサービスって、手軽なのは良いのですが、動いている様子がよくわからないですよね？さきほど作成した SDK for Node.js サービスのログを眺めて、起動の様子を確認してみましょう。

【ヒント】(★★) が指定されている問題は少し難しいので、飛ばしてもokです

答えは [こちら](#a5)

## Q6. 翻訳サービスを作成してみる (★)

IBM Watson には、翻訳サービスを提供する Language Translator があります。IBM Cloud のカタログから Language Translator サービスを探して、作成してみてください。ライトプランを選択してください。

答えは [こちら](#a6)

## Q7. 翻訳サービスのAPI鍵を入手する (★)

翻訳サービスを利用するには **API鍵** と **URL** という2つの情報が必要です。これらの情報を入手してみてください。

答えは [こちら](#a7)

## Q8. 翻訳サービスを試してみる (★★)

入力したAPI鍵などの情報を実際に使ってみましょう。翻訳サービスのマニュアル [Language Translator API Document](https://cloud.ibm.com/apidocs/language-translator#translate) を参考にして、curl コマンドなどで翻訳サービスを呼び出してみてください。

答えは [こちら](#a8)

## Q9. 作成した2つのサービスを接続してみる (★★)

今回作成した SDK for Node.js サービスはアプリケーションの実行環境で、Language Translator サービスは翻訳機能を提供するサービス(API)です。前者から後者を利用できるよう、これらのサービスを IBM Cloud 上で接続してみてください。

答えは [こちら](#a9)

## Q10. 翻訳サービスを削除する (★)

必要になったらすぐ作成、不要になったらすぐ削除、この手軽さがクラウド環境の魅力のひとつですね。さきほど作成した翻訳サービスを削除してみましょう。

【ヒント】ライトプランは利用が無料なので、もう少し試したい場合は、いま急いで削除しなくても大丈夫です
【ヒント】ライトアカウントの方は一ヶ月の間利用が無いと、自動的にサービスが停止されます
【参考】[個人的にテストした](https://qiita.com/yamachan360/items/1563cd3ea6271afe46ab) 範囲では、従量課金でもメモリ512MB以下のアプリ1つだけでは、課金対象にならないようです。ご参考までに。

答えは [こちら](#a10)

## Q11. SDK for Node.jsサービスを削除する (★)

SDK for Node.js サービスも削除してみましょう。

答えは [こちら](#a11)

## Q12. プロフィール写真を設定してみる (★)

メニューの右端に人型のアイコンが表示されていますが、ここに自分の好きな画像を設定することができます。さっそく変更してみましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/9de09e97-de77-da46-c4d6-ac6c549a53d1.png)

答えは [こちら](#a12)

## Q13. IBM Cloud からログアウトする (★)

使い終わったら、きちんと終了させましょう。IBM Cloud からログアウトしてください。

答えは [こちら](#a13)

# 回答

## A1

IBM Cloud へのログインするには以下のサイトにアクセスし、IBM ID とパスワードを入力します。

* [https://cloud.ibm.com/](https://cloud.ibm.com/)

まだ IBM Cloud のアカウントをお持ちでない場合には、以下の3分間ビデオを参照してみてください。

* [IBM Cloud のライトアカウントを作成しよう](https://www.youtube.com/watch?v=Krn1jQ4iy_s&list=PLzpeuWUENMK28zoOXBcf4t8KLlIkteOmz&index=2&t=0s)

## A2

IBM Cloud にログインした状態で、右上の [管理] メニューにある [アカウント] をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/f2c9292f-6f85-1b2c-97d6-5cc5b3d3b618.png)
左側のメニューで [アカウント設定] をクリックし、[アカウント・タイプ] の欄でアカウントの種類を確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/025d9d5b-6a20-0c2e-c8cf-c6b3ff6217af.png)
登録直後は「ライト(無料)」になっています。ここからクレジットカードを登録すると、以下の従量課金(PAYG)アカウントにアップグレードされます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/dfb3b365-9649-50d6-daf5-49e91d18f861.png)
従量課金(PAYG)アカウントは規定の範囲内での利用では費用はかかりません。ライトアカウントより多くのサービスが利用でき、また無料でできる範囲も広がりますので、アカウントのアップグレードをぜひご検討ください。

以下の3分間ビデオも参照してみてください。

* [従量課金(PAYG)アカウントへのアップグレード](https://www.youtube.com/watch?v=uFCSvAKapr0&list=PLzpeuWUENMK28zoOXBcf4t8KLlIkteOmz&index=3)

## A3

左上の [IBM Cloud] をクリックして「ダッシュボード」に移動し、「リソースの要約」欄にある [リソースの表示] をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/9a425a28-c3c3-3701-4f16-28b4565f7c4e.png)
表示された「リソース・リスト」で使用しているリソースが無いことを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/71ee85f0-4b3b-e7b3-d184-64a66bc16a48.png)

### 上級者向けヒント

理由はわかりませんが、Functions (OpenWhisk) サーバレス実行環境でアクションなどを作成しても、このリソースリストには表示されないようです。この場合は左上のハンバーガーメニューから、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/f140f269-a0fb-cb62-5897-41244e01b32b.png)
[Functions] をクリックし、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/dadd2c2a-2887-550e-619a-bd931c90ad93.png)
表示されたページのメニューから、アクション、トリガー、API を選択して、過去に作成したコードや設定が残ってないか確認してみてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/3dcc19b1-e699-60de-10b2-89ff948b2a3e.png)

## A4

[カタログ] をクリックして開き、[コンピュート] カテゴリにある [Cloud Foundry] をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/5cb8d994-c7c2-acb4-7128-b7da8fd58314.png)
「パブリック・アプリケーション」の [作成] をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/66a530a6-acd2-42a3-8dca-68376f0c8ba5.png)
「Cloud Foundry サンプル・アプリの作成」が開いたら、「SDK for Node.js」を選択してから、「ライト」プランであることを確認してメモリ容量「256 MB」を選択します。次に「アプリ名」を入力し、必要であれば「ホスト名」や「ドメイン」を変更してから [作成] ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/d2ff9080-d5d2-7fbc-32f5-9b24c162ba7c.png)
なおアカウントをアップグレード済みの場合には、ライトプランのかわりに「デフォルト」プランを選択して [作成] ボタンをクリックします。

【ヒント】ライトプランと比べてお金がかかりそうでギョっとしますが、よく読むと実際には [よりお得なサービス](https://qiita.com/yamachan360/items/edd67ce0e7af8cce66fe) であることがわかります。特に今回のドリルは最終的にアプリを削除しますので、怖がらず [作成] してみてください。

この時、「アプリ名」は他と異なる、ユニークな名前を設定する必要があります。よくある名前を指定して、既存の名前と重複していると、以下のように警告ポップアップが表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/ae02ac20-8161-208d-08a2-296c1d8a073a.png)
「開始」画面に自動的に遷移しますので、アプリケーション名の右にあるメッセージが「このアプリは稼働中です。」もしくは「実行中」になるまで待ち、[アプリ URL にアクセス] をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/eaf99336-9d4a-35c8-693d-e3f0f5ff8660.png)
Web ページが開いて、「Hello World!」と表示されていれば完了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/d8cb26c5-67a3-1046-c702-cc34fb52654a.png)
【ヒント】表示されているURLにスマートフォンなどからアクセスし、同様に表示できることを確認してみてください。あなたは今、クラウド上に、世界中に公開されている Web サーバーを構築し所有しています！

## A5

「開始」メニューの下にある「ログ」メニューをクリックすると、クラウド上の仮想サーバーでアプリケーションが起動する際のログを確認することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/07ce4de8-5bce-51ed-3943-887f6bcab230.png)
更に詳しくログを参照したい場合には、[Kibanaで表示] ボタンを押して、ログ表示専用のサービスに移動してください。

## A6

[カタログ] をクリックして開き、[AI] カテゴリにある [Language Translator] をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/e61ddbe2-7259-8ea1-b134-f6477bd5d7ef.png)
ライトプランにチェックが入っていることを確認したうえで、[作成] ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/3bb914ee-e3d3-dfa6-9431-046fa478ed5f.png)
「開始」ページが表示されればサービスの作成完了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/505d7249-ff35-dc47-d7a7-b18b0e0819cc.png)

## A7

「開始」メニューの上にある「管理」メニューをクリックすると、「資格情報」の欄に「API鍵」と「URL」の2つの情報があります。サービスを利用する際に必要な情報ですので、メモ帳(Macだとテキストエディット)などに記録しておきましょう。右にあるアイコンでそれぞれの値をコピーできます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/1282c7cb-b994-b7bc-6ec5-c7e6ed888354.png)
なおIBM Cloud画面を閉じてしまったり、迷子になってしまった場合、左上の [IBM Cloud] からダッシュボードに戻り、[リソースの表示] から該当するサービスをクリックすると、上記の「管理」画面が開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/5ac92cc0-9d27-bd59-8dea-a9758ee3efdb.png)

## A8

これはちょっと難しい課題でしたね。[Language Translator API Document](https://cloud.ibm.com/apidocs/language-translator#translate) にある以下の実行サンプルを、コマンドプロンプトもしくはターミナルで実行します。

```
curl --user apikey:{apikey} --request POST --header "Content-Type: application/json" --data "{\"text\":[\"Hello\"],\"model_id\":\"en-es\"}" "{url}/v3/translate?version=2018-05-01"
```

これをそのまま入力しても駄目で、前のお試しで入手した値を利用する必要があります。具体的には実行サンプルにある `{apikey}` の部分を、入手した **API鍵** の値で置き換えます。同様に `{url}` の部分も同じ場所にあった **URL** の値に置き換えます。

実際に実行した様子が以下で、Hello がスペイン語の Hola に翻訳されているのがわかります。
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F193519%2F5971cc8f-7272-0701-57ad-7102ac53351a.png?ixlib=rb-1.2.2&auto=compress%2Cformat&fit=max&w=1400&s=9b2406f0cc2a5d6a74a6310e99b874cd)

なお Windows 環境における curl コマンドの利用にはコツがありますので、以下も参照してみてください。

* [Windows 環境における curl コマンド利用のまとめ (平成最終版)](https://qiita.com/yamachan360/items/8c928738289cd518eec8)

## A9

こちらも少し難しい課題でした。まずダッシュボードから [リソースの表示] を実行し、「Cloud Fundry アプリ」にあるサービス名をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/79df0429-0a0f-f8f9-f302-2f99931e9ca1.png)
「概要」ページが表示されますので、「接続」欄にある [接続の作成] をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/d1863c7a-137c-d5bc-2763-43541d1032a6.png)
「既存の互換性あるサービスの接続」メニューが表示されますので、作成済みの翻訳サービスにある [接続] ボタンをクリック。 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/d24fddbf-6b8b-0311-abb8-2f9d5001d8c1.png)
「IAM対応サービスの接続」はそのまま [接続] をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/6740abbd-32fd-e079-2d78-105040fd5a36.png)
「アプリの再ステージ」もそのまま [再ステージ] をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/8a6e7930-ec84-e53c-c595-c4824a501b81.png)
しばらく待って、[概要] メニューに戻ると、「接続」欄にさきほど選択した翻訳サービスが追加されているのがわかります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/98dbaecd-99af-b7a3-1c0c-bd4c87c704a5.png)
これで Node.js コードから Watson の Language Translator サービスを呼び出し、翻訳機能が利用できるようになりました。

【ヒント】IBM Cloud 上における「接続」が具体的に何を意味しているのかを知りたい方は、SDK for Node.js サービスの [ランタイム] メニューにある [環境変数] に表示されている「VCAP_SERVICES」環境変数を眺めてみてください。アプリ実行環境において、接続されたサービスの情報は、この環境変数を経由して受け渡されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/06e4d1b5-0d33-66c5-f111-aa60ddc41d6f.png)

## A10

左上の [IBM Cloud] をクリックして「ダッシュボード」に移動し、「リソースの要約」欄にある [リソースの表示] をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/9a425a28-c3c3-3701-4f16-28b4565f7c4e.png)
「サービス」にある翻訳サービスの右にあるドット(・・・)メニューをクリックし、表示された [DELETE] をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/a2f5c4b8-0b10-b693-001b-58c22af5b9c2.png)
「リソースの削除」でそのまま [削除] をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/8b12182d-b033-a179-1bd3-3fcbf2a51cad.png)
「削除中」と表示されますので、あとは処理を待つだけです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/3b425257-8316-af38-5239-fa54976b2a55.png)

## A11

A10 と同様に「リソース・リスト」を表示し、「Cloud Fundryアプリ」にある SDK for Node.js サービスの右にあるドット(・・・)メニューをクリックし、表示された [削除] をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/51787766-6a72-4d4d-ab2b-b6dd979bbbaf.png)
「経路」にあるチェックボックスをチェックし、[削除] をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/9667246b-784b-6e8c-f516-17d374e6af60.png)
「削除中」と表示されますので、あとは処理を待つだけです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/14e72298-005f-2a33-f79e-b33cca08f828.png)
少し待ち、画面をリロードして、今回作成したリソースが全て削除されていることを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/ecc9cc04-eeac-9e02-f314-5f641194e865.png)

## A12

右上の人型のアイコンをクリックし、メニューにある [プロファイルと設定] をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/97f1177f-9464-958c-52bb-2291e80f6e34.png)
[ユーザー設定] ページが開くので、右の [プロファイル写真] にある [アップロード] ボタンをクリックし、任意の画像ファイルをアップロードします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/a97c0276-83f8-1b59-be3c-33d04474a44a.png)
アップロードした画像が表示されたことを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/4fcba2e7-4964-c4a7-2030-a480b93c5544.png)
これで設定は完了です。右上に反映されていない時は、ブラウザをリロードしてみてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/2e2bf190-f1fb-836b-cfb1-c91c41664ee7.png)

## A13

右上の人型アイコン、もしくはプロフィール写真をクリックし、表示されたメニューで [ログアウト] をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/34a8b05f-2082-238f-c7a6-bdcf835673f4.png)
確認ダイアログが表示されますので、やはり [ログアウト] をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/84101eb3-962b-9db3-43da-9d6dc1f769fa.png)
これでログアウトが完了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/6d3db8e2-d9eb-b5f9-940c-f0e840b1a321.png)
簡単操作ドリルの実施、おつかれさまでした！