Lightning開発：Aura Documentationの使い方

今年もAdventCalenderの季節がやってきました。少し前にSalesforceのLightning Componentが正式にリリースされたのでLightning開発に関係する話を投稿しようと思います。


SalesforceのLightningにはAura Documentationというドキュメントページが用意されています。このページでLighting開発で利用できる標準コンポーネントの情報を確認できるのですが、その他にも自分達で開発したコンポーネントの情報も確認することができます。
<img width="1274" alt="スクリーンショット 2015-11-23 10.46.04.png" src="https://qiita-image-store.s3.amazonaws.com/0/8407/aa6ed88d-2d51-23f2-bfd9-1391caa0dd59.png">

このとき、自分達で開発したコンポーネントについては任意の情報を記載することが可能となっています。今回はどのような情報を記載できるか確認してみたいと思います。

#はじめに
Aura DocumentationのページはSalesforceにログイン後、以下のURLにアクセスすると表示できます。

```
https://<mySalesforceInstance>.lightning.force.com/auradocs/reference.app
```

マイドメイン設定していた場合は次のようになります。

```
https://<myDomain>-dev-ed.my.salesforce.com/auradocs/reference.app
```

これでAura Documentationのページを確認できると思います。

#Description
Descriptionにはそのコンポーネントについての説明を記載できます。機能の概要についてと使用時に注意することなどについてまとめておくといいと思います。
<img width="1278" alt="スクリーンショット 2015-11-23 12.22.03.png" src="https://qiita-image-store.s3.amazonaws.com/0/8407/1a57c307-97aa-d491-7d0b-963ec3aaa5cf.png">

Descriptionに説明を記載するには、auradocファイルを用意する必要があります。このファイルは開発者コンソールの右側にあるワークパネルのDOCUMENTAIONをクリックすることで作成できます。

次のように『aura:description』タグ内に記述した内容がDescriptionに表示されます。
<img width="1280" alt="スクリーンショット 2015-11-23 12.25.58.png" src="https://qiita-image-store.s3.amazonaws.com/0/8407/24dbb866-7072-4e7f-42fb-1101feba42ef.png">

#Attributes
AttributesにはLightning Componentで利用するaura:attributeタグの情報が表示されます。これでaura:attributeタグで宣言した各変数が何に利用されるかについて説明することができます。
<img width="1275" alt="スクリーンショット 2015-11-23 12.33.02.png" src="https://qiita-image-store.s3.amazonaws.com/0/8407/80971dc4-02f3-1210-4e94-3e0d890c2160.png">

これはaura:attributeタグのdescription属性に記述した内容が表示されます。
<img width="1276" alt="スクリーンショット 2015-11-23 12.35.39.png" src="https://qiita-image-store.s3.amazonaws.com/0/8407/7c1b7fef-060d-760a-f1bc-41230ed5ccf3.png">

#Handled Events
これもAttributesのようにコンポーネント内で使用しているHandled Eventsの情報が表示されます。
<img width="1272" alt="スクリーンショット 2015-11-23 12.44.19.png" src="https://qiita-image-store.s3.amazonaws.com/0/8407/96f663df-37a5-3b87-66e4-c744320096d3.png">

次のようにaura:handlerタグのdescription属性に記述した内容が表示されます。
<img width="1279" alt="スクリーンショット 2015-11-23 12.46.53.png" src="https://qiita-image-store.s3.amazonaws.com/0/8407/4438279a-1d9b-f93c-72f9-a10c9bd73b0e.png">

#Examples
これがAura Documentationで一番便利な機能だと思います。Examplesタグを選択することで表示できます。先程のDescriptionでは概要についての簡単な説明を記述しました、こちらではより詳細な情報を記述することが可能です。
<img width="1273" alt="スクリーンショット 2015-11-23 12.54.37.png" src="https://qiita-image-store.s3.amazonaws.com/0/8407/9d4e29f4-8d43-b1c9-5ebd-d3a34119acb5.png">

Examplesに説明を表示するにはauradocファイルのaura:exampleタグを用意する必要があります。
<img width="1280" alt="スクリーンショット 2015-11-23 12.59.52.png" src="https://qiita-image-store.s3.amazonaws.com/0/8407/9f9b1b97-b029-c829-964f-0722d36c228b.png">

rel属性には対象のコンポーネント名を指定して、label属性にタイトル的な内容を記述します。aura:exampleタグ内に詳細情報を記述していけるのですが、このとき一部HTMLタグの利用が可能となっています。
<img width="1279" alt="スクリーンショット 2015-11-23 13.17.35.png" src="https://qiita-image-store.s3.amazonaws.com/0/8407/0ea5e371-c47a-c176-bd44-234360ad9b3f.png">


上記のように記述した結果がこちらです。
<img width="1274" alt="スクリーンショット 2015-11-23 13.17.13.png" src="https://qiita-image-store.s3.amazonaws.com/0/8407/2006d160-8c65-9ed2-d019-772d6275a336.png">

#Examplesタグの便利機能と注意点
Examplesタグではコンポーネントのプレビューが表示されます。ただのプレビューではなく実際に動かすことが可能となっています。
<img width="1274" alt="スクリーンショット 2015-11-23 13.22.00.png" src="https://qiita-image-store.s3.amazonaws.com/0/8407/864e5add-f184-01f6-351e-964132118724.png">

タブを切り替えてグラフを表示したり・・・
<img width="1278" alt="スクリーンショット 2015-11-23 13.22.23.png" src="https://qiita-image-store.s3.amazonaws.com/0/8407/b68f4783-ef8d-7ba2-a06f-07d912f95072.png">

編集用のポップアップを表示したりといったことが可能です。
<img width="1277" alt="スクリーンショット 2015-11-23 13.22.40.png" src="https://qiita-image-store.s3.amazonaws.com/0/8407/b2d33c0a-3229-c763-d327-e1984fbf637d.png">

このような感じでどんなコンポーネントか確認できるようになっています。このプレビュー機能すごく便利なのですが、ひとつ注意点がありました。

次のように編集画面でレコードの更新を試してみます。

<img width="925" alt="スクリーンショット 2015-11-23 13.27.46.png" src="https://qiita-image-store.s3.amazonaws.com/0/8407/d22bb2e8-f0dc-741d-d85e-40050386e3f1.png">

Examplesタグ内の表示も更新されたことを確認できます。
<img width="1276" alt="スクリーンショット 2015-11-23 13.29.12.png" src="https://qiita-image-store.s3.amazonaws.com/0/8407/fb8336a3-6b54-bd65-cb06-f45c3cfe9159.png">

このときの更新はExamplesタグ内だけかと思ったのですが、実は実際にレコード更新処理が実行されています。
<img width="1276" alt="スクリーンショット 2015-11-23 13.30.23.png" src="https://qiita-image-store.s3.amazonaws.com/0/8407/a573f9fd-9294-af79-3e02-c106391c25c7.png">

Examplesタグで表示できるコンポーネントはプレビューではなく、埋め込み表示ができるという認識が正しいみたいです。

Aura Documentationページを表示するにはSalesforceユーザでログインしている必要があるので知らない間に動かされるということは無いのですが、お試し間隔で試してしまいそうなのでこの仕組みには注意が必要だと思います。

ということでAura DocumentationページのExamplesタグを利用する場合は、判定用のフラグを用意するなどして更新や削除ができないようにした方が良さそうです。

#さいごに
ひとつ注意点もありましたが、このAura Documentationを利用することでいままで苦労した仕様書の作成も効率よく行えるのではないかと思います。クラウド上で管理できるので常に最新の仕様書として扱うことができます。

また書式も統一され他の開発者がつくったコンポーネントでも同じように管理できるんじゃないかと思います。

以上、Lihgtning開発のAura Documentationの使い方についてでした。Lightning Componentを開発するときはAura Documentationのことも意識しておくと良さそうです。