CodeIQ MAGAZINECodeIQ MAGAZINE

Novius OSを題材に、FuelPHPでチャットワークAPIを使ってみよう #PHP #FuelPHP

2014.03.05 Category:技術コラム Tag: , ,

  • 20
  • このエントリーをはてなブックマークに追加

FuelPHPは、ウェブサイトやウェブサービスを構築するときに役立つフレームワークです。シンプルで高速軽量なことが特徴です。

今回は、チャットワークと、FuelPHPベースのCMSであるNovius OSを題材に、FuelPHPを使って、外部サービス(チャットワーク)のAPIを利用して連携する方法を紹介します。
by レスキューワーク株式会社 水野史土

チャットワークとNovius OSについて

まずは今回使うチャットワークとNovius OSについて簡単に紹介します。

チャットサービス「チャットワーク」

チャットワーク」について簡単に紹介します。
チャットワークの名の通り、チャットサービスを使って仕事を効率化するウェブサービスです。グループでチャットすることに加え、簡易的なタスク管理やファイル管理機能が用意されています。

基本的にはブラウザを立ち上げて書き込みする方式ですが、APIを活用して投稿することができます。ただし記事執筆時点ではAPIは正式に公開されておらず、「チャットワークAPIを限定プレビュー公開します!」から申請する方式になっています。

コンテンツ管理システム「Novius OS」

Novius OS」について簡単に紹介します。
FuelPHPベースのCMS(コンテンツ管理システム)です。オープンソースで公開されているため、Novius OS という名前になっています。FuelPHPの流儀でカスタマイズできるため、ウェブサイト開発が高速かつ効率的に行えます。

チャットワークのAPIをFuelPHPで使う

それでは、チャットワークのAPIをFuelPHPで使ってみましょう。
Mamoru OtsukaさんがMITライセンスで公開している パッケージ があります。今回はこちらを使います。

パッケージを使う方法

FuelPHPにはパッケージシステムがあります。パッケージはコードのまとまりのことで、必要に応じて取捨選択できます。FuelPHP本体にはauth(認証)、email、orm等が同梱されているほか、有志が公開しているものもあります。

FuelPHP Advent Calendar 2013の「FuelPHPでChatWorkパッケージを使ってみる」を参考に設定を行います。

パッケージを使うには、以下の手順を行います。
1. chatworkパッケージをダウンロードし、packagesフォルダに置く
2-a. configファイルのalways_load.packagesにchatworkを追加する
2-b. パッケージが必要な箇所でPackage::load(‘chatwork’);と記述する
2-a/2-bはいずれかを実行

chatworkパッケージには設定ファイルがあり、api_tokenを記入するようになっています。

return array(
    'api_token' => '自分のトークンを記入',
);

パッケージ内部のファイルを直接書き換えても動作しますが、FuelPHPではアプリケーションディレクトリ内に自分用の設定ファイルを置くことができるので、通常はそちらで設定を行います。

Novius OSでは、local/config/にchatwork.config.phpファイルを作成し、そこでAPIトークンを指定します。(FuelPHPの一般的なアプリケーションでは、fuel/app/config/にchatwork.phpを作成してください)APIトークンは、チャットワークAPIを利用申請するともらえます。

これでパッケージを使う準備ができました。

イベントを使って連携

では、実際に連携してみましょう。FuelPHPでは、イベント機能があり、アプリケーションに独自の処理を差し込むことができます。アプリケーションの処理の途中でトリガーを用意しておくことで、特定の処理を実行する時に、処理を追加することができます。

Novius OSでは、FuelPHPのイベント機能を用いており、様々なトリガーが用意されています。なので今回は、Novius OSの処理の途中でチャットワークAPIにアクセスしてチャットワークへ投稿する、を行ってみます。

イベントを活用して処理を追加するには、FuelPHPに用意されているEvent::registerメソッドを使います。詳細はFuelPHP Advent Calendar 2013の「イベント機能を使ってアプリケーションをカスタマイズするをごらんください。

たとえば、Novius OSでログインに失敗した時に、失敗したことをチャットワークに通知する場合、下記のようになります。

    // (C) 2014 Fumito MIZUNO
    // License: MIT

    //Event::register(フック, 実行する関数);
    //admin.loginFailのところで、warning_on_loginfailを実行する
    Event::register('admin.loginFail', 'warning_on_loginfail');

    function warning_on_loginfail()
    {
        $message = 'Login Fail.';
        $message .= '  Email: ' . Input::post('email');

        // ログインに失敗したパスワードであるが、平文で送ることになるので注意する。
        // $message .= '  Password: ' . Input::post('password');

        $message .= '  IP: ' . Input::ip();

        $response = chatworkpost($message);
    }

    function chatworkpost($message) {
        \Package::load('chatwork');
        $chatwork_roomnum = 'チャットワークのルーム番号';
        return \Chatwork::post("/rooms/$chatwork_roomnum/messages", array('body' => $message));
    }

チャットワークのルーム番号は、チャットワークにログインして、チャットルームを開くと表示されるURLのridの後の数字です。

このコードをbootstrap.phpに記述すれば、準備完了です。

ログインに失敗してみる

では、Novius OSのログイン画面に行き、間違ったID/パスワードを入力してみます。

ログインに失敗すると、チャットワークの指定したルームにメッセージが表示されます。

こうしておけば、不正ログイン試行の兆候を早く察知することができますね。

問い合わせがあったら通知する

通知できるのは、ログイン失敗だけではありません。イベント機能のトリガーが用意されている箇所であれば同様な方法で通知できます。たとえば、Novius OSではフォームから問い合わせがあったときのトリガーnoviusos_form::after_submissionが用意されています。

これを使えば、ウェブサイトから問い合わせがあったらチャットワークに通知する、ということができます。

    Event::register('noviusos_form::after_submission', 'form_to_chatwork');
    function form_to_chatwork($data)
    {
        $message = 'novius-os.jp gets a message: ' $data[0]->answer_created_at;
        $response = chatworkpost($message);
    }

チャットワークに通知することで、問い合わせへに素早く対応できるようになります。また問い合わせの見落としのリスクも軽減できます。

まとめ

Novius OSとチャットワークという、別のソフトウェアで構築されたウェブサイトとウェブサービスを繋いでみました。Novius OSがFuelPHPベースであること、チャットワークAPIを扱うFuelPHPパッケージが公開されていること、この2つのおかげで効率よく連携することができました。

興味を持った方は、ウェブサイトとチャットワークを連携させてみてはいかがでしょうか。

CodeIQコード銀行にあなたのコードを預けてみませんか?

  • CodeIQコード銀行ではあなたのコードを財産と考えます。
  • お預かりいただいたコードは、CodeIQコード銀行がしっかり評価し、フィードバックいたします。
  • 当コード銀行にお預けいただいたコードは、企業がみてスカウトをかける可能性があります。
  • 転職したい方や将来転職することを考えている方で、今の自分のスキルレベルを知りたい方はぜひ挑戦してみてください。
  • 企業からスカウトがきたら困る人は挑戦しないでください。

興味を持った方はこちらからチャレンジを!

  • 20
  • このエントリーをはてなブックマークに追加

■この記事を書いた人

avatar

レスキューワーク株式会社 水野史土

レスキューワーク株式会社(WordPressサイト/テーマ/プラグインの診断および障害復旧サービス)の代表取締役。。WordPressおよびNovius OS(FuelPHPベースのCMS)のコアコード貢献者。concrete5.orgのコミュニティリーダー。主な著書「徹底攻略 PHP5 技術者認定 [上級] 試験問題集」(共著)。

■関連記事

GUIでアプリケーションが作れるNovius OSで効率的な開発 #PHP... 「アプリケーション作成」ウィザードとは 「アプリケーション作成」ウィザードとは、Novius OSに標準同梱されているアプリケーションです。管理画面からアプリケーションの雛形を作ることができます。開発を効率化するツールとして役立ちます。 このウィザードを使ってアプリケーションの雛形を作ると、 ...
クイックソートとバブルソートを比較してみよう #PHP... クイックソートとバブルソート ソートの方法には様々な方法があります。よく知られているものには、クイックソートやバブルソートなどがあります。ほかにもソート方法がありますが、ここではこの2つを紹介します。尚、今回は要素の値は全て異なる前提とします。 バブルソート バブルソートは、一番小さい(or大...
Webサイト発注の指標にもなるconcrete5のポイント機能「Karma」とは? #concret... concrete5とは? concrete5とは、CMS(conctents management system)と呼ばれる、Webサイトをブラウザから更新できるようにするソフトウェアのことです。アメリカ、オレゴン州ポートランドで開発されていますが、英語だけでなく様々な言語に対応しています。日本語...
覚えておくと便利!min, max関数を使ってシンプルなコードを書く方法 #PHP... <Part1> min関数の活用法 min関数は、いくつかの値から最小のものを返す関数です。非常にシンプルですね。シンプルな関数ですが、使い方はいろいろあります。とり得る引数も様々です。 配列を引数にする場合 min関数は配列を引数にすることができます。この場合、配列の要素の中で最も小さい値を...
手軽に開発環境が作れるビルトインサーバーを使ってみよう #PHP... PHPの動作環境構築方法 PHPプログラムは、コマンドラインから実行することができます。しかし、たいていの場合は、ブラウザでアクセスし、実行することが多いでしょう。この場合、ウェブサーバーを用意してアクセスします。以下のように、いろいろな方法があります。 Apache等のウェブサーバーを起動す...
トランプのカードを混ぜる仕組み(パーフェクトシャッフル)をプログラミングで調べてみよう #PHP... トランプのカードを混ぜる トランプゲームを行う時、カードを混ぜる必要があります。カードを混ぜる方法にも、様々なものがありますが、ここでは、リフルシャッフルを取り上げます。 リフルシャッフルは、カード全体を半分に分けて、交互に一枚ずつ混ぜていく、というものです。 実際に手作業で行うと、一度に二、三...

今週のPickUPレポート

新着記事

週間ランキング

CodeIQとは

CodeIQ(コードアイキュー)とは、自分の実力を知りたいITエンジニア向けの、実務スキル評価サービスです。

CodeIQご利用にあたって
関連サイト
codeiq

リクルートグループサイトへ