LoginSignup
4
1

More than 5 years have passed since last update.

concrete5(5.7.x)アドオンを作成した時に準備したこと

Posted at

はじめに

この記事は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圧縮してアップロードすると、まずは自動審査が実行され、下記の内容が検査されます。

スクリーンショット1.jpg

下記は審査画面で表示されている順の審査内容です。

  1. Doesn't have hidden "dot" files
    • .htaccess.gitなどの非表示ファイル/ディレクトリの類が混じっていないか
    • macOSの人は.DS_Storesには特に注意
    • Git管理していた.gitも混ぜてはいけません
  2. Minimum version matches controller.php
    • 選択したconcrete5の最低必須バージョンとcontroller.phpに記述された最低必須バージョンが一致しているか
  3. Doesn't make use of include statements
    • コード内でinclude関数の類を使用していないか
  4. Each PHP file contains exec or die statements
    • 全てのコードにexec or dieステートメントが使われているか
  5. Doesn't use native cookie functions or $_COOKIE
    • コード内で$_COOKIEまたはクッキー関数の類を使用していないか
  6. Version in matches controller.php
    • 入力したアドオンのバージョンとcontroller.phpに記述されたアドオンのバージョンが一致しているか
  7. Doesn't use native session functions or $_SESSION
    • コード内で$_SESSIONまたはセッション関数の類を使用していないか
  8. Handle matches controller.php
    • 入力したアドオンのハンドル名とcontroller.phpに記述されたアドオンのハンドル名が一致しているか
  9. PHP files parse correctly
    • コードがきちんとパースされているか
  10. Doesn't use direct mysql / mysqli calls
    • コード内でmysql関数やmysqli関数の類が使用されていないか
  11. Doesn't use eval
    • コード内でeval関数の類を使用していないか
  12. Doesn't use execution functions
    • コード内でexec関数の類を使用していないか
  13. Doesn't use file system IO functions
    • コード内でファイルの入出力関数の類を使用していないか
  14. Includes valid package controller namespace
    • コード内で適正なnamespaceが使われているか
  15. Doesn't modify permissions
    • ファイル権限を変更するコードが含まれていないか
  16. Has valid 97x97 marketplace thumbnail
    • サイズ97x97のマーケットプレイス用のアイコン画像が用意されているか

自動審査を通過後、Peer Review Board(以下PRB)、簡単に言えば公式審査員による手動審査が行われます。
問題部分や、改善した方がよい部分などをチャット形式で指示してもらえます。

スクリーンショット2.jpg

そうしてやりとりして、指示された内容を修正して、圧縮して、アップして、再審査しての繰り返しになります。
修正分を圧縮するときに、誤まって.DS_Storesなどが混じってしまうとアップし直しになるので気をつけましょう。

自分は英語がからっきしなので、ここのやりとりに非常に苦戦しました…。
良い英語の勉強方法があれば教えていただきたいです…。2

そして最後にOKが出るとそのまま公開になります。

concrete5 ver8 によるアドオン開発への影響

そういえばver8出ましたね。仕事が忙しくて、残念ながら殆ど確認出来てないのですが、来年に入ったら確認したいと思います。
システム要件を見る感じ、バージョンアップによる開発への影響は殆どないと思います。
ですが、最低環境がPHP 5.5.9 以降に引き上がっていますので、ver8以降のみに対応するアドオンであれば、配列記述をarray()から[]へ変更出来たり、いろいろメリットがありそうな気がしています。

まとめ

自分が公開したSimple Anchorみたいな簡単なアドオンでもいいので、作ってアップしてみるといろいろ知見が広がるかもしれません。

さいごに

スケジュールがギリギリだったのもあって、内容が足りない走り書きの上に、投稿もギリギリになってしまいました…。
来年があれば、もっと余裕を持って投稿したいところ…。

あと、ねこみみ隊長が愛媛に居るタイミングで開催出来そうな時があれば一緒にconcrete5の日@愛媛をモクモクやってたりします。お近くの方はぜひ参加してみてください。

というわけ(?)で、明日はねこみみ隊長(nekomimiTaicho)さんです。


  1. 仕事優先で後回しになりがちなので全く完成が見えません。これは良くない。来年は頑張る。(抱負) 

  2. 地道にやれ 

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1