Archive for the ‘ 開発したWebサービス ’ Category

IDEA*PADが落ちていました…

Pocket

2017年10月30日の夜ごろからIDEA*PADが落ちていました。サーバー容量が逼迫していたことが原因で、こちらの不注意でした…ご迷惑をおかけして大変申し訳ありません。

なお、現在はバックアップデータからデータを復元し、不要なデータを削除することで復旧しておりますのでご確認ください。

» IDEA*PAD ~ あんまり大事じゃないデータのためのシンプルなメモ共有ツール ~

なお、今後についてですが、本業に専念するため、以下のサービスについて運営体制の見直しをしていく予定です。

大事なデータはご自身でもバックアップをとっておいていただけますようお願い申し上げます。

ツイッターユーザーのためのシンプルなメモ帳『weemo*』を作ったよ!

Pocket

さてプログラミングのリハビリでIDEA*PADをツイッター対応させたサービスを作ってみました。まだ荒削りですが、一応動いているようなので見切り発車的に公開してみます(リリースしてからが本当の仕事だ、というポール・グレアムの言葉は偉大ですね!)。

名前は「weemo*(ウィーモ!)」です。今までの****padシリーズではないですが、語感がかわいいのでこれに決めちゃいました!(決まるまでの経緯は後述)

使い方は簡単で、ツイッターで認証したあとにメモを作って共有するだけです。共有する際には参加者のツイッターIDを追加した後に、URLを共有してください。

↑ こんな感じに編集していきます。シンプルにテキストだけね。

↑ 右側メニュー。こちらもきわめてシンプル。共有用のURL、@展開に加え、最新版を誰がいつ編集したか、共有している人がいつアクセスしたかがわかります。

↑ ホーム画面ではメモの一覧を見ることができます。

↑ ちなみに共有された人がアクセスするとこういう画面が出ます。

なお、基本的に性善説に基づいた設計になっており、参加者は誰もが追加・削除できるという鬼仕様ですw。迷ったのですが、そちらの方が便利かな、と思いますので仲良く使ってみてくださいね。

というわけでご利用は以下からどうぞ!

» weemo* – ツイッターユーザーのためのシンプルなメモ帳

■ weemoができるまで(裏話&謝辞)

ここからは裏話。

weemo開発のきっかけは昨年末。なんとなく「ツイッター認証のサービス作りたいなぁ」と思い始めOAuthを勉強しつつ、ツイッターの認証レベルざっくりすぎだなぁ、と思ったりしながら、まぁ、IDEA*PADのツイッター版でもつくるか、ということで着手しました。

ちなみにそうなると先発のMeityと思いっきりかぶるなぁ、と苦笑しつつ、でも作者も知っているし、なんとか許してもらおうとざっくりと組み始めます。コードはIDEA*PADからほぼ流用し、さくらのVPSを借りて放置していたものをひっぱりだして、github.comにコードを出し入れしながら開発開始です。

ただこのときにドメイン名がまったく決まっていませんでした。「やはりここは…pad.jpかなぁ」と思いつついろいろなドメインを試したのですが、なんともしっくりこない。しかもサービスの特性上、URLが短い方がいいに決まっている(ツイッターで共有されることを考えると)。

そこで「いやー、まいったよね−」なんてことをチャット友達のstarmix(スタミ)に打ち明けると「ちょっと考えて差し上げよう、うん」ということで数日後「weemoってどう?we+memoでweemo。wをひっくり返すとmになるのもポイント高いよね!」とかデザイナーっぽいことをいうので、その場でドメイン取得。

そこからは「ドメイン決めたのは君だからやはりロゴは君が作るべきだろう」「ついでにFaviconも作ってよ」「デザイナーだからこのページの色合いについてフィードバックをくれたまえ」とリクエストを投げまくりでなんとか完成に至ることができました。ありがとうございます。

ちなみに感謝を込めて彼女のブログなんかも紹介しておきまする。お見知りおきを。

» スタミフィルタァ

しかし今回はじめてデザイナーさんと一緒に何かを作りましたが、ゆるやかなプレッシャーがかかっていいですね。「もう出来たのですか?」「いつ出来るのですか?」「リリースはまだですか?」とオンラインになるたびに聞かれるので「オンライン状態を隠す」というスキルが高まりました。本当にありがとうございます。

それからMeity作者のF.Ko-jiにも一応許可をもらいました。Meityの方がなにかと高機能なのでweemo*がいまいち・・・という方は是非そちらをご利用ください。

» Meity.jp (メイティ) – TwitterのIDやリストで公開先を指定するメッセージ作成サービス

最後になりますが、クローズドベータ版をテストしてくれた皆様、ありがとうございました。

というわけでもしかしたらバグなんかが潜んでいるかもしれませんが、ご興味がある方はいじってみてくださいな。しばらくしたら技術的な背景やらなんやらもまとめてみたいと思います。

» weemo* – ツイッターユーザーのためのシンプルなメモ帳

【業務連絡】 IDEA*PAD、トップページリニューアル&サーバー移行

Pocket

さてちと業務連絡ですよ。シンプルなメモツール『IDEA*PAD』のトップページをわかりやすくリニューアル&サーバー移行しました。

↑ 今まで何のツールかわからんかったのでリニューアル。すっきり。

パスワードとURLだけで共有できるので会員登録不要です。みんなでよってたかって編集できるので呑み会やイベントの計画なんかに使われているようですね。編集履歴が全部残るし、ケータイからも見れるのでわりと便利じゃないですかね。

というわけでご利用はこちらからどうぞ。

» IDEA*PAD ~ あんまり大事じゃないデータのためのシンプルなメモ共有ツール ~

ちなみにリニューアルしてくれたのはthink-Lさんです。良い仕事します。フリーなので小回りも利きますな。モバイルサイトも得意なんでそっち系のお仕事あればお気軽に問い合わせてみてくださいな。

» think-L | PC・モバイルサイトのコーディング承ります

ACTION*PADの一般公開&無料化のお知らせ・・・

Pocket

apad

さて長らくベータテスト中だったACTION*PADについてお知らせですよ・・・。

結論からいうと、「課金サービス化を断念」ということになりました・・・。利用状況を見ていたのですが、あまり使われていない&(これが一番大事なのですが)自分で使わなくなってしまった・・・、という理由からこういう結論に至りました。

WISH2009で賞をいただいたこともあり、そのまま突っ走りたかったのですが、変に無理するよりも新しいサービスを作るほうに気持ちを切り替えていきたいと思います。もちろん懲りずに課金サービスにも挑戦していきます。

応援していただいた皆様、ありがとうございました!&力が及ばず申し訳ありません・・・。

ACTION*PADは一般公開してしばらく様子を見つつ、今後どうするかを決めたいと思います。どなたでも無料で自由に使えますのでご興味のある方はどうぞ。

» 会議で使える超シンプルな約束管理システム – ACTION*PAD

さて、気持ちの整理がついたので次に行きますかね・・・まずはCheck*padのもろもろを・・・。

【課金サービス開発日誌】 1回の取引では1,000円以上をめざしましょう

Pocket

card

さて引き続き課金サービスを研究しておりますよ。今回はコラム的に豆知識を。

個人的に知らなかったのですが、課金サービスでクレジットカードを使いたい場合に覚えておきたいのは次の点。

それは、1回の取引で1,000円以上ないと審査が格段に厳しくなる、ということです。

理由はこれ以下だとクレジットカード会社の方で採算がとれなくなるということらしいです(すごくざっくり言うとね)。

これは厳密に1000円が閾(しきい)値らしく、980円であってもがくんと審査が難しくなるらしいですよ。

なお、これは月額料金が1000円以上、ということではなくて、1回の決済での金額なので「月々300円だけど支払いは4ヶ月単位なので1200円ずつ払ってね」だったらOKです。

ただ、こうすると月額継続課金と違って定期的にユーザーに決済処理をさせることになるのでいろいろと処理が煩雑になります。

よくソーシャルアプリなんかで最初にざくっとポイントを購入させるのもこの理由ですね。たとえアイテムが100円であっても、100円ずつでの決済は難しいので、架空の通貨であるポイントで購入させているという仕組みです(なお、ポイント制にするとそれはそれでちょっとした問題があるのですが・・・これはまた後日)。

こうしたポイントを頭にいれつつ、どういう価格設定にするのか考えたほうが良いですね。

決済をどのタイミングで行うのがユーザーにとっていいのか、決済にかかわる業務の煩雑さをどこまで我慢できるのか、などとあわせて検討してみてください。

ご参考までに。

【課金サービス開発日誌】 決済システムへの接続テストをやってみる

Pocket

test_top

さて前回の続き。今回はいよいよ決済システムに実際につないでみますよ。

なお、イプシロンさんのシステムを使うと、ユーザーから見た決済の手順は以下のようになります。

ep0

↑ こんな感じね。

カード番号やらを入力する画面はいったんイプシロンさんに飛んで戻ってくる、というフローです。こちら側でカード番号とかを持たないので安心ですよね。

では、決済システムへ接続するプログラム(上図のpay.phpとfinish.php)を作り、実際に接続してみましょう。

具体的な手順は以下のとおりです。なお、今回は全体像をざっくりつかみ、とりあえず接続してみるということでエラー処理とかははしょりまくっています。

  • イプシロンの管理画面で各種設定。
  • pay.phpを作りこむ。
  • finish.phpを作りこむ。
  • テスト環境に接続し、カード番号とかを入力してみる。
  • データがきちんと入っているか管理画面からデータ確認。

ちょっと長くなりますが、順番にいきますよー。

■ まずは各種設定

まずはイプシロンの管理画面から各種設定を行っておきます。

ep1

↑ テスト環境を使うのでこちらから。

ep2

↑ こんな画面になるのでがしがし入力します。

ま、特に迷うところはないですよね。ファイル名は自分がわかりやすいように適宜変えてください。

■ pay.phpを作りこむ

次に支払い画面(pay.php)を作りこんでいきます。なお、イプシロンさんでもサンプルプログラムを用意してくれているのですが・・・PerlなんでPHPで似たようなものを作ってみます。 → PHPのサンプルプログラムが追加されたようです。

面倒なんでソース全貼り付けの術!どんな処理をしているかはコメントを読んでくださいな。

<?php
// イプシロンテスト環境への接続用プログラム(注文画面)
// created by Gen Taguchi on 2009/11/04
// 
// POSTだったら以下を処理
if ($_SERVER['REQUEST_METHOD']=="POST") {
  // 通信にPEARを使います。「pear install HTTP_Request」などでインストールしておいてください。
  require_once "HTTP/Request.php";
  // 通信データを組み立てていきます。
  // テスト環境接続用のURLはイプシロンさんからもらってください。
  $req =& new HTTP_Request("http://............");
  $req->setMethod(HTTP_REQUEST_METHOD_POST);
  // イプシロンさんからもらう契約コード。XXXXXは適当に置き換えてください。
  $req->addPostData("contract_code", "XXXXX");
  // 結果をXMLでもらいます。
  $req->addPostData("xml", 1);
  // 以下はFormから。
  $req->addPostData("user_id", $_POST['user_id']);
  $req->addPostData("user_name", $_POST['user_name']);
  $req->addPostData("user_mail_add", $_POST['user_mail_add']);
  $req->addPostData("item_code", $_POST['item_code']);
  $req->addPostData("item_name", $_POST['item_name']);
  $req->addPostData("order_number", $_POST['order_number']);
  $req->addPostData("st_code", $_POST['st_code']);
  $req->addPostData("mission_code", $_POST['mission_code']);
  $req->addPostData("item_price", $_POST['item_price']);
  $req->addPostData("process_code", $_POST['process_code']);
  $req->addPostData("memo1", $_POST['memo1']);
  $req->addPostData("memo2", $_POST['memo2']);
  // 接続して結果を取得します。結果はXMLで返ってきます。
  if (!PEAR::isError($req->sendRequest())) {
    $xml = $req->getResponseBody();
  }
  // 結果を取り出すための正規表現パターン。
  $p_result = '!<result result="(0|1)" \/>!i';
  $p_redirect = '!<result redirect="([^"]*)" \/>!i';
  $p_error_code = '!<result err_code="([0-9]+)" \/>!i';
  $p_error_detail = '!<result err_detail="([^"]*)" \/>!i';
  // 処理結果を取り出します。
  $result = preg_match($p_result, $xml, $m1) ? $m1[1] : NULL;
  // 処理がOKだったらリダイレクト、NGだったらエラー表示。
  if ($result==1) {
    $redirect = preg_match($p_redirect, $xml, $m2) ? urldecode($m2[1]) : NULL;
    header("Location: $redirect");
  } else {
    $error_code = preg_match($p_error_code, $xml, $m3) ? $m3[1] : NULL;
    $error_detail = preg_match($p_error_detail, $xml, $m4) ? mb_convert_encoding(urldecode($m4[1]), "UTF-8", "sjis") : NULL;
    echo "ErrCode: $error_code, ErrMsg: $error_detail "; exit;
  }
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="jp">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>【イプシロン接続テスト】 注文画面</title>
</head>
<body>
<h1>ご注文はこちらから</h1>
<p>商品名:ACTOIN*PADベーシックプラン</p>
<p>価格:1円</p>
<form action="<?= $_SERVER['PHP_SCRIPT']; ?>" method="post">
<!-- 以下はサンプルデータです。本番では動的に生成してください。 -->
<!-- ユーザーのID。初回課金で重複するとエラーなのでランダム値にしています。 -->
<input type="hidden" name="user_id" value="ap-<?= sprintf("%03d", rand(1,999)); ?>" />
<!-- ユーザーの名前 -->
<input type="hidden" name="user_name" value="Gen Taguchi" />
<!-- ユーザーのメアド -->
<input type="hidden" name="user_mail_add" value="taguchi@gmail.com" />
<!-- 商品のID -->
<input type="hidden" name="item_code" value="AP-01" />
<!-- 商品の名前 -->
<input type="hidden" name="item_name" value="actionpad_basic_plan" />
<!-- 商品ID(重複するとエラー)。テスト用にランダムな数値を算出しています。 -->
<input type="hidden" name="order_number" value="<?= rand(1,10000); ?>" />
<!-- 決済区分。クレジットカードはこれで。 -->
<input type="hidden" name="st_code" value="10000-0000-00000" />
<!-- 課金区分。「1」は1回課金です。 -->
<input type="hidden" name="mission_code" value="1" />
<!-- 価格。1円で。 -->
<input type="hidden" name="item_price" value="1" />
<!-- 処理区分。「1」は初回課金です。 -->
<input type="hidden" name="process_code" value="1" />
<!-- 任意のメモをつけることもできます。 -->
<input type="hidden" name="memo1" value="" />
<input type="hidden" name="memo2" value="" />
<input type="submit" value="カード決済画面へ" />
</form>
</body>
</html>

処理があまいところも多々ありますが、とりあえず動くので細かいところはご勘弁。

■ finish.phpを作りこむ

次に決済が完了したあとの画面を作ります。

こちらもざっくりソースをば。

<?php
// イプシロンテスト環境への接続用プログラム(決済完了画面)
// created by Gen Taguchi on 2009/11/04
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="jp">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>【イプシロン接続テスト】 決済完了画面</title>
</head>
<body>
<h1>ありがとうございました!</h1>
<p>処理コード:<?= $_GET['trans_code']; ?></p>
<p>ユーザーID:<?= $_GET['user_id']; ?></p>
<p>注文ID:<?= $_GET['order_number']; ?></p>
</body>
</html>

GETでいろいろ飛んでくるので表示しているだけですが、適宜プログラムでユーザー名やら料金やらを表示してあげてください。処理完了のメールを飛ばすといったことも必要ですね。

■ 接続テストをしてみる!

さて、ここまで来たら接続テストをしてみます。pay.phpにアクセスしてみますよ。

or_1

↑ ここからアクセス!

or_2

↑ カード決済画面来た!ここはテストなので適当な値を入力してみます。

or_3

↑ 無事にfinish.phpが来たよ!

■ データが入っているか確認する

さて、画面上ではうまくいったようですが、ちゃんとデータが入っているか、今度はイプシロンの管理画面から確認してみましょう。

ep3

↑ こちらから・・・。

ep4

↑ 検索条件を指定して・・・。

ep5

↑ お、ちゃんと入っていますね!

以上、テスト環境に接続するまでを紹介してみました。だいぶはしょりましたが、全体像はつかんでいただけたのでは。他にもかなり複雑なことができますが、まずはシンプルな処理でテストしてみるのがいいのではないでしょうかね。

とりあえず一回動かして流れをつかめば、あとはキャンセル処理やらカード番号の変更処理やらもわかりやすくなるかと。

マニュアルは種類も多いし、処理コード表やエラーコード表を読み解かなくてはいけないので途中で心が折れそうになりますがw、がんばってチャレンジしてみてください。

【課金サービス開発日誌】 クレジットカード課金、審査OKまでの流れ

Pocket

ip_top

さてACTION*PADでなんとか課金サービスを開始するまでの日誌を再開しますよ・・・。思ったより審査もろもろに時間がかかったのでgdgdになってしまい申し訳ありません・・・。無事審査を通ったようなので今までの流れをまとめておきますね。

■ 今回の狙い

今回は「(個人や零細企業が)Webサービスでクレジットカード課金」が目的です。

他の決済手段の方がビジネス的にいいんじゃね?というご意見もあるでしょうが、ともかくシステム的&業務的にクレジットカード課金に関するノウハウを蓄積&共有したかったので、ここはつっこみなしの方向でお願いします・・・。

■ カード決済代行会社をどこにするか?

さていざクレジットカード課金をする際にはやはりカード決済代行会社を選ばなくてはいけません。一瞬PayPalなども検討しましたが、現時点では日本語システムの問題もあり、やはり国内の業者さんに頼むことにします。

で、いろいろ参考にさせてもらったのが以下のサイト。ここらへんの情報はやたらあるので個人的に参考になったのをピックアップ。

さて、これらを見ていると大量の情報がありすぎて心がくじけそうになりますが、根気よく読みといていきます。自分に必要なものだけに注目していきましょう。なお、今回は次の基準で見ていきます。

  • 儲かるかなんてわからないから初期費用、月額費用はなるべく低コストで(最優先!)
  • PCからの決済のみでOK。モバイル決済も流行ですが、Webサービス的にはいまのところいいかな、と。
  • カードだけ対応していればOK。
  • よく見ると料金に関してはWeb上に明記してあるものと、「お問い合わせください」というものの2つあります。問い合わせのやりとりはなんか時間かかりそうなので前者で。

で、結論からいうと今回はイプシロンさんにお願いすることにしました。「初期費用無料」「月額費用も格安」「Web上でのレビューも良い」の3点から選びました。

ちなみにGMOグループなので知り合いを通じて社長さんも紹介していただきました。電話でお話しただけですが、かなり好感の持てる人で、それで決めた、という経緯もあります。

ip_1

» クレジットカード決済代行イプシロン株式会社

また、彼と話していて印象に残ったのは「うちは例えると『かけそば』のようなサービスです。そばだけだったらすごく安い、オプションは追加で注文してね、というシステムです。僕自身が使わないと思っているものは全部最初からはずしてあります」という言葉。いいですよね。

また「今回の経緯をブログに書いてもいいですか?スクリーンショットとかも出していいですか?」と聞くと「どうぞ、どうぞ」とのことだったのでガンガンいきますw(正直にいきますので記事広告とかじゃないですよ)。

■ カード会社審査OKまでの流れ

さてでは実際どうしたらいいのか、ということですが、ざっくりまとめると以下のような流れです(全体像を把握してもらうためにあえて細かいところを省いていますよ)。

  1. 課金したいサービスのWebを作る(当たり前ですが)。このサイトを見ながらクレジットカード会社は審査をします。重要なのは次の3点。これらを整備しておきましょう。
    • サービスの内容は何か?
    • 料金はいくらか?
    • 「特定商取引法に基づく表記」
  2. イプシロンのサイトから申し込み。いろいろ入力しないといけませんが、特に迷うところはないかと。
  3. 申し込み完了と同時に会員ページへのID&パスワードがもらえます。ログインしてざっと内容を見ておきましょう。
  4. ip_2

    ↑ 会員ページはこんな感じ。

  5. ここからイプシロン側では一次審査が始まります。一次審査はクレジットカード会社に審査してもらう前にイプシロン側でやってくれる事前チェックです。カード会社の審査は一発勝負なので事前チェックをしてくれるのはありがたいです。
  6. また一次審査と同時にこちらではテスト環境を使って接続テストをします。Webサービス側でプログラムを書いて、決済情報がちゃんとイプシロン側にわたるかのチェックですね。こちらについてはちょっと細かいので別記事にします。
  7. しばらくすると一次審査の結果がきます。問題があればさっと直しましょう。ここらへんはメール&フォーム問い合わせでやります。なお、イプシロンさんの対応は迅速かつ的確でかなり好感が持てます。ただ、コストを抑えるためにネットのみでの対応になります。
  8. 一次審査がOKになったら次は二次審査ですよ。審査に落ちたら再審査はできないそうなのでドキドキです。ちょっと時間がかかるのでしばらく待ちます。
  9. しばらくすると結果が通達されます。OKだったら連絡が来ます。
  10. ip_3

    ↑ ちょっと生々しいけど審査の様子をそのままあげちゃいましょう。9月29日から始めて、10月21日までかかりましたね。

  11. 審査OKだったら申し込み書、登記簿謄本、印鑑証明書を郵送して利用開始です。
  12. ip_4

    ↑ 送った!

以上、審査OKまでの流れを紹介してみました。はしょったところもありますが、全体像をつかんでいただけたらと思います。

システムテストに関しては別記事にしますね。ぶっちゃけここからが大変ですが、どんな経験も最初が大変ですよね(昔はサーバーたてるのも大変だと思っていたなぁ)。ここらへんで経験を積んでどんどん課金サービスを作っていきたいところです。

できるだけノウハウ共有していきたいと思いますので、みんなで課金サービスつくりましょうよ・・・と思ったりする今日この頃です。

CentOS+ApacheにSSLを組み込む方法

Pocket

ssl_top

さてACTION*PADがらみでSSLに挑戦中。以下、作業ログ。SSLを自分で仕込むのは初めてなので突っ込みどころがあればコメント欄にて・・・。

■ このエントリーの目的

セキュリティ関連は細かい点が非常に大事ですが、ざっくり概要を知らないと手もつけられないので今回はなるべく簡潔に。

なお、対象は大企業ではなくて、個人や零細企業がコストを抑えて導入したい場合を想定しています。

■ 作業の全体像

作業の手順は以下のとおりです。

  1. SSLについて理解する
  2. SSLの認証局を選びます
  3. サーバ側で秘密鍵とCSR(Certificate Signing Request)ファイルを作ります
  4. CSRを認証局に渡してCRT(Certificate)ファイルをもらいます
  5. Apacheの設定&再起動
  6. テストして完了

ではそれぞれの手順について以下に詳しく。

■ SSLについて理解する

SSLって何?という人はここらへんからどうぞ。もうわかっている方は次のステップへ。

■ SSLの認証局を選びます

SSLの認証局はいろいろあって、価格や手続きもいろいろです。有名なのはベリサイン、ジオトラストでしょうか。

なお、よく選ぶ基準として、価格、期間の他に、(1)ケータイにどこまで対応すべきか?、(2)企業の実在証明までやるか?があがってきますが、ここでは「ある程度新しいケータイしか視野にいれない」「実在証明は大事だけどお金かかるから・・・」ということで安いところを選びます。以下は参考です。

» SSL証明書はプロバイダーによって何が違いますか?|ホームページに関するQ&A|ホームページ制作マッチング

というわけでジオトラストのRapidSSLをえいや!で選びます。

» SSL 証明書|ジオトラスト RapidSSL事業部

いまだとRapidSSLで1年31ドルですね。円高なのですでにいい感じですが、ここでは実験なんでさらに安いFreeSSLを選びます。安いというか無料です。ただ、30日間限定のトライアル用です。

» FreeSSL | トライアル SSL 証明書

■ サーバ側で秘密鍵とCSR(Certificate Signing Request)ファイルを作ります

認証局も決まったのでサーバー側の設定に移ります。参考にしたのは次のサイト。

最近のCentOSだとmod_sslもopensslも最初から入っているのでざっくり次のコマンドを実行しまくります。

# cd /etc/httpd/conf/ssl.key (ない場合は作る)
# openssl genrsa -des3 -out server.key 1024(パスワードは覚えておく)
# chmod 400 server.key
# openssl req -new -key server.key -out server.csr (いろいろ聞かれるので適切に入力)
# chmod 400 server.csr

なお、csrを作るときの「Common Name」はSSLにしたいドメイン名を入れます。僕の場合、「actionpad.jp」にしています。「www.actionpad.jp」と「actionpad.jp」は別物なので注意です。ちなみにactionpad.jpの場合はwww.actionpad.jpに来たアクセスは全部actionpad.jpに転送することで一つにまとめています。

これで完了です。なお、CSRを作ったときの情報はあとで必要になるのでメモっておきましょう。

■ CSRを認証局に渡してCRT(Certificate)ファイルをもらいます

ここまで来たらRapidSSLから証明書をもらえるように申請します。お申込みは以下のページの右下、「お申し込みフォームへ」から。

» FreeSSL | トライアル SSL 証明書

特に迷うところはないかと思いますが、プラン選択では「FreeeSSL」を、CSRはserver.csrの中身を(点線部分もちゃんとね)入力します。またここで「admin@(コモンネーム)」のメールアドレスが必要になりますのでちゃんとメールが届くように設定しておきましょう。僕の場合は「admin@actionpad.jp」です。

申請してちょっと待てば(1日~2日)、メールでCRTが送られてきます。

■ Apacheに秘密鍵とCRTを組み込みます

もらったCRTは/etc/httpd/conf/ssl.crt/server.crtにコピーして「chmod 400 server.crt」しておきます。

次に/etc/httpd/conf.d/ssl.confを編集して以下のように設定します。

DocumentRoot "(actionpad.jpへのPath)"
ServerNmae actionpad.jp:443
...
SSLCertificateKeyFile /etc/httpd/conf/ssl.key/server.key
...
SSLCertificateFile /etc/httpd/conf/ssl.crt/server.crt
...

あとはApacheを再起動してOKです。なお、再起動時に秘密鍵のパスワードを聞かれます。これがいやなら(ある程度の危険があることを理解しつつ)次のコマンドで秘密鍵からパスワードを削除できます。

# cd /etc/httpd/conf/ssl.key
# mv server.key server.key.original
# openssl rsa -in server.key.orginal -out server.key(パスワードを入力)

再度Apacheを再起動してみてください。もう何も聞かれないはずです。

■ テストして完了

最後に「https://」付でアクセスしてみてブラウザに鍵がついていればOKです。

ssl_ap

↑ 完了!やったね!

以上、SSLを組み込む手順を簡単に説明してみました。他にもワイルドカードとかいろいろあるのですが、全体的な手順はおわかりいただけたかと・・・。まずはこの手順に慣れてみて、さらに複雑な設定をこなしてみてください。

PayPal、Google Checkout、Amazon Paymentsについて調べたこと

Pocket

money

さて、ACTOIN*PADがらみでちょっと調べ物をしたのでシェア。海外の主要な課金サービスであるPaypal、Google Checkout、Amazon Paymentsについてです。

さすがに機能盛りだくさんなので、「日本でWebサービスの課金システムとして、継続課金ができるかどうか?」という観点からわかったことを箇条書きにしてみます。

■ PayPal

p_pay

海外のWebサービスでも広く使われているPayPalについてですね。

  • GoogleやAmazonに比べて日本語化は進んでいるが、まだまだの感あり。わからなかったことを日本語で調べるのはかなり難しいです。英語の掲示板などは充実しています。
  • 利用にあたっての初期費用、月額費用はゼロ。すべてトランザクションベース。ひとつの取引につき、手数料は3.6%+40円といったところ。
  • 導入は簡単。ビジネス用のアカウントを取得してHTMLなんかで貼り付けるだけ。メールを送って課金ページに飛んでもらうという方法もあります。
  • なおかつ、継続課金用のボタンも簡単に作れます。これが結構よく出来ていて、継続する期間やお試し無料期間を設定できたりします。
  • ただ、困るのは購入時にPayPalに入会させられること・・・。PayPalサイトで購入履歴などが見れるようになるからいいのですが・・・ちょっと微妙ですよね。
  • なお、PayPalに加入させずにクレジットカード課金のシステムを裏で使う方法もあります。Direct Payという手法ですが、APIを駆使しなくてはいけないため、ちょっと難しいです。

より詳しくは以下を見て欲しいですが、日本語のサポートがまだあまりないので、日本の顧客には敬遠されがちかも・・・と思っています。ただ、海外向けに課金サービスつくるときは便利ですね。

» ビジネスホームページ – PayPal

■ Google Checkout

p_google

個人的にも注目しているGoogle Checkoutですが、日本ではどうなんでしょ?と思っていろいろ調べてみました。

  • 基本英語です。一部日本語化されている部分があるものの導入までの説明はすべて英語を読み解く必要があります。
  • 購入者はGoogleアカウントでログインしている必要があります。サービスのログインにGoogleを使っているならいいですが、それ以外だとちょっと微妙ですね・・・。
  • 「購入ボタン」を貼り付けるのは簡単です。生成されるコードを貼り付けるだけ、といったお手軽さ。
  • APIも用意されています。これを使えば月額継続課金も可能です。
  • 初期費用、月額とも無料。手数料は1回あたり2.9%+30c程度。

Googleという安心感はあるものの、まだ実験的なサービスっぽい雰囲気が全体に漂います・・・。

» Google Checkout – Merchants

■ Amazon Payments

p_amazon

Amazonの決済システムをそのまま使える、というサービスですが・・・。

  • まず、日本で展開されていません・・・。
  • なので全部英語です。
  • 導入は簡単です。コード貼り付けるだけ。APIも用意されています。
  • 初期費用、月額費用は無料。手数料は10ドル以下なら5%+5c、それ以上だと2.9%+30cほど。
  • Amazon FPS APIというものを使えば月額継続課金もOKです。
  • 購入者はAmazonの仕組みを使うからといってAmazonポイントが使えるわけではないです。

まだ日本に来ていないので評価のしようがないですが、こなれるまでは時間がかかりそうですね・・・。

» Amazon Payments Account Management

以上ですかね。全体的に「初期費用無料」「月額無料」「コードを貼り付けるだけ」という手軽さはあるものの、複雑なことをしようとするとやはり英語のリソースにあたるしかないのがつらいところです。他のサービスならいいのですが、課金するとなるとちょっとチャレンジャーすぎるかもしれません。

なお、上記については調べたつもりですが、間違えがあったらご指摘ください。すぐに修正します。

ACTION*PADに関するもろもろ進捗報告・・・

Pocket

ap_top

さてもろもろ水面下で準備しているACITON*PADについて進捗報告をば・・・課金まわりでわりとてこずっていますが、こういう葛藤の過程も公開していきますよ・・・。

■ ユーザーテスト

クローズドのユーザーテストについては順調です。いくつかバグが見つかりましたが、致命的ではないので順次対応している最中です。テストにご参加いただいている皆様、ありがとうございます。なお、今後改良予定なのは次のような機能です。

  • リマインダー機能
  • リマインダー機能があるのですが目立たないので設定していない人にはさりげなくアラートが出るようにしたいですね。

  • プロジェクトの追加・・・
  • これはバグに近いですが・・・。プロジェクトの最大可能数を超えてプロジェクトを作成しようとするとうんともすんともいわなくなるので、そもそも追加できないようなインターフェースにします。

  • RSS?
  • 会議ツールなのでRSSは(セキュリティ的に)微妙かも・・・と思っていたのですが、書き込みがあったときはやはり知らせて欲しいですよね。更新内容は隠しつつ、「このプロジェクトが更新されました!」という機能をつけたいと思います。

  • コメント・・・?
  • それぞれのタスクにコメントがつけられるのですが、今あまり目立たないのでもうちょっと目立たせたいところです。

以上ですかね・・・他にも要望を吸い上げつつ、シンプルに仕上げたいと思います。

■ 料金プランをどうするか?

今一番悩んでいるのがこちら。現在のところ、以下のような感じで考えています。なお、すべてのプランに無料お試し期間をつけようと思います。

  • 無料プラン
  • 作れるプロジェクト数、管理できるタスクの数に制限を加えたお試しプランです。多分作れるプロジェクトは1個、タスクの数は50個とかになるかと。

  • ライトプラン
  • WISHでも宣言したとおり、月額1000円ぐらいのプランから始めます。仕事やプロジェクトの効率化を図るために個人や少人数のグループが出せる金額、を想定しています。管理できるプロジェクトは5個ぐらいかと。

    シンプルなビジネスツールとしてお手本にしている37signalsのBaseCampやBackpackが24ドル~なので、その簡易版と位置づけてこの程度としています。

  • スタンダード、プレミアムプラン
  • こちらは管理できるプロジェクト数を増やして、20個で月額3000円、30個で月額5000円、といったプランを考えています。こちらはある程度企業内で使ってもらうことを想定しています。

価格については賛否両論あるでしょうが、想定されるターゲットを考えるとこのくらいのプランが良いのでは、と考えています。

■ 想定されるターゲット

ACTION*PADのターゲットユーザーですが、以下のような方たちを考えています。

  • 外部の人と仕事をすることが多いビジネスパーソン
  • 昨今は外部の人とプロジェクトをすることが多いかと思いますが、外部の方に社内のタスク管理システムを使わせるわけにはいきませんし、逆もまたしかりです。そうしたときに会員登録不要でさっと更新できてケータイから閲覧できるACTION*PADは便利なのではないかと思います。

  • コーチの方々
  • 会議ではないのですが、ACTION*PADはコーチングのコミットメント管理システムとしても使えるはずです。コーチングは基本的に「いつまでに何をします!」という宣言がセッションのメインになりますので、コーチの方々には便利に使ってもらえるのではないかと思います。

  • ITリテラシがそれほど高くない人と仕事をするとき
  • あまりに複雑なシステムだとITリテラシーがそれほど高くない人にとっては敷居が高いですよね。ACTION*PADもすごい簡単というわけではないですが、会員登録などをする必要もないし、ちょっと更新しておいてよ、と頼むのにも便利かと思います。

  • ゆるい感じのプロジェクトを展開中の方々
  • 最近は友達や同僚と「なにかやろうぜ!」という方々も多いですよね。ただ、そうしたプロジェクトの多くはお互いに気をつかってなかなか前に進まないことも。そうしたときにACTION*PADを使えばきちんと期日付のタスクを管理できるのではないかと思います。

他にもいらっしゃるかと思いますが、いまのところ上記のような方をターゲットに考えています。

■ 課金システムをどうするか?

ACTION*PADの大きな狙いとして「課金サービスを開発するとはどういうことか、をブログで広める」というものがあります。そのためにも課金システム構築のノウハウを現在勉強中です。

基本的には「クレジットカードで月額継続課金」が一番安定的なモデルなのでそれを実現するための方法を調査中です。

現在の進捗からいうと、以下のような感じです。

  • PayPal、Google Checkout、Amazon Paymentを調査。結論からいうと日本で使うにはちょっとチャレンジャーすぎました・・・(あとで詳しく書くかも)。
  • 国内の決済代行サービス業者を調査。数多すぎ・・・しかもいろいろ複雑です。かつ、費用がウェブで公開されていないところも多いです(基本、見積もりしてもらう感じですね)。
  • なんとか良さそうなところを発見。知り合いづてに社長さんを紹介してもらっていろいろ教えてもらっている最中(← イマココ)

というわけでシステム関係についてはいったんまとまった処理が終わってから書きたいと思います。部分的な知識だけだとなにか間違えそうなのでw。

■ 今後のスケジュール

やはり課金システムのところが一番時間がかかるので(審査的に)、連休中にすべて準備して、連休後から審査開始、システムテストといった流れになる予定です。

そして最終的にOKになったら現在のベータテストを終了して、課金していきたいと思います・・・どきどき。

いろいろと突っ込みどころもあるでしょうし、スケジュールどおりにいかないこともあるかと思いますが、まずは踏み切ることが大事ですよね。暖かく見守っていただければうれしいです。またご報告しますね。