Home > アーカイブ > 2013-10

2013-10

Twilio をはじめるのに知っておくと良いこと6つ(Twilio API勉強会@大阪)

この記事の所要時間: 528

Twilio 盛り上がってきていますね。電話という身近でありながらシステムとして扱うには複雑な仕組みが必要なものを単純な API で操作できるというのは面白いサービスです。

先日大阪で行われたTwilio API勉強会@大阪にて、PHP から Twilio を触ってみるハンズオンセッションを行ないました。Twilio を使うと簡単な PHP コードで、自分の携帯を鳴らしたり、携帯から電話をかけてみたり、簡単に試すことができるので、これはハンズオンとしてもなかなか楽しかったです。

お声がけいただき、ありがとうございましたm(_ _)m

発表資料はこちら。

Twilio API を PHP で触ってみよう from Masashi Shinbara

ハンズオンの手順は、Gist に書いています。ここでは、Composer を使って、twilio-php(PHP版のTwilioライブラリ)をインストールしています。

https://gist.github.com/shin1x1/7006593

Twilio は使いやすいサービスなのですが、はじめる際に知っておくと良いポイントを挙げてみます。

1. まず Twilio をはじめるならこれ

Twilio 公式ドキュメントは内容が豊富で、リファレンスだけでなく実用例など役立つ内容なのですが、はじめて触る人は迷ってしまいまいがちです。

まず、Twilio とは何ぞや、ざっくりどう使えば良いかを掴むには、Twilio サイトにある「ゼロからはじめるぜ!Twilio」という連載がオススメです。

アカウント作成から、Twilio を使った電話のインバウンド、アウトバウンド、そしてPHPによるサンプルコードの実装など、まず第一歩を踏み出すには分かりやすい内容ですので、まずTwilioを触ってみようという人はこの連載を第一回から通して見てみるのが良いでしょう。

ゼロからはじめるぜ! Twilio – Twilio for KDDI Web Communications

2. 処理の流れをつかむ

Twilio と連携ライブラリには様々な機能があるので、はじめはどの局面でどれを使えば良いかが分からない場合があります。

まずは、Twilio と Web アプリケーションとでどういった連携を行うかを流れとして掴んでおくと良いでしょう。

Twilio とWebアプリケーション間ではHTTPリクエストで通信して連携を行ないます。これには、Twilio からアプリケーションWebアプリケーションへHTTPリクエストが送られるパターンと、反対にWebアプリケーションからTwilioへHTTPリクエストを送るパターンがあります。

まずは、Twilio から Web アプリケーションへ HTTP リクエストが送信するパターン。電話のインバウンドがこれにあたります。

この場合、Web アプリケーションでは、TwiML を生成して、返します。twilio-php を使う場合、Services_Twilio_Twimlクラスを利用します。

twilio-php-15-1

次に、Web アプリケーションから Twilio へ HTTP リクエストを送信するパターン。電話のアウトバウンドがこれにあたります。

この場合、Web アプリケーションでは、REST API を実行します。twilio-php を使う場合、Services_Twilioクラスを利用します。

twilio-php-41

つまり、用途に応じて、TwiML と返せば良いのか、REST API を実行すれば良いのかの見極めが重要となります。(とりあえず REST API を実行すれば良いのかと思い、REST API ばかり調べて「?」となりました:-p)

3. アプリケーションの検証は、まずはブラウザで

twilio-php で、Twilio 連携部分を実装した場合、いきなり電話をかけてテストするのではなく、まずはブラウザ等で TwiML が正常に生成されているかを確認しましょう。

ハンズオンでもあったのですが、そもそも PHP レベルでエラーとなっていると、電話をかけても正常に動作しません。電話ではエラーの原因もわからないので、まずはブラウザ等で動作確認してから、電話での確認を行うと良いです。(電話代もかかりますしね)

4. セキュリティ

  1. を見ると「おやっ?」と気づく人もいると思うのですが、Twilio からの Web アプリケーションへの通信は、単なる HTTP 通信なので、何も対応していないと Twilio を偽装したリクエストを Web アプリケーションへ送信することができてしまいます。

Web アプリケーション側では、送信されてきた HTTP リクエストが Twilio からのものかを検証する方法が用意されているので、本番環境ではこれらを対応しておくと良いでしょう。

  • HTTPS による通信
  • Basic認証 or Digest認証
  • Twilio からのリクエストをバリデーション

Twilio Docs – Security

5. SMS は、海外番号からしか送受信できない

Twilio でまず使いたくなるのが、SMS の送受信なのですが、現状(2013/10/30)、日本国内の番号からは利用することができません。

海外番号を入手するには、Twilio にクレジットカードを登録して、本アカウントに切り替える必要があります。

2要素認証など、SMS を活用したい場面があると思うので、お試しアカウントでも触れると便利なのですが。

6. そして Twilio 公式ドキュメント

こうして Twilio の概要をおさえた後は、Twilio 公式ドキュメントが大いに役立ちます。特にユースケース毎の実装例などは、仕組みを理解するにも良いですね。

Twilio ドキュメント
Twilio – ガイドとハウツー(実装例)

おまけ. SMS が、au より Softbank の方が安い

KDDI Web Communications のサービスなのですが、なぜか SMS 送信料が、au(9.6円)よりSoftbank(1.5円)の方が安くなっています。

不思議に思ったのですが、色々な事情があるようです。

  • コメント (Close): 0
  • トラックバック (Close): 0

イベント参加報告会という勉強会セッション(Fukuoka.php vol.10, 第10回関西PHP勉強会)

この記事の所要時間: 316

イベント参加報告会という勉強会セッションがあらためて面白かったという話。

Fukuoka.php PHPカンファレンス&WordCamp Tokyo参加報告会

Fukuoka.php vol.10 に参加してきました。もてなしていただき、ありがとうございましたm(_ _)m

今回は「PHPカンファレンス & WordCamp Tokyo」参加報告会ということで、イベントに参加した人がそれぞれの参加レポートを10分程度発表していくという形式でした。

参加レポートといっても、形式張ったものではなく、写真やスライドを交えて、実際に行った感想や、どのセッションを見た、こんな写真を撮った、宿はこうして確保など、友人に「こんなイベント行ってきたよ」と話すような気軽な内容です。

実際に参加してみて、これはとても良いアイデアだと思いました。

まずは、話す側から。

技術的なセッションとは違い、参加した自分自身の感想を話すセッションなので、その人が感じたことが正解であり、誰かに間違いを正されることはありません。詳しくないから話せいないということもなく、誰もが気軽に話せるセッションだと思います。話すきっかけを探している人にとっては良いチャンスです。

次に、聞く側から。

遠方のイベントに興味があるけれど、なかなか参加できないという人にとっては、参加した人の生の声を通してイベントを知ることができます。セッション内容やイベントとしての全体のレポートは Web 上でまとめられることが多いですが、身近な人から直接聞くことで、よりイベントを近くに感じることができます。

これを聞いた人が、次回以降にそのイベントへ参加するきっかけになると良いですね。

第10回関西PHP勉強会

後日開催した第10回関西PHP勉強会 では、このアイデアを拝借して、「PHPカンファレンス&WordCamp Tokyo&JAWS Festa Kansai参加報告会」を開催しました。( @akase244 さん、事後報告ですが、アイデア拝借させて頂きましたm(_ _)m )

私は、PHPカンファレンスとJAWS Festa Kansaiについての参加レポートを話してきました。参加レポートといってもメインは JAWS Festa Kansai で行われたアンカンファレンスについて話しました。

アンカンファレンスという名前から想像する印象とは異なっていたのですが、それぞれのテーマに基いてグループ(6–10人程度)が作られ、モデレータが中心となり、その話題について語り合うという内容です。Chef や AWS、カンファレンス運営や、baser CMSのチューニング方法など様々なテーマが用意されていました。

少人数で議論に参加するため、おそらく傍観者として、ただ見ているだけという人はいなかったように思います。テーマについての理解度は人それぞれですが、各々の立場での考えを述べて、それに対するリアクションと聞いてといった具合に全員が参加することができる良いセッションだと感じました。

いずれはこういったセッションもやってみたいですね。(もっと踏み込んで、グループで、何かの OSS についてパフォーマンスチューニングしたり、ハックするイベントをやるのも面白そう。)

参加レポートのために必要なこと

両イベントで色々な参加レポートを聞いたのですが、やはり写真は大事ですね。イベントの様子を話すには、写真があるとないとでは伝わることが大きく違います。blog 書く時も同様なので、写真は忘れずに撮っておきたいものです、はい。

そういえば、Fukuoka.php も関西PHP勉強会も今月 10 回目だったんですね!お互いに続けていければ良いですねー。

  • コメント (Close): 0
  • トラックバック (Close): 0

PHP開発環境のサンプルVagrantfile

この記事の所要時間: 510

PHPカンファレンス2013でPHP開発環境をVagrantで作る発表を行ったのですが、具体的なVagrantfileが欲しいという声を頂いたので、GitHubに公開しました。

vagrant

ご自身で構築するベースになれば良いと思うので、どう作れば良いの?と言う方は参考にしてみて下さい。

なお、このリポジトリの Vagrantfile は、開発PC内の VirtualBox 上で開発環境として動かすことを想定しています。セキュリティについては考慮されていないのでご注意下さい。

vagrant-lapp-sample

https://github.com/shin1x1/vagrant-lapp-sample

このリポジトリは、PHPアプリケーション(CakePHP)をイメージしています。構成は以下です。

  • CentOS 6.4
  • Apache 2.2
  • PHP 5.4
  • PostgreSQL 9.3
  • phpPgAdmin

ディレクトリ構成としては、app/ がアプリケーションのコードを置くディレクトリで、vagrant/ に Vagrant のファイルを置くイメージです。

app/ には、サンプルとして CakePHP アプリケーションを置いています。(cake bake project したもの)

使い方

git clone でプロジェクトのコードを取得して、あとは vagrant ディレクトリ で、vagrant up を実行するだけです。

$ git clone https://github.com/shin1x1/vagrant-lapp-sample
$ cd vagrant-lapp-sample/vagrant
$ vagrant up

アプリケーションへのアクセス

ブラウザから http://192.168.33.30/ にアクセスすると、PHPアプリケーションを実行することができます。

phpPgAdminへのアクセス

ブラウザから http://192.168.33.30/phpPgAdmin/ にアクセスすると、phpPgAdmin を利用できます。ユーザは vagrant、パスワードは pass です。(厳密にはパスワードは何でも ok です)

ポイント

synced_folder

このリポジトリのルートディレクトリ( app/ があるディレクトリ)を synced_folder に設定しており、仮想マシンからは /share でアクセスすることができます。

つまり、ホストPCで app/webroot/index.php というファイル編集すると、仮想マシンでは /share/app/webroot/index.php のファイルが自動で更新されます。

ドキュメントルート

Apache のドキュメントルートは、/share/app/webroot に設定しています。

これは vagrant/httpd.conf で設定しており、プロビジョニング実行時に /etc/httpd/conf/httpd.conf に上書きされます。変更が必要であれば、vagrant/httpd.conf を編集して、vagrant provision でプロビジョニングを再実行すると良いでしょう。

なお php.ini も同様に vagrant/php.ini を用意しています。

設定ファイルの準備

Apache や PHP などの設定ファイルを準備する際は、下記手順で行っています。

仮想マシン内での /vagrant ディレクトリが、ホストPCでは Vagrantfile があるディレクトリと synced_folder になっているのがポイントです。

  • まずが vagrant up で仮想マシンを起動
  • vagrant ssh でログインして、yum で対象パッケージをインストール
  • 設定ファイルを変更、動作確認
  • cp -a /etc/http/conf/http.conf /vagrant/
  • ホスト PC の variant/ に httpd.conf がコピーされる
  • プロビジョニングで、/vagrant/httpd.conf を /etc/httpd/conf/ にコピーするコードを書いておく

データベース

この Vagrantfile では、データベースの構築は行っていますが、アプリケーションで必要なテーブル定義などは行っていません。

このあたりはプロジェクトによって方法が異なると思いますが、フレームワークやライブラリ等でマイグレーション機能があればそちらを、無ければ dmp ファイルを適用するコマンドをプロビジョニングで記述することになります。
( PostgreSQL であれば、 psql -Uvagrant app < pgsql.dmp など。)

シェルプロビジョニング

プロビジョニングには、シェルを使っています。

普段、サーバにSSHログインして yum や apt-get などでインストールしているコマンドをそのまま Vagrantfile に記述していくだけなので、簡単に書けるのが利点です。

Chef や Puppet、Ansible などのプロビジョニングツールを利用しても良いのですが、以前にこういったツールを使ったことが無いのであれば、まずはシェルで構築してみて、次の段階として好みのプロビジョニングツールを試してみるがおすすめです。(もちろん、一気にプロビジョニングツールを使いたい方はその方法でも問題ありません。)

Composer

composer.json が存在すれば、composer.phar をダウンロードして、composer install を実行するようにしています。

このリポジトリでは、CakePHP と PHPUnit を Composer でインストールしています。

  • コメント (Close): 0
  • トラックバック (Close): 0

関西PHP勉強会で「いまどきのPHP」を発表してきました( in JAWS FESTA Kansai 2013 )

この記事の所要時間: 325

9/28に京セラドームで開催されたJAWS FESTA Kansaiの1トラックとして、関西PHP勉強会を開催しました。

Untitled
Photo by omoon.

午前のセッションにも関わらず、多数の方に参加頂き、ありがとうございました。

いまどきのPHP

今回の勉強会では、3セッションを行ったのですが、私のセッションでは「いまどきのPHP」について発表しました。

いまどきのPHP from Masashi Shinbara

いつもの勉強会とは違い、JAWS FESTA Kansai の中で開催したので、PHPユーザ以外の方(普段は別の言語で開発している、以前は書いていたけど最近の動向は知らない)が参加されるかもと思い、いま多くの言語で行われているオブジェクト指向開発がPHPでもきるんだよということを伝えたくて、PHPのオブジェクト指向機能をメインにしました。

結果としては、ほとんどの方がPHPをメインで使われているとのことだった(まあ、PHP勉強会なので当たり前になのですが:))ので、おさらい程度の内容だったと思うのですが、熱心に聴いて下さる方もいたので、話して良かったです。

じゃんけん大会

勉強会の終わりには、「PHPエンジニア養成読本」をかけたじゃんけん大会を行いました。

ちょうど隣の WordBench 大阪のセッションが終わった頃だったので、多数の方に参加頂いて、盛り上がりました:D 獲得された方は、簡単な内容で良いので、レビューなど書いて頂ければ嬉しいですm(_ _)m

blog を書くまでが勉強会

数年前の勉強会では良く言われていたフレーズです。私自身の開催する勉強会では必ずこの話をしていたのですが、TwitterやFacebookなど気軽に短文を投稿できるメディアが広がってからはあまり聞かなくなりました。

その頃から、勉強会やカンファレンスなどのイベントへの参加blog記事が少なくなってきたような気がします。私自身も以前は書いていた参加エントリも書かなくなりました。(一時期はスライドすら公開しないことも><)

今回は初心に戻って、勉強会の最初と最後で伝えたのですが、すると早速いくつかのエントリを書いて頂けました!一時期に比べるとblogを書く人が減っているのはあるとは思うのですが、きちんと伝えれば反応してくれる人はいるのだとあらためて思いました。

勉強会の運営やセッションでの発表などは一方通行のものではなく、参加した人との相互作用で成り立つものだと思います。その場でお話するのももちろん良いのですが、できればblogなどでのフィードバックがあると今後の参考になりますし、なにより「開催して良かった」「次はこうしよう」など今後へのモチベーションにもなりますので、可能な範囲で書いて頂けると嬉しいです。(自戒も込めて)

発表資料や参加エントリはKansai PHP Users Group の Facebook グループにて。

Kansai PHP Users Group として別イベントへの参加

Kansai PHP Users Group として活動してから、3 年以上が経つのですが、ようやく別のイベントにコミュニティとして参加する機会が増えてきました。

8 月には WordBench 大阪にてセッションを行いました。今回は JAWS FESTA Kansai にて勉強会を開催しました。これまで参加したいとは思いつつ、タイミングが合わず実現していなかったのですが、ここ最近はそれが一気に来ました。

実は、10 月にはInnovation EGG、そして11月にはKOFへの参加を予定しています。

関西の中で、それぞれのコミュニティが分断しているのではなく、一緒に何かやりたいというのは以前から頭にはあったのですが、色々な人の出会いのおかげで、それが少しづつ形になってきています。今後もこういったコラボレーションを行っていきたいですね。

  • コメント (Close): 0
  • トラックバック (Close): 0

Home > アーカイブ > 2013-10

検索
フィード
メタ情報

Return to page top