@masuidrive blog Life is open source 2013-09-15T04:00:23Z http://blog.masuidrive.jp/feed/atom/ WordPress masuidrive <![CDATA[WordPressをStaticPress+Amazon S3+Vagrantでセキュリティ万全にする方法 [前編]]]> http://blog.masuidrive.jp/?p=1227 2013-09-15T04:00:23Z 2013-09-15T02:25:01Z

 最近、大規模なWordPressのサイトの乗っ取りが発生しました。今回の原因はWordPressではなくサーバの設定に問題があったようですが、LAMPサーバの設定を正しく行うのは難しいですし、AoacheやPHP、WordPressのバージョンアップをきちんと行っていくのは、結構大変です。
 自分でサーバを運用していて、セキュリティ対策をきちんとしていると言える人は、実はあまり多くないのでは無いでしょうか?プラグインなどを複数導入している場合には、それらのプラグインのセキュリティ対策を行うのはかなり難しいといえます。

 そんな中、高セキュリティ環境でWordPressを運用する方法はないのか考えてみました。それにはサーバ上でアプリを動かさないのが一番では無いでしょうか?

 私のブログであれば、Voteなど動的な機能は使っていないので、WordPressのデータから静的なHTMLを生成して、Amazon S3にアップすれば良いのではないかと思いはじめました。それでツイートしたところ、WordPressからHTMLを生成するプラグインのStaticPress教えてもらいました

 コレを使えば、WordPressのコンテンツをそのままHTMLにする事ができ、これをアップすればサーバ上でWordPressを動かす必要がなくなり、サーバの運用がグッと楽になります。

 このStaticPressをさらにS3へアップするプラグインも別途公開されています。これを使えばWordPressの内容をそのままS3上に展開することができ、S3のWebサイトのホスティング機能を使うことで、オリジナルのドメインで公開することができます。

 私はこのブログを早速Amazon S3に移設しました。移設さえ済んでしまえば、ブログの更新の手間などは変わりません。

 本記事では、WordPressからHTMLを生成しAmazon S3にアップすることで、高いセキュリティを保ったブログ運用する方法を前後半の二回でお届けまします。

告知:
 この記事の様にWordPressをS3+Vagrantで運用する方法を紹介する勉強会を10/13に行います。ご興味のある方はぜひ足を運んで頂けるとうれしいです。【WordPress特別セミナー】StaticPress × S3 × Vagrant 勉強会 : ATND

 WordPressを開発しているAutomattic社の高野さん、StaticPressを開発している株式会社デジタルキューブの古賀さん・岡本さん、AWS社の堀内さん、Vagrantに詳しい澤登さんという冗談のように豪華なメンバーです。

WordPressを静的運用できる条件

 StaticPressを使って、S3上にブログを移設できるのは下記の条件がそろったときです。

  • ドメインのDNS設定を変更できる
  • 標準のコメントやTrackbackを使わなくて良い (FBやDISQUSを使うのは可)
  • PCとスマホで同じテーマを使う
  • User agentをみてサーバ側で動作を変えるテーマを使っていない
  • Voteなどユーザが投稿出来るプラグインを使っていない

 これら以外でもプラグインやテーマによってはHTML化できないものもあると思います。

 今回は既に運用している、WordPressをS3に移行するステップを説明します。次回ではVagrantを使い、自分のPC上でWordPressを動かすようにしてみましょう。

ステップ1: StaticPressでHTMLを生成する

 StaticPressは、いま稼働中のWordPress全体を静的なHTML変換するプラグインです。WordPressのプラグインページで公開されているので、適当な方法で導入し、Activateしてください。

 左のナビゲーションバー内の「StaticPress」を開くと「Rebuild」ボタンがありますので、これを押すと「/static」に静的なHTMLが生成されます。いまお使いのサイトで既に「/staitc」フォルダを使っている場合は、「StaticPress Options」でディレクトリ名を変更してください。

 生成が終わった後、”http://examplecom/static/” の様にして開くと、ブログが表示されると思います。

ステップ2: HTMLに対応するように調整

 静的なHTMLにすると、コメントやTrackbackなどユーザから書き込むような事はできません。そのため、コメントを有効化・無効化するを参考にしてコメント欄を閉じてください。

 コメントが必要な場合は、FacebookによるコメントDISQUSなどのプラグインを導入してください。

 このブログで使っているwp.Vicuna Ext.というテーマは、CSSの生成を動的に行っています。StaticPressでは、この部分に対応できないようです。そのため、自分でテーマのstyles.cssを変更して対応しました。

 このブログのコメントは、FacebookのComment boxを使うことにしました。特にプラグインは使わずFacebookのDevelopersサイトで生成したHTMLをテンプレートに組み込みました。

ステップ3: Amazon S3を設定する

 StaticPressで生成するHTMLはAmazon S3に保存します。Amazon S3にはWebホスティング機能があり、これを使えば自分のドメインで、index.htmlや独自のNot Foundページを設置できます。

 この機能を使うには、ドメイン名と同じ名前のバケットを作ります。このブログでは「blog.masuidrive.jp」というバケットを作っています。作るときに「Region」を聞かれますが、日本のブログの場合は「Tokyo」選んでおいてください。

 作った後にプロパティの「Static Website Hosting」を「Enable website hosting」にして、「Index Document」に「index.html」を設定します。この画面に書いていてある「Endpoint」のURLはメモしておいてください。

 S3のアップロードには、S3のバケットと、Access key/Secret keyが必要になります。

 普通にS3用のフルアクセスユーザを作成しキーを発行すると、同じアカウントの全てのS3バケットにアクセスできてしまうので、IAMで特定バケット用のユーザを作りキーを発行します。

 IAMでユーザを作るとき下記の様なポリシーにすると、特定のバケットにのみアクセスできるユーザを作れます。そしてこのユーザのAccess keyとSecret keyをメモしておいてください。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "s3:*"
      ],
      "Resource": [
        "arn:aws:s3:::バケット名/*"
      ],
      "Effect": "Allow"
    },
    {
      "Action": [
        "s3:ListAllMyBuckets",
        "s3:ListBucket",
        "s3:GetBucketLocation"
      ],
      "Resource": [
        "arn:aws:s3:::*"
      ],
      "Effect": "Allow"
    }
  ]
}

ステップ4: S3にアップロードする

 StaticPressをS3と連携させるStaticPress-S3プラグインをインストールします。画面の右下の「Download ZIP」からダウンロードして、「wp-contents/plugins」ディレクトリにコピーしてください。

 管理画面のサイドバーに「StaticPress options」の中に「S3 Options」言う項目ができるので、先ほどのAccess/Secret Keyを設定します。バケットのRegionを「Tokyo」にした時は「AWS Region」を「AP_NORTHEAST_1」に設定してください。

 上記を入力して少し待つと、バケットリストが出てくるので自分が使うバケット=ドメイン名を選択して保存します。

 これで、準備が完了しました。サイドバーの「Static Press」の中にある「Rebuild」ボタンを押すと全てのページのHTMLを生成し、S3にアップロードします。

 今後、記事を書いた後にこの「Rebuild」ボタンを押すと、最新の状態がS3にアップロードされます。

 アップロードが完了したあと、ステップ3の「Endpoint」のURLにアクセスすると、生成されたブログが表示されているはずです。表示などがおかしい場合は、ステップ2に戻ってテンプレートなどを見直してください。

ステップ5: DNSを切り替え

 先ほどのURLで確認できたら、最後にDNSを切り替えて自分のドメインをS3に向けます。

 DNSの設定を変更し、ブログのドメインを先ほどの「Endpoint」のCNAMEにしてください。設定方法の詳しくはお使いのDNSプロバイダとGoogle先生で確認してください。

 これで、ブログをS3に完全移行できました。あとはWordPressサーバにIP制限したり、BASIC認証を有効にするなどして、外部からのアクセスを塞げば乗っ取られる可能性はかなり低くなるでしょう。また、何かでアクセスが急増してもサーバが落ちることはもうありません。

次回予告

 この記事では、WordPressをサーバに設置したまま、S3へ移行しました。次回はこのWordPressをVagrantを使いローカルのPCへ持ってきます。


WordPressの教科書


基礎からのWordPress


]]>
0
masuidrive <![CDATA[新会社で一緒に働いてくれるエンジニアを探しています]]> http://blog.masuidrive.jp/?p=1060 2013-09-01T16:50:38Z 2013-08-10T04:24:45Z

 7月に設立した株式会社トレタでは、フルタイムのRuby on Railsエンジニアを募集しています。株式会社トレタの設立趣旨は、代表の中村の書いたブログを読んでいただけるとご理解いただけるかと思います。

私はそのトレタで、CTOという立場でバリバリとコードを書いています。(ミイルを運営するFrogAppsとは兼任となっています)

トレタでは、iPadを用いたB2Bのサービスを構築中です。このサービスのサーバサイドのコードを一緒に書いてくれるノリの合うメンバーを募集しています。

(Rubyの経験 && (GitHubで一つ以上のrepoを公開(Rubyで無くても可) || 技術系ブログを書いている))で、Railsを使っているけどもっとステップアップしたい!という方や、masuidriveとバリバリコード書いていこうぜ!と思ってくれる方の応募をお待ちしてます。

「風呂でも仕事をしてくれ」とは言いませんが、プログラムが好きな方と一緒に仕事をしたいと思っています。まだ小さい会社なのでノリが合うのも大事だよねって言うことで、私や中村との相性という点も大きく評価します。

コード好きということでは誰にも負けないと思っている人と働けたら幸せだなと思っています。

勤務地は渋谷で、募集人数は1-2名となります。待遇などはまだ設立直後で何も決まっていないので、直接相談させてください。

私はFrogAppsと兼任のため、週3日ほどの稼働となりますが、Railsの技術以外にも私が持っている知識は全て公開しますので、自分でサービスやビジネスを作りたいと思っている人やフルスタックを目指す人には面白い職場になると思います。

興味のある方は、Github, ブログ, Facebook, Twitter, LinkedInなどのアカウントで使用しているモノを書いて、masuidrive@toreta.in までメールを送付してください。自作のサービス、その他関わったプロジェクトなどがありましたら、合わせてメールに書いていただけると参考にさせて頂きます。

応募までは行かないけど、話を聞いてみたいというのも大歓迎ですので、そちらもmasuidrive@toreta.inに連絡をいただけると幸いです。

はじめての求人ブログでなんか上手いこと書けていませんが、気軽にご応募いただけるとうれしいです。

]]>
0
masuidrive <![CDATA[プロにwri.peのデザインの駄目出しをしてもらう]]> http://blog.masuidrive.jp/?p=1047 2013-09-01T16:11:58Z 2013-07-31T03:23:41Z

 wri.peのデザインは自分で作ったのですが、デザインのプロから見ると直すところは多々あるんじゃないかと思って、ミイルを一緒に作ったフォーユーの金田さんにデザインの駄目出しをしてもらいました。

 まず第一に指摘されたのは、ターゲットユーザをどこに定めるかという話。エンジニアなどをターゲットにするか、一般ユーザをターゲットにするか。
 wri.peは「自分用ツール」が起点なので、エンジニアなどPCやテキストに慣れている人をメインターゲットにして行こうと思っています。それであれば基本的なデザインはこの方向で良いとの事でした。

 もっと間口を広くして多くのユーザに使ってもらいたい場合は、UIをがらりと変える必要があるとの事。いまのUIはなるべくシンプルにして、エンジニアなどに深く刺さることを目的にしているので、wri.peはこのUIのままで行こうと思っています。

 ただトップページでは、アプリの紹介とかが不足しているので全面的に見直した方がいいかも。確かにビデオとかデモアカウントとかで全体を把握できる仕組みを用意した方がいいなぁ。

 あと、アプリ画面の細かい所を下記の様に指摘してもらいました。

- マウスオーバー時に色が変わらない
- 色の変え方でも個性が出る
– 光りかたでも違う
- ボタンを少し大きくする
- サイズや角丸などの見た目を合わせ統一感を出す
- DropdownやSwitchの見た目も合わせる
- markdown toolbarがマウスオーバー時に左にずれるのを直す
- メニューのくさびを少し小さくする

 どれも比較的簡単に調整できるので、まずはここから修正しつつトップページの見直しを計っていこうと思います。

]]>
0
masuidrive <![CDATA[今の技術でシンプルなガラケー再構築したら面白いかな?]]> http://blog.masuidrive.jp/?p=1023 2013-09-01T16:11:58Z 2013-07-08T15:34:34Z

 ドコモはツートップ以外売る気がないとか、Tizenヤバイとかいう話しが出ているけど、ガラケー層は一定数いるんだから、いまの技術でシンプルなガラケーを再構築して出したら面白いんじゃないかなぁ。

  • ストレートタイプ
  • 2.5インチカラー液晶
  • Bluetoothによるテザリング
  • 200万画素(1600×1200)程度のカメラ 明るさ重視
  • シンプルなUI
  • Compact HTML+Javascriptなブラウザ
  • Webサービスでも使えるPush機能
  • ワンセグ・GPS・タッチパネルは無し

 いまのCPUは速いから、レスポンスは相当良いはず。

 回線速度も今は速いから、2.5インチぐらいの画面なら、CompactHTML+Javascriptでアプリっぽいモノを作っても、そこそこ動く気がするし。

 筐体は標準のモノもあるけど、3Dデータが公開されていて外部のメーカーが自由に販売できたり、気合いのある人は3Dプリンタで自作できたりすると面白いんじゃないかな?

 いまはPC使える層も増えたから、Bluetoothか回線経由でアドレス帳や設定をブラウザから追加・変更出来る機能があるといいな。iPadから設定できたりとか。

 一番のキーはUIの再構築だと思う。2.5インチでできるUIを今一度考えてみると面白そうだなぁ

 って何となく思ってみたので、書いてみた。こういう、テーマ決めてアイディア出しの会とかやりたいな。

p.s
 docomo N-01Eが近いんじゃないかってコメントをFacebookで頂いた−。UI見てみたいなー。

]]>
2
masuidrive <![CDATA[木のキーボード Oree(オリー)の限定ストアが7/7まで銀座にオープンしてる!]]> http://blog.masuidrive.jp/?p=990 2013-09-01T16:11:58Z 2013-06-29T12:00:42Z

 いつも行くスタバで、すっかり行き詰まったMobiRubyのroadmapを考えつつTwitterを見ていると、木製キーボードOreeのポップアップストアが、9日間だけ銀座にオープンという記事を発見!

 Oreeは木でできたBluetoothキーボードで、去年ぐらいにどこかの記事で見つけて気になったんだけど、2万円近い価格と試打できない事で二の足を踏んだままになってました。

 スタバから5分程度の所で今日から限定ストアオープン!こんな偶然、ぜひ行ってみなくちゃという事でてくてく歩いて行ってみました。

 東銀座の昭和通りからちょっと入ったLEAGUEという、ちょっとおしゃれなコワーキングスペース的な所でOree popup workshopが開催されていました。

 OreeはMapleとWalnutの二種類から選べるのですが、自然の木を使っているので一台一台違う木目があり、このストアでは展示してあるキーボードから好きな木目を選んで買うことができます。

 iPadやSurfaceも置いてあり自由に触ることができるのですが、毎日使うキーボード。そしてちょっと高い。ということで自分のMBPを取り出してしばらく試し打ちをさせて貰いました。

 大きさやレイアウトはApple keyboardとほぼ同じ感じで全然違和感ありません。ただ右下のカーソルキーが斜めに押すとちょっとぐらつくのが気になりました。ただキーの端を押してもちゃんと認識するので実用上あまり問題はなさそうです。

 木でできているので、使っているうちにキートップが汚れないかも心配だったのですが、コーティングをしてあるのでほとんど汚れは付かないそうです。実際に長く使っているキーボードを見せて貰いましたが確かに全然分からない。

 ちょっと悩んだすえ買うことに決めました。買うのを決めるとまずは無刻印のキーボードから好きな木目を選びます。そして次にキーボードレイアウトとキートップのフォントを選びます。私は一番シンプルなFedoraというフォントを選びました。

 パーソナライズということで、キーボードの左上に名前などを入れることができるらしいのですが、自分の名前が前面にあるのはかっこわるいのでパス。

 この限定ストアでは、その場でキートップをプリントして貰えます。待っている人が居なければ20分ほどだそうです。

 刻印が終わるまで、銀座をぶらぶらしていても良いそうなのですが、せっかくなので自分のキーボードが刻印される姿をみてました。[刻印する様子の動画]

 そうこうしていると、ファウンダのJulienさんとデザイナのFranckさんがストアにきたので思い切って話しかけ、キーボードの裏にサインを貰えないかとお願いしてみました。

 お二人からはすぐに「イイよ!」快諾を貰ったのですがペンがない・・・ということでItoyaで油性ペンを買ってきましたw

 ペンを買って帰ってくるとちょうど刻印も終わっていたので裏に二人のサインをお願いし、記念撮影もしてきましたw

 そして、MUJI CAFEでこのキーボードを使ってこの記事を書いています。今はMBPの上にキーボードを置いているので、ちょっと変則的ですがMBPのキーボードよりストロークがあって打ちやすく感じます。

 キートップの角がちょっと堅いなと感じることがあるのですが、これはそのうちなじんでいくんじゃないかと思います。

 2万はキーボードとしてちょっと高いですが、メカっぽくなりがちな机の上に木のキーボードは、柔らかい感じになって良いんじゃないかと思います。

 この限定ストアは7/7まで開いているそうです。触る時間の長いキーボードを自分で選びたいと思っている人はぜひ足を運んでみてください。サインペンは置いてきたので、お二人がいればサインも貰えると思いますw

 詳しくはOreeのサイトで確認してください。

 銀座が遠い方はオンラインストアでも購入できます。

p.s
 専用のケース+iPadスタンドもあります。手触り良いけどちょっと重いかもw

]]>
0
masuidrive <![CDATA[個人でメモ帳アプリ wri.pe リリースしてみました。]]> http://blog.masuidrive.jp/?p=961 2013-09-01T16:11:58Z 2013-06-03T10:46:54Z

 この1年間、ミイルMobiRubyをコツコツと作っていて、個人としてWebサービス的なものを全く作っていなかったので、 気分転換 とRails4 + Ruby2.0のテストを兼ねて自分用に メモ帳サービス を作って wri.peとして公開しました。

 私が使いたいメモ帳の要件は、こんな感じでした。

  • markdownをサポート
  • gmailの様なアーカイブ機能
  • 全文検索
  • カレンダーへのマッピング
  • iPhone / iPadをサポート
  • キーボードで操作ができる

 いままで色々なメモ帳サービスを使って見たのですが、どれもしっくりきませんでした。私はメモをtodo的に使うことが多いので、終わったタスクをアーカイブしたり、文章内に書いている日付でカレンダーに表示する機能は非常に欲しい機能でした。

 「ないのなら作ってしまえ」ということでメモ帳アプリを作る事にしました。作りたいWebサービスには チャット というのもあったのですが、気分転換で作るにはちょっと 重いのでパス

 じつは前に一度stickaというメモ帳サービスを作ったのですがサーバ維持などが面倒で、DBがおかしくなったタイミングで閉じてしまいました。

 今回のサービス開発の目標の一つに「 手間を掛けずに運用 」というのがあります。特に個人の場合、運用が煩雑だと続けることが難しくなります。例えばEC2でサーバを借りた場合、サービスの監視や障害対応、それら仕組み作りを自分で行う必要があります。

 そういう自動化された運用の仕組みを作るのもチャレンジとして面白いのですが、今回は自分で使いたいメモ帳を作り、それを使うことが目的なので、お金を払ってHerokuを使うことにしました。広告などでサーバ代程度を稼ぐ事ができれば、このサイトは手間も費用もかからずに回るので、一番、望ましい形なのですが。

 とりあえず週末でチャチャっと自分で使うことのできるレベルの物を作り、ドメインを取得して公開して見たところ、StartupDatingのRickさんからwri.peを紹介したいと連絡をいただきました。それなら、もう少しマジメに作ろうと思い、記事は少し待ってもらって毎日自分で使いながら、仕事の終わったあとや土日に少しずつ改善していきました。

 公開するからにはメッセージやヘルプもちゃんとしたいなと思ったのですが私の英語力では厳しいので、友人のHectorさんにお願いして全面的に書き直してもらいました。 あとアプリのアイコンがないのも寂しいので、こっちも友人のSunnyさんにお願いを書いてもらいました。

 技術的なチャレンジとして積極的にHTML5を機能を使い、オフラインモードをサポートしています。まだオフライン時の保存はできないのですが。また、iOSのSafariではアプリ切り替えなどで不意にリロードがかかることがありますが、それでも入力内容が保持されるようになっています。

 HTML5のキャッシュをうまく使うことで、Webアプリとしてはかなり高いレスポンスを誇っています。 毎日使うサイトでは速度は重要な機能 の一つです。ここはまだ改善の余地があるので、継続的に改善していきたいと思っています。

 自分が普段使うためのツールを作るのは、自分が一番のユーザになれるので楽しいですね。モチベーションも維持しやすいし。

 あと、実装したい機能は下記のような感じで、使いながら実装していこうと思います。

  • 自動保存
  • オフライン時の保存
  • Google Calendarとの同期
  • タグ – 文中に[タグ名]で
  • メモの公開機能
  • 認証した人への限定公開
  • Fork & Pull request的な機能
  • フォーマットの切り替え
  • ファイルの添付
  • Tw/FB/ブログなどへのポスト

 特にGithubの様な ForkとPull request の機能は、ぜひ付けたいと思っています。それがうまくできれば、 Wikiに変わるもの としても使うことができるんじゃないかと思います。

 せっかくここまで作ったのだからキチンとリリースしようという事で、日英でプレスリリースを打つことにしました。始めは自分で書こうと思ったのですが、自分のサービスを客観的に書くのはむずかしく、これも友達にお願いしました。日本語は矢崎さん、英語はRickさんにお願いしました。個人でプレスを打ったことがないので、どうなるのか楽しみです。

 英語圏で多く使って欲しいと思って、Hacker Newsに書き込んだり、英語のメディアに投稿などしてみました。すでに海外からも多くアクセスを頂いたり、イタリア語でレビューが書かれていたりと、目標達成はできたかなと思っています。

 個人的なツールとして作りましたが、勢いで公開したので多くの人に使ってもらえるとうれしいです。

 Hectorさん、Sunnyさん、Rickさん、矢崎さん、TwitterやFacebook上でテストを手伝ってくれた方々の支援がありリリースまでこぎ着けることができました。この場を借りてお礼申し上げます。

 早速ですが、6/11 19:30からコワーキングスペースCo-Edoさんで、wri.peをどうやって作ったのかなどの解説イベントを行います。興味のある方はご参加頂けるとうれしいです。

イベント申し込みページ: http://coedo-dev.doorkeeper.jp/events/4137

p.s
 wri.peリリースしたので、息抜きもほどほどにして仕事とMobiRubyに戻ります。
 それとプレスに書く社名を間違ったので、FlogAppsをFrogAppsに変換して記事を読んでください orz

]]>
1
masuidrive <![CDATA[iPad miniを腰につけると捗るよ]]> http://blog.masuidrive.jp/?p=935 2013-09-01T16:11:58Z 2013-05-31T02:56:24Z

 冬の間はiPad miniがすごく捗りました。コートのポケットに入るから、どこでもすぐにminiを取り出して使えるから。これは想像以上に便利で、地下鉄に乗ってもすぐminiでコードを書いてしまうぐらいでした。

 でも暖かくなってコートを脱ぐとminiを入れるところがない・・・。春のあいだは、ポケットの大きな上着を選んできてたんですが、そろそろ暖かくなってきてTシャツだとポケットがない・・・。弾さんのようにハラに差せばいいのかもしれないけど・・・・

 ということで、またカバン探し。はじめはチョークバッグシザーバッグとかを探したのですがよさげなのが見つからず。mini用のバッグも出てるけど、できるだけシンプルが欲しいと思いパス。

 偶然通りかかった、吉田カバンのお店でちょうど良いサイズのショルダーバッグ発見。ちょっと小さくて閉まらないけど良い感じ。でも普段はバックパックを背負うのでショルダーバッグは無理。ということで、ベルトの部分を短くして腰に巻いて、ウエストバッグ風にしてみました。

 これでバッグパックを背負っていても、どこでもminiを持って歩けます。スタイラスと一緒に超便利!

 上が閉まらないのはちょっと不安だけど。

p.s
 今年は毎月1本はブログを書く目標で、今回は「身体性の拡張」について書こうとおもったけど、今月中に終わらないので小ネタで。来週にはこれについて書きます。なので身体性の拡張についたはもう少し先になるかも。

]]>
0
masuidrive <![CDATA[ネットのアカウントとリアルな人をひも付けするアプリ/デバイス]]> http://blog.masuidrive.jp/?p=889 2013-09-01T16:11:58Z 2013-04-19T04:52:54Z

 TwitterやFacebookでつながっている人と勉強会などで会うこと多いんですがネット上で親しくてもリアルな顔を知らなくて、帰宅後にタイムラインを見て会ったことのない人が同じイベントに参加している事を発見してがっかりする事があります。

 iPhoneのカメラを通してみると、みんなの頭の上にTwitterのアイコンが表示されるアプリなんかがあると良いんですが、さすがにそれは技術的にムリです。

Pokenが見た夢?

 数年前にPokenという、キーホルダーサイズのデジタル名刺的なデバイスが出ましたが、タッチしたあとにPCにつないだりするのが面倒で、いつの間にか電池が切れてそのまま持ち歩かなくなってしまいました。

 Pokenの様にタッチするのではなく、Nintendo DS/3DSのすれ違い通信のような感じで、近くで同じデバイスを持っている人を自動で認識して記録したり、友達申請を出せるようなデバイスがあればいいのにと思っていました。

 自分のIDを常に発信するデバイスがあれば実現できるのですが、電波を発信するのは電池を消費するので定期的に充電や電池の交換が必要で、実使用ではそこが大きな問題になり難しいなと考えていました。

 iPhoneでできればいいんだけど、iPhone同士を無線で見つけるAPIは公開されていないし・・・

Bluetooth Low Energy登場!

 数カ月前、どこかのブログでBluetooth Low Energy(BLE)を使えば、iPhoneに接続可能なデバイスをAppleによる複雑なハードウエア審査を通さずにリリースできることを知りました。調べてみると確かにiOS5からBLEデバイスへの接続、iOS6では双方向の接続もできるようになっています。

 iPhone連携のハードウエアで作ってみたい物もあるし、CoreBluetoothの詳しい解説が載っているというiPhoneアプリ開発エキスパートガイドを買って読んでみました。

ってこれを使えば・・・

 ひととおり読んだところで、これを使えばデジタル名刺交換デバイス作れそうだなと考えながら読み進めると、iOSだけで「すれ違い通信」的な物を実装できる事に気がつきました。

 同じようなアプリがすでにリリースされていないか調べてみると、友達がTwitterのフォローを簡単に行えるAnonyFollowというアプリをリリースしていましたw。そこで、自分でも技術検証としてすれ違いアプリを作ってみたら、あっさり動きました。

 iPhoneのBLEとサーバーも絡ませることで、Twitterのフォロワーが近くにいるかとか、近くに居る人をフォローしたりするアプリが作れそうです。このアプリはバックグラウンドで動かしてもそれほど電池を消費しないし、同じアプリをインストールしてイベントに行けば、みんなで簡単にフォローし合う事ができます。

 試作品を仲間に見せたところ、「ちゃんと作ろう」と言うことになり、いま一気に作り始めています。コア部分はできているので、あとはUI部分。ここが時間がかかるのですが・・・

デバイスも欲しいな

 ここ数カ月で、BLE対応のチップやボードが多数リリースされているので、それを使えば自分のIDを常に発信するデバイスを作る事ができそうです。たぶん自分のIDを発信するぐらいであればボタン電池で1年ぐらい持ちそうです。

 自分が誰かを発信するデバイスっていうのはなかなか面白いんじゃないかなぁ? デバイスはIDだけ交換してTwitterやFacebbokの情報はサーバで管理する事でセキュリティも確保できるし。


iPhoneアプリ開発エキスパートガイド

iOSでBluetoothを使いたいと考えているなら必読の一冊。英語の公式ドキュメントも全然ないので。

]]>
0
masuidrive <![CDATA[PukiWikiの再構築]]> http://blog.masuidrive.jp/?p=879 2013-09-01T16:11:58Z 2013-03-28T12:14:09Z  「PukiWiki の開発プロジェクトの再建案 – Sarabande.jp」を読み、プロジェクトの発起人としてちょっと書いてみることにしました。

 私もPukiWikiプロジェクトが止まっている事は前から認識をしており、どきどき他の方からも相談を受けていました。

 未だに多くのユーザもいますし、強力な代替がないのでPukiWikiの再出発を願う人も多くいるとおもいます。しかし、私ももう8年ぐらいPHPでコードも書いていなく、私自身はPukiWikiに手を入れるモチベーションが出てきませんでした。

 このPukiWikiの問題は二つの側面があります。

 PukiWikiというアプリの停滞と、PukiWikiプロジェクトの崩壊です。

 前者は最近のPHPでは動かないという現実的で致命的な問題があります。またスパムに耐性がなくロボットに広告などの書き込みを許してしまうという運用上の問題もあります。いまPukiWikiを改善するのであればこの二点からになると思います。

 しかしそれ以上に問題なのは、プロジェクトの崩壊です。先の技術的な問題は数人の手があれば、比較的短時間で修正できるとおもいます。しかし、それを継続的に行っていくにはプロジェクトとしての体制が必要不可欠です。地区にいま必要なのはプロジェクトを引っ張っていくリーダーです。

 PukiWikiはユーザや開発者もまだたくさんいます。声を上げて具体的に動けば手を貸してくれる人は出てくると思います。Kagayaさんがプロジェクトの体制からPukiWikiをリブートしてくれるのを楽しみにしています。

P.S
 技術的な面でいうと、書式の互換性だけ確保して、プラグインやスキンの互換性を捨てて、スクラッチから書き換えるのが私のオススメです。

]]>
0
masuidrive <![CDATA[MobiRubyが生き延びる為には]]> http://blog.masuidrive.jp/?p=845 2013-09-01T16:11:58Z 2013-03-25T01:39:28Z

 昨年の3月から開発を始めたMobiRubyは、まだ開発途中で多くの方々に使って頂ける状態ではないにも関わらず、福岡Ruby大賞のポストPC賞と、日本OSS奨励賞を頂くことが出来ました。多くの方が応援してくださった事で、受賞できたのだと思います。ありがとうございます!

 当初の予定より時間は掛かっていますが開発は順調に進んでおり、ObjCとCocoaを使えれば何とかiOSのアプリを書けるようになりました。開発をこのまま進め、ObjCやCocoaの知識がなくてもRubyを使って、気軽にiOSやAndroidのアプリ構築を行えるツールにしたいと考えています。

 MobiRubyは私の趣味であり、RubyでiOS/Androidのアプリが書ければ幸せだなぁというプロジェクトですが、それと同時に海外でも多くの人に使われ、自分の名刺代わりになるプロジェクトにしようという気持ちもあります。

 しかし、世の中にオープンソースソフトは沢山ありますが、いつの間にかバージョンアップが止まってしまい使われなくなってしまうソフトが多数を占め、長い期間生き延びているソフトはごくわずかです。

 10年前、伽藍とバザール(epub/mobi版)を読み、これを実践してみたいと思い、PukiWikiプロジェクトを始めました。試行錯誤をしながらプロジェクトを進め、結果、PukiWikiは多くの開発者を集め、多くの方に使って貰うことができました。

 10年経った今、同じようにMobiRubyというオープンソースプロジェクトを、英語圏で立ち上げたいと考えています。開発中にも、MobiRubyを英語圏でも使ってもらうためにはどうすればいいのか、GitHubの登場でオープンソースが変わっていく中で、どうやって生き残って行けばいいのか、ずっと考えていました。

 そんな中、2月の福岡Ruby大賞の授賞式の会場で、GitHub社やScribd社の開発者や、Silicon Valley Ruby on Railsのファウンダーの方が来ているのを発見し、これはとても良い機会だと思い、無理を言って夜に時間を作ってもらい、彼らに英語圏でオープンソースプロジェクトを流行らせる為にはどうすればいいのかを相談することにしました。

 夜10時過ぎに、全ての訪問を終えた彼らとMatzにホテルの喫茶店で会い、やはり情報発信が大切で自分が何を考えMobiRubyを作っているのか、次に何をしたいのか等をブログ等で公開していくことが必要など、多くの助言を貰うことができました。

 その中でMatzが「MobiRubyが生き残るには、たった1人のフォロワーが重要で、2人目が出てくればその確率がさらに上がる」という事を言った時に、TEDで見た動画を思い出しました。しかしそのときはタイトルまで思い出せませんでした。

 後日、デレク・シヴァーズ の「社会運動はどうやって起こすか」だと分かり、これを見ているうちに、Matzにもう一度話を聞きたい、Rubyではどうだったのか、mrubyはどうしていくつもりなのかを聞いてみたいと思うようになりました。

 そこでTwitterとFacebookに書き込んでみた所、エンジニアTypeの伊藤さんに拾ってもらい、対談という形でもう一度話を聞けることになりました。

 イベントの前に1時間半ほど話をして、記事としてまとめて貰ったのが、「まつもとゆきひろ×増井雄一郎のオープンソース談義 「1人の熱烈なフォロワーがいれば、OSSで世界を変えられる」」です。

 正直、まだMobiRubyが生き残る為に、具体的にどうしていくのか見えていない部分が大きいです。私の英語力も不足しています。それでも、少しでも協力してくれるという方がいましたら、@masuidriveに連絡頂けるとうれしいです。

 こんな個人的な問題に付き合って頂いた、Matz、エンジニアTypeの伊藤さん、Waveの川井さんには、この場を借りてお礼申し上げます。ありがとうございました。


Code Reading
オープンソースから学ぶ
ソフトウェア開発技法


伽藍とバザール



3分の短いムービーなのでぜひ見てみてください。

]]>
0