たぶん普通のCPAN Module開発手法

Kichijoji.pm #3

ytnobody

わいとんです

わいとんです

  • Machida.pm (最近はマチピーFM) http://machidapm-fm.tumblr.com/
  • Perlつかう人です。
  • UnityとかC#とかつかう人になりつつあります。
  • 最近欲しいのはSurface Pro 3です。

テーマ

ツールチェーン

なるほど?

今日のまとめ

CPAN AuthorになったらMinilla使っとくと大体楽

Minilla とは?

CPANへのモジュール登録を支援してくれるツール

Minilla とは?

雛形を作ってくれる

  • モジュール本体だけではなく、テストの雛形も。
  • 依存モジュール定義ファイル(cpanfile)の雛形も。

Minilla とは?

CPANへのモジュール登録をCLIでできるようにしてくれる

  • 但し、PAUSEアカウントが必要。

Minilla とは?

gitとの連携をしてくれる

  • 雛形作成時にgit initしてくれたり、リリース時にtagを切ってくれたりする。

実際の開発

手始めに雛形を作る

    $ minil new My::Module

  • ./My-Module というディレクトリが作成され、配下に各種雛形が出力される。

実際の開発

テストを書く(仕様が定まっている前提)

  • ./t/ 配下にテストケースを追加していく。
  • Test::Moreの流儀に沿ってテストケースを記述。

実際の開発

実装を記述していく

  • 基本的には ./lib/My/Module.pm に実装書いていくことになる
  • けど、大抵の場合、設計的観点から、Package分けをしたりする。(つまり大抵はファイルが分かれる)

実際の開発

ドキュメントを記述する

各実装ファイルにpod形式でドキュメントを書いておく。

特にルートとなるモジュールファイル(例では./lib/My/Module.pm)には、以下のものを書いておくとわかりやすい

  • DESCRIPTION 概要
  • SYNOPSIS 実際の使用例コード
  • 各種メソッドの一覧および詳説 このあたり書かないと、「つかいたい!」って言ってもらえたときに、使ってもらいにくい。

実際の開発

依存関係を記述しておく

  • 開発するモジュールが利用するモジュールを、./cpanfileに記述していく。

実際の開発

テストを実行する

  • 無事にテストを通過するようになるまで、実装を直していく。

Minilla以外のツール

plenv

  • ユーザ権限でPerlモジュールをインストールしたりするために使う。
  • perl-buildでやったほうがシンプルだけど、親切なCLIが付いてくるので、こちらのほうが僕は好き。

Minilla以外のツール

Carton

  • 依存モジュールのバンドルをするツール。
  • アプリケーションごとにバンドルを分けておきたいケースに便利。

Minilla以外のツール

git

  • これがないと始まらない。ソースコードリビジョン管理ツール。

さて

Perlの話はここまで。

クラウドにおけるツール

「ツール」つながりで、最近僕が使っているXaaSをいくつかご紹介!

クラウドにおけるツール

Mackerel

  • Monitoring as a Service
  • ホストに監視エージェントを仕掛けると、リソース監視やらネットワーク監視やらをやってくれる。
  • とりあえずエージェントを入れておくだけで、ホストのダウン検出ができる。簡単。
  • 細やかな監視項目の設定が可能。玄人にもおススメ。

クラウドにおけるツール

Google BigQuery

  • Big-Data as a Service. 時折Amazon RedShiftあたりと比較される。
  • td-agent経由でさまざまなログを放り込んでおいて後でクエリを発行すると、大体30秒以内で分析ができる。
  • 安い。

クラウドにおけるツール

travis CI

  • Continuous Integration as a Service
  • githubと連動して、変更を検出してテストを自動実行する。
  • 正直、ないとつらい

クラウドにおけるツール

tutum

  • Docker as a Service. beta期間だから無料。
  • 世の中のありとあらゆるIaaSにDockerコンテナをボタン一発でデプロイ。
  • 簡易リソース監視、auto restart等の機能を提供。
  • herokuっぽく使える。

まとめ

  • Minillaを使うと簡単にCPAN Moduleの開発ができるよ
  • Minilla以外にもplenvとCartonを使うと大変開発がはかどるよ
  • gitがないと息ができないよ
  • クラウドとして提供されているツールも便利だよ

以上となります。 よろしくお願いいたします。

PAPIZILLA「ヤプシー成功祈願」を応援しております!

PAPIZILLA

開発秘話はこちら。 僕がネタ10割でつくったUnity製ブラウザゲーム「PAPIZILLA」、良かったら遊んでみてね! ちなみに僕の保有記録は「1080 sec.」です。皆さんは何秒間耐え切れるか!?