Home › Category Archives › 開発

オーッス!オーッス!!

というわけで、ちょっと投コンのTwitter連携でNet::Twitter::Liteモジュール脱却を目指すときに苦心した点の備忘メモなどを。

TwitterはOAuthという仕組みを用いてアプリケーション連携を認証します。OAuth自体については特に語りません。それ関係の記事なんてネット上にそれこそ腐るほどありますからね。
で、投コンは以前からTwitter連携は可能でしたが、それには上記の専用モジュールが必要でした。必然、モジュールがインストールされていないサーバーでは利用できない機能となります。そしてこんなマイナーモジュール入れてるレンタルサーバーなんて早々ないでしょう。
んが、今回ver3にアップデートするに当たり、データベース対応との二本柱にすべく、Twitter連携をこのマイナーモジュールへの依存を断ち切ることにしました。それに当たり、OAuth認証という奴を自前で行う必要が出てきました。

OAuth認証で大事なのは以下の点です。
・HTTPヘッダーの一つであるAuthorizationヘッダーに必要なパラメータを記載する(callback、consumer_key、nonce、timestamp、token、signature、signature_method、verifier、version)
・HTTPの送信メソッド(GET、POST)とアクセスしたいAPIのURLをURLエンコードしたもの、上記のsignatureを除いたパラメータをパラメータ名を照準にparam=value&…の形で連結しURLエンコードしたものを&で結び、signature_methodで指定した方法で暗号化(鍵はCONSUMER KEYとNULL、REQUEST TOKEN SECRET、ACCESS TOKEN SECRETのいずれかを&で連結したもの)し、さらにURLエンコードして、signatureを作る(updateなど、Authorizationヘッダー以外にも送信情報がある場合は、それもパラメータに連結する)
 分かりにくいので例を記載:POS&https%3A%2F%2Ftwitter%2Ecom%2Foauth%2Frequest_token&oauth_callback%3Dxxxx%26…→暗号化→URLエンコード
 これでも分かりにくいとは思いますが、これは実際にやってみないと分からないもんです。やれば大体わかります。
 あと、最大限注意すべき点として、空白のURLエンコードは+ではなく%20です。これで二日ぐらいはまってました。
・処理の流れとしては、REQUEST TOKENの取得→verifierの取得→ACCESS TOKENの取得→API利用で、ユーザーにやってもらわなければいけないのはverifierの取得のみ(Callback URLさえ指定していれば認証ボタン一つでOK)
あと、最初ドはまりした点なのですが、どうにもTwitterは設定次第でHTTPSアクセスしか受け付けなくなるらしく、その場合通常のHTTPアクセスのつもりでデータを受け取ろうとすると失敗するようです。
なので投コンでは最初からHTTPSアクセス行うようにしているのですが(こっちのが安全ですしね)、これにもモジュールが必要な模様。Net::SSLeyというものです。
調べてみるとperlのコアモジュールではないようですが、Net::Twitter::Liteに比べれば圧倒的に依存モジュールが少ないです。なので、これを利用することにしました(ver3配布予定のファイルの中にこれは含まれているので、モジュールがインストールされていないサーバーでも使えるはずです)。
まあ、以前一言コメントでも呟きましたが、この認証に外せないDigest::SHA1というモジュールすらコアモジュールではないですからね。多少の追加ファイルは仕方がないところ。SHA1暗号化を自前とかないわー。

まー色々ありましたが、現在は何とか稼働してるようです。こんなものが自前で大丈夫かしらとは思いましたが、確認用も兼ねて作った時報ボットは極めて正常に稼働しているようです。多分問題ないでしょう。
あとはMySQLのバグをつぶして、通常の運用に耐えうるだけの確認が取れたら、投稿コンテンツクリエイターver3.0.0をリリースしたいと思います。多分3月頭ぐらいですかね。
大体そんな感じ。

それはそうと、SSの方が完全に筆止まってるんですよね。頭がパーン開発者行っちゃってるから仕方がない。
とはいえ、これ以上ダラダラしててもしょうがないのも事実。なので、そろそろ書き始めたいと思います。GMDの方を。
いやね、オリジナルの方も進めたいとは思ってるんですがね。あっちの方は、いかんせん話の作り方が難しいせいで、モチベーショnが上がりにくいんですよ。もっと単純なバトル物とかにすりゃよかったかもしんね。
というわけで、オリジナルとGMD交互にとか言ってましたが、早速GMDに逃げたいと思います。頭空っぽの方が夢詰め込める。
GMDには何も詰まっていないという証明。所詮は二次創作だもの、ショウガナイネ。

日記なんだか開発なんだかサーバー管理なんだか。全ての要素を包含してるな。ショウガナイネ。

次はー=INT(RAND()*3)=2だったので、燃さん。よろしゅうに。

ねんがんの データベースたいおうを したぞ !

以前やろうとして、検索ロジックのところで断念したMySQL対応ですが、今回ようやく一通りの対応することが出来ました。
一応データ移行とかも、MySQLモードに切り替えるときに自動で行ってくれるようになってます。なので、DL版にマージした際のデータ移行とかは、特に気にしなくても大丈夫です。
まあ、絶対バグがちらほらあるから、まだDL版へのマージは出来ないんですけどね。
とりあえず、これがバグ潰し完了して、リリースできるものになりましたら、投稿コンテンツクリエイターver3.0.0をリリースしたいと思います。
ver3シリーズになったら、ver1シリーズFIX版を削除して、現在のバージョンのものをver2シリーズFIX版としてリリースします。
まあ、ver1なんて残してても誰も使わないですよね。バグとか多いし。ver2もバグ残ってますけどね。

そういえば、この日記もデータ保存場所がMySQLなんですよね。投コンが何となくWordPressに近づいた感じがする。
となると、ver4シリーズにアップするときは、プラグインの実装とか、自動アップデートとかしこむことになるんでしょうか。けど投コンはWordPressと違って不特定多数が投稿するシステムだからなぁ。更新とか難しいところ。
まだver3にもなってないわけだし、気長に考えていきましょうか。

とりあえずのMySQL対応も終わったことだし、そろそろ執筆も進めなきゃなぁ。オリジナル二話書き出しだけして全然進めてないっていう。
慌てない慌てない。一休み一休み。

これで正式にうふふんに日記を回せるぜ!

投コンの機能拡張

編集画面の話ですが、久々に機能を追加してみました。
今回追加したのは、編集画面においてページの先頭・末尾へのジャンプボタンの追加、および編集履歴機能です。
特に編集履歴に関しては、作品数が多くなって編集選択リストがカオスになったとき、最近編集した作品を選択して編集できるので、ヘビーユーザー(某藁い袋の人)にとっては重宝する機能となるかもしれません。

執筆はしないけど開発はするっていう。まあ、俺は職業開発者ですしおすし。