投稿

12月, 2012の投稿を表示しています

クライアント考察 その1

イメージ
modoのユーザーインターフェイス modoでは、自由度の高いインターフェイスを作ることができます。色々な方のスクリプトやプラグインをダウンロードしてきては中身を見ているのですが、XMLを記述することで、インターフェイスを実現しているということがわかりました。はじめはテキストエディタでポチポチとフォームを作成していくのだろうか?と思っていたのですが、さすがにそんな状態ではなく、modoにはインターフェイスを WYSIWYG で作成することができる、「フォーム編集(Form Editor)」という機能が付いていました。 modoのメニューバーの[システム] - [フォーム編集]を選択することで、modoに登録されているフォームの一覧が出てくるので、ここに新たにフォームを追加していくのです。 ここまでの説明も含めて、以下のページを参考にしました。ムービーで丁寧に説明くださっているので、とても分かりやすいです。 http://www.toroman.de/modo/tutorials/creating-a-kit-precision-scale/

シンプルに作る

そうだ、Flask使おう コードは書けば書くほど間違いが混入します。アプリケーションを作るときはできるだけシンプルに作るのが望ましいです。そこで、今回はFlaskを利用してみることにしました。JSONで出力するのも非常に簡単です。 クライアントであるmodo側で受け取ったJSONをdictにパースできることも確認。明日からはいよいよクライアントのUIを作成していこうと思います。 ここまでPythonやGoogle App Engineの勉強から始めて、のんびり2か月もかけてしまっているのですが、今回のコーディングは2日もかかっていません。調査をしたり、コードの動作を確認したりする時間が大半を占めています。PythonやGoogle App Engineへの理解が進めばスピードアップもしていくと思いますが、プログラムができていかないため、気持ちは焦れていきます。もう少し要領よく作業していきたいと思います。

アプリケーションを見渡してみる

Google App Engineのこと Google App Engineをさわっています。小さいアプリケーションを作りながら機能を確認しているのですが、実に多くの機能が用意されています。Google App Engineで使われているサーバーはスピードがあまり早くありませんが、それをカバーする機能も用意されています。それを活用していくことはGoogle App Engineへの ベンダロックイン を意味します。回避するために中間レイヤーを作ることもできますが、それをするとGoogle App Engineを使う意味がなくなってしまいます。 その代わり、サーバーとクライアントの間を疎結合にします。その方法は次の節で説明します。 アウトライン クライアントとのデータのやり取りですが、JSON-RPCを採用します。ベンダロックインへの対抗策です。非常に極端な意見ですが、サーバーとクライアント間のインターフェイスだけでも残っていれば、実装は何とでもなります。実装はWebサービスを利用者に伝える最後の大切な部分ですが、Webサービスの基本的な部分がしっかりしていなければ元も子もありません。 アプリケーションの性格上の読み込みが主で、書き込みは非常に少なくなると思われます。更に、書き込みにはTask Queueを利用してレスポンス向上を図ろうと考えています。書き込みが少ないということは、情報はあまり変化しないということなので、読み込みの際にはキャッシュを有効に活用したいと思います。Google App EngineにはMemcacheが用意されているので、うまく使おうと思います。 まだ仕様面でいくつかの問題を抱えていますが、その時が来たら考えることにします。当面はサーバーとクライアントのやり取り部分を作っていきます。

modoのこと

About modo modo (モド)は3Dグラフィクスソフトです。Luxology(ルクソロジー)という会社が作っています。 modoはPerl/Python/Luaを利用して機能を拡張できる仕組みを持っています。スクリプトは自分で記述することもできますし、ネットで公開されているものを使うこともできます。 何か作ってみよう 自分はプログラムの経験が少しありますから、このソフト向けに何か作ってみようと思い立ちました。とはいえ、デザインについてはあまり明るくないので、デザインをサポートするようなものはなかなか思いつきません。そこで考えたのは、スクリプトを配布するサービスです。先ほどネットで公開されているものを使えると書きましたが、実際に使い始めるには、まずスクリプトをダウンロードし、それを所定のフォルダに保存しなければなりません。その手間を省きたいと思いました。 ゆくゆくはデザインをサポートするようなものも作っていきたいと思います。 考えたこと どこかにサーバーを用意してそこからダウンロードする仕組みが必要です。modo側にはクライアントとなるコードを書きます。無料で公開するサービスとしたいので、運用するのにできる限りお金がかからないようにしたいです。また、サーバーとクライアントの言語は効率化のためにも一緒にしたかったので、Google App Engineを利用することにしました(ということでPythonを使います)。 今後 思いをはせてみると、色々と実現したいことが浮かんできます。また、自分一人だけで完結するサービスではありません。スクリプトを作って公開されている方へ、登録のお願いもする必要があります。ちょっとドキドキしますが、少しずつ作っていきます。

てはじめに

CodeHighlightが上手くいくかをためしつつ、 はじめての投稿を行います。 <!DOCTYPE html> <html land="ja"> <head> <meta charset="utf-8"> <title>list</title> </head> <body> <form action="/detail/" method="post"> <input type="submit" value="追加"> </form> <hr/> <table border="1"> <tr> <th>ID</th> <th>Name</th> <th>Version</th> <th>Updated</th> </tr> {% for item in items %} <tr> <th>{{ item.key }}</th> <td>{{ item.name }}</td> <td>{{ item.version }}</td> <td>{{ item.updated }}</td> </tr> {% endfor %} </table> </body> </html> 上手くできているようです。 何か気が付いたことを書き留めていきます