今度は「メールサーバから画像添付メールを取って来て、データをDBに登録して、画像は別に保存。クライアントからDBにアクセスして画像を取得、この前のJava3Dサンプルで表示する」まで(ま、やる前からいろいろハマりそうな予感はしたけどね(笑)。
まずは、Rubyで「とってきたメールから添付画像を取り出す」。え〜とMIMEとかBase64ってどんなんだっけ…(そっからかっ!>オレ)と、ちょっと勉強。あ〜そんなんだった、そんなんだった… で、(それで勉強おわりかっ!>オレ)Ruby用のライブラリを探す。TMail。で、「メールで送った画像をサーバに保存させる(そのまんまじゃないかっ)」を参考に。ちょこっと。
で、次は「サーバから画像(のURL)をとってくる」。クライアント-サーバ間通信をどうしようか、と。ふつうにhttp getでもよさそうなもんだけど、将来的に主要なロジックをサーバー側にもっていくかも、と漠然と思うので(今のシステムイメージでは複数のヒトが複数の(もしかすると連携した)クライアントとインタラクションするかもしれないので、クライアント側に状態をあんまり持たない方がよくなるかもしれない…)、そうするとRPC的な方がいいのかな、と(今のところクライアント側はJavaだし)。
で、XML-RPCとかSOAPってどんなんだっけ…(またそっからかっ!>オレ)と、ちょっと勉強。やっぱSOAPかな(あっさり)。ただ、最終的に世の中のWebサービスと連携させようとか(もしも)したりすると、Google APIはSOAP、Blogger API はXML-RPC、amazon WSはSOAP/XML-RPC とどっちもどっちなので、実験はどっちでもいいか、と(Google Developer's Kit とか使う分にはプロトコル意識する必要もなくて便利だけど。Java or .NET のみだけど)。でも Google API って特に進化はしてないのかな?そろそろイメージ検索も対応してたりして♪とか、期待してたんだけど。それができた方がJM的には面白そうなんだけどなぁ。Google Deskbar API には興味ナシ。
なのでRubyのSOAPライブラリを探す。SOAP4R。(!)SOAP4RってRuby1.8からは標準で入ってるのか?そもそも1.8を使っておくべきか?う〜んしかし、サーバ側って普通はどっちをサポートしてるんだろう?で、ココ(lolipop)とかココ(spersever)を見てみる。…う〜ん、バラバラってコトね(苦笑)。ていうか、標準で入ってないならサーバ側では使えないかも知れないじゃないか、と気づいて、1.8にバージョンアップする。で、次はWSDL。え〜とWSDLってどんなん…(略)…ちょっと勉強。しかしSOAPはココがちょっとねぇ…。WSDLって難解じゃないけど、ぱっと見ですごく面倒くさそうで、ちょっとしたコト試すにはう〜ん…って感じだ。WebSphere とか使いなさいってコトだろうけど…。ま、でもPC部門も分離しちゃったIBMにしてみれば当然で、この developer works といい、eclipse といい、ソフト開発の「ecosystem作り」みたいなのに長けてるなぁ。お金取るところと取らないところっていうか…。
それはそうと、今度は「もっともっとSOAP4Rで遊ぼう 」 を参考に、SOAP4RにはWSDLからスケルトンを生成してくれるwsdl2rubyっていう便利なツールあるので、それで適当なWSDLから… ないっ! あ〜 Ruby1.8 に入ってるのは SOAP4R だけ?(ウソ?) そうかぁ、サービス利用するだけならいらないもんなぁ。と、いうことで気を取りなおして、SOAP4Rをダウンロード。wsdl3ruby でスケルトンを作成。で、無事通信(ほっ)。
で、クライアントを今度はJavaで。え〜と Apache Axis ってどんなん(しつこいっ)…と、(!)そういえばっ。レンタルサーバでSOAPサーバなんか起動させてもらえるんだっけ?「CGI可」としか書いてないけど…。あ〜無理かも。で、もう1回レンタルサーバのページで確認…
「TELNETは最大のセキュリティホールです。大多数のユーザーにご満足いただくためにTELNETの開放はしていません。」
そうだよなぁ。ってことはftpでファイル置くだけ? レンタルサーバってそうなんだぁ。プライベートでホームページ作ったりする趣味はないから(今してるけど…(苦笑))、知らなかったぁ。自由にいじりたかったら専用サーバっての(高いわっ!)がいるんだぁ〜。(こういうの常識なの?)
で、また気をとりなおして、やっぱりとりあえず http get にしておこう。 そして次は「添付画像のデータをDBに登録して、読み出す」。で、え〜とSQLってど…(略)…@IT「mysqlコマンドでデータベース操作」 を参考にテスト用DBを作成。さらに同じく「Rubyで作るデータベースCGI」を参考に、MySQL-Rubyをインストール。SQLコマンドはそのうち調べるとして適当な感じで、メールSubjectと画像URL etc. を保存して取り出してみる。
いやぁ〜、長かった。ほとんどコードは書いてないけど。とりあえずこれを全部つなぎ合わせると、
「メールサーバから画像添付メールを取って来て、データをMySQLに登録して、画像は別に保存。クライアントからHTTP GETで、DBから画像URLを取得、Java3Dで表示」(ただしローカル環境)
完。(ふぅ)
(スクリーンショット的にはおんなじか(笑))
-
ときどき「プログラムとかも作るんでしょ?」「どうやるんですか?」「すごいバリバリなんでしょ?」とか聞かれたりするので(「ぁ。ぜんぜんバリバリじゃなくて、プログラムっつっても8割がたGoogleで検索してるだけなんだけど…」とか答えてるんだけど)、どんな感じかを書いてみた(どこ参考にしたかを自分用のメモもかねて)。こうして見るとやっぱり、実際、サーチしてつまみ食いしてるだけなんだよなぁ。
梅田さんBlogの「インターネットの普及がもたらした学習の高速道路と大渋滞」が言い当ててるけど、こんだけ容易に情報にアクセスできて、またいろんなソフトウェア部品が手に入ると、ホントに高速道路だ。その気になれば誰でもココまで一気に来ちゃうよね。ホントに(ソフトウェア)エンジニアの相対価値の低下を感じる。日本だと、組み込み系とかハードに絡んだ「残されたSanctuary」みたいなのもありえるのかも知れないけど、ハード依存部を isolate したいのはソフト屋さんの心情だし、その isolation やる部分だけが希少性を持つのかなぁ。
でも、ソフトウェア開発のボリュームゾーンの価値が低下すると、やっぱり edge の部分にエンジニアリング的な価値が残るんだと思う(「メタな知識」ってヤツを除くと)。漠然とした例えだけど、下側の edge はハードとの境目。 で、上側の edge は … プロダクトデザイン、でしょ?♪
London の Royal College of Art, Design Product 学科で 1年間勉強させてもらうことになりました。そこで、Blogでレポートしてみます。多分内容は、プロダクトデザインとかソフトとかロンドン生活とか、あと、自分のプロジェクトとか。
投稿情報: |