Google Chrome 拡張機能の開発 - 8 - (2017年12月)1年ぶりなのでもう一度はじめの一歩

#はじめに
1年ほど前に、ちょっとしたChromeの拡張機能を作ったものの、それからめっきり触れる事が無く、ちょっと作ったものを直そうにも何をしていいかもわからなくなったため、1からはじめてみます。

#とにかくやってみる
作業用に `C:\` 直下に `Hoge` フォルダを作ります。今後はここを作業フォルダとして話を進めて行きます。
まずは、このフォルダを拡張機能のページにて指定してみます。
<details><summary>Chromeの拡張機能の管理ページを表示方法</summary><div>
Chrome右上の設定を表示するボタンをクリックしメニューより[その他ツール(L)].[拡張機能(E)]をクリックする。

|![image.png](https://qiita-image-store.s3.amazonaws.com/0/156225/8d34597a-81a7-1a56-e7df-59b47830bbc5.png)|
|:--|
(※拡張機能が一つもない状態)
</div></details>

[デベロッパーモード]にチェックを付けて、[パッケージ化されていない拡張機能を読み込む...]をクリックして、作業フォルダを指定します。
何もファイルを置いていないので、次のように表示されます。

|![image.png](https://qiita-image-store.s3.amazonaws.com/0/156225/061db119-cbf8-01bb-da4f-0cce0dd4065d.png)|
|:--|

#マニフェストファイルを設置する
必要な最小構成は次の通りで、これを作業フォルダに置きます。

```json:manifest.json
{
	"manifest_version": 2,
	"name": "Hoge",
	"version": "0.0.0.1"
}
```

<details><summary>それに至る経緯については次の通りです</summary><div>
以下の中身の `manifest.json` ファイルを `C:\Hoge` に置いて、[再読み込み]ボタンをクリックします。

```json:manifest.json
{}
```

|![image.png](https://qiita-image-store.s3.amazonaws.com/0/156225/165d1104-06c5-ab94-1c35-5d67bb149857.png)|
|:--|

`manifest_version`キーが無いといわれるので追加し、メッセージ通りに引用符無しで `2` を指定して再読み込みします。

```json:manifest.json
{
	"manifest_version": 2
}
```

|![image.png](https://qiita-image-store.s3.amazonaws.com/0/156225/b9e282cf-2cee-3420-ba00-eb4cc2af486a.png)|
|:--|

今度は `name` が無いといわれるので、次のようにして再読み込みします。

```json:manifest.json
{
	"manifest_version": 2,
	"name": "Hoge"
}
```

![image.png](https://qiita-image-store.s3.amazonaws.com/0/156225/790b4705-61b8-d668-e04e-cfd0ba985dc7.png)

今度は `version` が無いといわれるので、次のようにして再読み込みします。

```json:manifest.json
{
	"manifest_version": 2,
	"name": "Hoge",
	"version": "0.0.0.1"
}
```

|![image.png](https://qiita-image-store.s3.amazonaws.com/0/156225/d2726e61-399f-600b-309b-3aad34b65ee5.png)|
|:--|

どうにかエラーメッセージが表示されることなく読込めたようです。
</div></details>

ブラウザの右上に次のように表示されているかと思います。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/156225/7db1a3a3-ca14-bd83-a772-df74199302e4.png)
表示用のアイコンを用意していない場合、 `name` で指定した値の頭文字がアイコンとして表示されるようです。

#アクションを設定する
アクションは「ブラウザアクション」と「ページアクション」とがありますので、とりあえずブラウザアクションとして、次のように設定をマニフェストファイルに追加します。(htmlのファイル名は慣習的には`popup.html`とするようです)

```json:manifest.json
{
	"manifest_version": 2,
	"name": "Hoge",
	"version": "0.0.0.1",
	"browser_action": {
		"default_popup": "hoge.html"
	}
}
```

次のhtmlファイルを作業フォルダに追加します。

```html:hoge.html
ほげ
```

拡張機能の管理ページでリロードをクリックします。
ブラウザの右上に表示されているアイコンをクリックすると次のように表示されました。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/156225/8e23bb19-0e9e-0c9c-8f81-cb578ba5ca88.png)

後は、やりたい事を `hoge.html` に追加していけば、最低限の事は行なえるかと思います。

#既にある拡張機能をいじってみる場合
次の場所に置かれています。

```
%UserProfile%\AppData\Local\Google\Chrome\User Data\Default\Extensions
```

拡張機能の管理ページで、[デベロッパーモード]にチェックを付ければ、IDが表示されますので、目的の拡張機能を丸ごとコピーして書きかえた後、[パッケージ化されていない拡張機能を読み込む...]で読込めばOKです。
元々ある内容を書き換えると不正防止のため破損状態となり、修復が必要になります。
この時、その拡張機能の保存情報を取っておかないと、初期化されますのでご注意ください。

とりあえず、今回はここまで。


|前回|一覧|次回|
|:--|:--:|--:|
|[これまでの内容を整理](https://qiita.com/rrryutaro/items/93769ebcb35962821098)|[シリーズ一覧](http://qiita.com/rrryutaro/items/015b67568ddd947ec2b5)|[ページの閲覧を便利にする（アンカー追加、折りたたみ）](https://qiita.com/rrryutaro/items/c94d88785205fc929497)|