はじめに
この記事はconcrete5 Japan Advent Calendar 2016の13日目の記事です。
12日の記事はmizuno.fumitoさんのアドオン公開とフィードバックです。
concrete5のアドベントカレンダーに今年は参加してみようと思って見てみたら、既に残り2枠しかなかったのでネタを考える前に勢いだけで参加をポチしました。なので現在「さて何書こうかな」といった感じで書いています。
愛媛でフリーランスをしていて、自分の事業サイトもconcrete5で作っている途中1なのですが、その経過でアドオンを作ったりしました。
そのついでにマーケットプレイスへ公開も挑戦してみましたので、その辺りの注意点を思い出しながら復習がてらに備忘録として残します。
作業環境
MAMP PRO環境下に**concrete5(5.7.x)**をインストールしてバーチャルホストを宛てています。
- OS :
macOS
- ローカル環境 :
MAMP PRO 3.5.2 (PHP 7.0.8)
- 作業ディレクトリ :
~/Sites/c57/
- ローカルURL :
http://c57.local/
サンプル
今回の題材にするアドオンは、半年くらい前にマーケットプレイス公開まで行いました。
Simple Anchor
こちら、ソースコードをダウンロードしていただいて参考にして頂いて大丈夫です。
誰が見てもいいように、割と丁寧に作ったはず…です。
アドオン開発時の構成
simple_anchor
ディレクトリをGitのルートにしています。
Gitのブランチモデルは、リリースバージョンが管理しやすいようGit Flowを採用しました。
ファイル構成は下記の通りになります。
simple_anchor
ディレクトリ以下の構成は大体application
ディレクトリの内容に沿って、必要な分のみ用意すれば大丈夫ですが、アドオンとしてインストールできるようにするには最低限simple_anchor
ディレクトリ直下のcontroller.php
が必要になります。
今回は時間が足りないので、ファイルの内容に関してはダウンロードしたソースコードを参照して頂ければと…。
c57/
└─packages/
└─simple_anchor/ (Git Root)
├─.git/
├─blocks/
│ └─anchor/
│ ├─templates/
│ │ ├─heading_1.png
│ │ ├─heading_2.png
│ │ ├─primary_button.png
│ │ ├─standard_button.png
│ │ └─success_button.png
│ ├─add.php
│ ├─controller.php
│ ├─db.xml
│ ├─edit.php
│ ├─form.php
│ ├─icon.png
│ └─view.php
├─languages/
│ └─ja_JP/
│ └─LC_MESSAGES/
│ └─messages.mo
├─controller.php
├─icon.png
├─INSTALL.TXT
├─LICENSE.TXT
└─README.md
完成したアドオンをマーケットプレイスへ申請
作成したアドオンを、マーケットプレイスの申請の仕方・審査の手引を参考に申請してみました。
マーケットプレイスへ作成したアドオンをzip圧縮してアップロードすると、まずは自動審査が実行され、下記の内容が検査されます。
下記は審査画面で表示されている順の審査内容です。
- Doesn't have hidden "dot" files
.htaccess
や.git
などの非表示ファイル/ディレクトリの類が混じっていないか- macOSの人は
.DS_Stores
には特に注意- Git管理していた
.git
も混ぜてはいけません- Minimum version matches controller.php
- 選択したconcrete5の最低必須バージョンと
controller.php
に記述された最低必須バージョンが一致しているか- Doesn't make use of include statements
- コード内で
include
関数の類を使用していないか- Each PHP file contains exec or die statements
- 全てのコードに
exec or die
ステートメントが使われているか- Doesn't use native cookie functions or $_COOKIE
- コード内で
$_COOKIE
またはクッキー関数の類を使用していないか- Version in matches controller.php
- 入力したアドオンのバージョンと
controller.php
に記述されたアドオンのバージョンが一致しているか- Doesn't use native session functions or $_SESSION
- コード内で
$_SESSION
またはセッション関数の類を使用していないか- Handle matches controller.php
- 入力したアドオンのハンドル名と
controller.php
に記述されたアドオンのハンドル名が一致しているか- PHP files parse correctly
- コードがきちんとパースされているか
- Doesn't use direct mysql / mysqli calls
- コード内で
mysql
関数やmysqli
関数の類が使用されていないか- Doesn't use eval
- コード内で
eval
関数の類を使用していないか- Doesn't use execution functions
- コード内で
exec
関数の類を使用していないか- Doesn't use file system IO functions
- コード内でファイルの入出力関数の類を使用していないか
- Includes valid package controller namespace
- コード内で適正な
namespace
が使われているか- Doesn't modify permissions
- ファイル権限を変更するコードが含まれていないか
- Has valid 97x97 marketplace thumbnail
- サイズ
97x97
のマーケットプレイス用のアイコン画像が用意されているか
自動審査を通過後、Peer Review Board(以下PRB)、簡単に言えば公式審査員による手動審査が行われます。
問題部分や、改善した方がよい部分などをチャット形式で指示してもらえます。
そうしてやりとりして、指示された内容を修正して、圧縮して、アップして、再審査しての繰り返しになります。
修正分を圧縮するときに、誤まって.DS_Stores
などが混じってしまうとアップし直しになるので気をつけましょう。
自分は英語がからっきしなので、ここのやりとりに非常に苦戦しました…。
良い英語の勉強方法があれば教えていただきたいです…。2
そして最後にOKが出るとそのまま公開になります。
concrete5 ver8 によるアドオン開発への影響
そういえばver8出ましたね。仕事が忙しくて、残念ながら殆ど確認出来てないのですが、来年に入ったら確認したいと思います。
システム要件を見る感じ、バージョンアップによる開発への影響は殆どないと思います。
ですが、最低環境がPHP 5.5.9 以降に引き上がっていますので、ver8以降のみに対応するアドオンであれば、配列記述をarray()
から[]
へ変更出来たり、いろいろメリットがありそうな気がしています。
まとめ
自分が公開したSimple Anchorみたいな簡単なアドオンでもいいので、作ってアップしてみるといろいろ知見が広がるかもしれません。
さいごに
スケジュールがギリギリだったのもあって、内容が足りない走り書きの上に、投稿もギリギリになってしまいました…。
来年があれば、もっと余裕を持って投稿したいところ…。
あと、ねこみみ隊長が愛媛に居るタイミングで開催出来そうな時があれば一緒にconcrete5の日@愛媛をモクモクやってたりします。お近くの方はぜひ参加してみてください。
というわけ(?)で、明日はねこみみ隊長(nekomimiTaicho)さんです。