[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
Google App Engineとは、簡単に言うと「私たちが作ったWebアプリケーションを、GoogleがWebサーバーやDBサーバーを肩代わりして全世界に公開してくれる」サービスです。もっと簡単に言うならお祭りのテキ屋です。私たちはGoogle様に所場代を支払って、その代わりに自分たちが作ったサービスで商売することが出来るというわけです。もっとも、Googleの要求する所場代はそこらのやくざと違って非常にリーズナブルで、我々素人が使う分には完全に無料です。
これまでWebアプリケーションというと、サーバの管理が大きな問題になりました。普通のローカルアプリケーションだと作ってしまえば後はダウンロードしてもらうだけですが、Webアプリケーションとなると、自分でサーバを作って管理する必要がありました。
お金もかかりますし、WebサーバにAPサーバにDBサーバと幅広い知識が要求されて非常に大変です。さらに我が家のように狭いワンルームマンションになるともうほとんど物理的にお手上げです。
ところがGoogle App Engineの登場で、サーバの心配が全く必要なくなったわけです。確かにプログラムに使える言語がPythonしかないという問題はありますけど、逆に言えばそれはソフトウェア的な問題。私が変われば済むだけの話です。サーバと土地はどうがんばっても空気からわき出てこないですからね。
ご託はさておきまして。
まずはGoogle App EngineのページからSDKをダウンロードして、チュートリアルに沿って実際に開発を体験してみることにしました。
真っ先に感じたのが、「楽」。とにかく楽です。
- コードをかく量が非常に少ない。Javaばっかりやっていたので余計にそう感じます。
- 設定ファイルが少ないしYAMLなので書きやすい。apache+tomcat+struts+oracleという構成はXML形式の設定ファイルの山で動いていますから、余計にそう感じます。
- データベース周りが非常に協力。スキーマだのパスワードだの接続文字列だのといった聞くだけでうんざりする単語が一切出てこない。
- 再起動が一切いらない開発環境って本当にすばらしいと思います。以前会社で1回tomcatを再起動するのに90秒かかる環境で画面を作ったりしていましたから・・・
無料でアプリケーションのホスティングを肩代わりしてくれなくても、この快適な開発環境だけでも十分体験する価値があるんじゃないかと思います。とにかく、仕事では皆さんどこの現場に行ってもありとあらゆる設定ミスだとか環境系のバグに悩まされていると思いますので・・・
しかしまだまだこの環境の魅力の半分も理解できていないと思いますので、
CodezineのGoogle App Engine記事でもみながらさらに勉強を進めていこうと思います。
まずは完成品をご覧ください。
ださっ!!!
GridLayoutというレイアウトを使ってみてボタンとリストを並べてみたのですが、これはひどいです。仕方がないのでGridBagLayoutというよくわからないレイアウトを使ってみます。
おお、だいぶスマートになりましたね。
もっともこれを実現するためだけに1時間以上APIリファレンスと格闘するはめになりました。どうしてこう、SwingのAPIは複雑怪奇なんでしょう・・・いやWin32APIに比べれば確かにマシだとは思いますけど。
こちらがAdd new Notebookボタンを押したときに動くアクションリスナーです。匿名の内部クラスとして実装するのがSwing(といいますかVisual Editor)のしきたりみたいなのですが、このアクションリスナーを作っている最中にまた相当イライラさせられました。
- パネルやウィンドウ自身を指し示めそうと思ってthisと使うとアクションリスナークラスの内部なのでアクションリスナー自身が返ってくる
- アクションリスナーの外部の変数をアクションリスナー内部で使うためには外でfinal宣言した変数を作らなければならない
- getTopLevelAncestor()メソッドを使えば自分の親(すなわちOreNotebook本体)のオブジェクトにアクセスできるのですが、そもそもコンポーネントのGetterメソッドがすべてprivateになる(Visual Editorのしきたりみたいです)ので、親にアクセスできたところで何も出来ない。ひょっとしたら無理矢理publicに書き換えるのが正解なのかもしれませんけど。
アクションリスナーの中身は1行、コントローラクラスを呼び出すだけにしたかったのですが・・・そうすれば同じ操作を画面の別の場所で行うとしても、1行書くだけですみます。アクションリスナーの中身で操作を行ってしまうと、別の場所に移植する際にすべてコピペすることになってしまい後から困ります。
愚痴はさておきまして。
コントローラやエンティティの実装も行いまして、実際に動作させてみました。
Add new Notebookボタンを押すと新しい"abesi"という名前のノートブックがノートブックリストに追加されます!やった!
と、ここで私の忍耐力が限界を迎えてしまいました。もうこれ以上こんな設計思想もインターフェースもわからないAPIを使って綿密に設計するなんてできません。綺麗に設計するためには、本を買ってきてSwingを勉強し直す必要があるみたいです。
一応、ここまでの完成品をまとめたものをアップしておきます。
・Eclipse Workspace&Source
→OreNotebook.zip
・UML
→OreNotebook.jude
今回の企画の反省点。
- UMLを作ることを重視しすぎた。設計だけなんてやっぱり楽しくないし、全くゼロの状態で設計だけを延々と進めると、実際に実装したときとUML図の乖離が大きくなり、結局UMLを修正しなくてはならなくなる、実装あってUMLありき。少し書いたらすぐ作る、すぐ作ったらまた設計。
- Swingなどというよくわからないものを使おうとしてしまった。もっと熟知してから進めるべきだった・・・
- 途中でGoogle App Engineという別の楽しそうなおもちゃを見つけてしまった。
昨日の続きです。
画面解像度をもう少し広くしたくなってきたので、本格的に調べてみました。
といってもすでに完全に私がやりたかったことと同じことをやってらっしゃる方がいらっしゃったので、そちらから丸コピーです。
ぱぇぽぃ2 » Blog Archive » Ubuntu 8.04
こちらのBlogのエントリに記載されているxorg.confファイルの中身をそのまま丸ごとコピーして、Xを再起動すれば、それだけで1280*800*24@60Hzで表示が出来ました。めでたしめでたし。
・・・いやいやちっともめでたくありません。どうしてこの設定が出来たのかを知らなければなりません。ハードウェアの設定がわかれば自分で手書きすることも出来ると思うのですが、何か自動的にやってくれそうなツールがあるはず・・・
ちょっと調べたらありました。xorgcfgですね。
Gentoo Linux Documentation -- X サーバー設定ガイド
早速試してみましょう。
sudo xorgcfg bash:そんなコマンドないよ♪
!?
man xorgcfg man:そんなマニュアルないよ♪
!!??
sudo apt-get install xorgcfg apt-get:ねーよwwwwwwwwwww
WHAT!????
aptではとれないとかそういう理由でしょうか・・・rpmは無いみたいだし、どうすれば良いのか少々調べてみたのですが・・・
Fedora JP 掲示板
xorgcfgはインストール自体出来ないみたいです・・・なんだそれは!
FreeBSDには最初から入っているみたいなんですけれども。公式のwikiを見てもそれらしい記述が全くありませんし、どうやら本当にハードウェアを自分で調べながら手で編集するしかないみたいです。トライ&エラー。
一番デスクトップ指向に見えるUbuntuですらこれですから、どうやらまだLinuxを一般の人がデスクトップマシンとして使うのは難しそうですね。
xorgcfgの代わりがありました・・・
sudo displayconfig-gtkこれでいけるみたいです。家のマシンで試したところバッチリでした。
Ubuntu/VirtualBox - Sarabande Wiki
Firefox3でブログを書くと、画像やリンクが正しく挿入できないんです。
(確かにベータ版サービスだから文句は言えないんですけど)
仕方がないのでブログを書くときだけはIEでやろうかと思ってます(もしくはIE Tabを使うか)。うーん、困った。
使用する仮想化ソフトウェアはVirtualBox。
VMwareとどちらにしようか悩んだのですが、友人EさんがVirturalBoxを大絶賛されていたので、それに習うことにしました。何でもHDDのアクセス速度が体感で3倍は違うんだそうです。
インストール方法はiso形式のCDイメージをマウントしてインストールすることにしました。VirtualBox用のUbuntuイメージもありましたが、バージョン7しか無かったためあえなく断念です。
流れは以下のような感じです。
1:VirtualBoxをインストール
特に言うことなしです。非常に簡単です。
2:仮想Linux環境を作成
これまた非常に簡単です。GUIがすべて日本語化されているためなおさら簡単です。
メニューから「新規」ボタンをクリックして、後は表示に従うだけ。困ったところも詰まったところもまったくありませんでした。
3:Ubuntuのインストール
まずはディスクイメージをこちらからダウンロード。
先ほど作成した仮想マシンにCD/DVD-ROMをマウント。これまた非常に簡単、先ほどの図のCD/DVD-ROMというところをクリックするとマウントオプションが出ますので、iso形式のファイルを指定してやるとマウントできます。
4:起動
起動したら勝手にCDからブートしてくれます。
ブートしてくれたら後は表示に従ってアカウント名入れたりパスワード入れたり。ものの数分で終了。さすがUbuntu、Linuxとは思えないぐらいひっっじょーに簡単です。昔大学時代にDebian GNUをインストールするときにはCUIベースのインストーラしかなかったのでコンソールとにらめっこをしていた記憶がありますが、そんな苦労はどこへやらです。
5:最後にちょっとだけ設定
インストールが完了したらちょっとだけ面倒な設定をやります。
VirtualBoxのメニューから、「デバイス」→「Guest Additionsのインストール」をクリック。
CDROMにインストール用のファイル一式が詰まった仮想CDがマウントされますので、
cd /media/cdrom0/などとしてCDに移動。あとは用意されているインストーラをsudoで実行するだけです。私は以下のコマンドを試してみたらうまくいきました。
sudo ./VBoxLinuxAdditions.runここでUbuntuを再起動。再起動後、マウスカーソルがホストOS(Windows)とシームレスに移動するようになり(mouse pointer integration)、大変便利になります。
それからGuest AdditionsをインストールするとVirtualBox用のグラフィックドライバ(vboxvideo)がインストールされますので、画面解像度を変更することが出来るようになります。といっても、私の場合はなぜかGnomeの設定から変更することが出来なかったので、直接設定ファイル(/etc/X11/xorg.conf)をいじる必要がありました。具体的には以下の通り。
cd /etc/X11/さすがにviで編集するのは嫌だったので、geditを使いました。
cp xorg.conf ~/
cd
gedit xorg.conf &
こちらの図にあるように、以下の用に編集します。
- Section "Device"の中に、Driver "vboxvideo"を追加する。
- Section "Screen"の中に、SubSection "Display"を作成して、その中にModes "1024x768"とDepth 32を追加する。Depthは色深度、Modesは解像度です。自分のお好みに変更すればよいと思います。
- 変更したら保存。
cd ~/戻したらCtrl+Alt+BackSpaceでX11を再起動すると、見事に解像度が変化するはずです。
sudo cp xorg.conf /etc/X11/
これで一通り完成です!もう少し解像度大きくしてもいいかも・・・
それにしても仮想PCは万が一設定を壊しても復旧が楽だし、インストール作業の勉強にも向いていますし、なにより新しいことを試すときにはうってつけですね。1年~半年ぐらい前から「これからは仮想化の時代だ」みたいな記事をいろいろなところで読みましたが、なるほどその理由がよくわかった気がします。
参考にしたページ一覧:
オープンギャラリー:VirtualBox 1.3.8 for Windows
ひるあんどん - ubuntu でNVIDIAドライバと解像度設定
Ubuntu日本語フォーラム / 画面解像度を 1280×800 に設定したい
V.J.Catkick@: 覚書:MacBook+ubuntu
2008/6/3追記
やはり1024x768では物足りなかったので、さらに画面解像度を大きくしてみました。
【普通】Ubuntuにxorgcfgがない・・・
簡単に備忘録もかねて今週のダイジェストを書いてみます。
問題は私、ネットワークはさっぱりなんですよ。大学の授業でやったきり。売り場の店員さんは「つなげば動く」と豪語されていましたが、大丈夫でしょうか?
・・・いや、だってWebアプリが2倍速く動くとかなんとか聞かされてしまったら、もう我慢できないですよね。早速公式ページからダウンロードしてインストールしてみました。
インストール時に気になった点と言えば、設定フォルダをFirefox2と共有していることぐらいでしょうか。それから、Firefox 3 Beta 5なんていう専用のインストールフォルダを作りやがったので、今後ベータが進んだり正式版が出たときにどうなるのかがちょっと気になります。
アドオンについては、いくつかの公式対応しているアドオンを除いては、↓こちらのページを参考にしてFirefox2時代のアドオンをそのまま流用しました。
Firefox3 Beta版に対応していないアドオンを強引にインストールする方法。
具体的には以下の通り。
- Tab Mix Plus・・・通常版は対応していないので、Dev-Buildを利用することにしました。
- Greasemonkey
- Invisibility Cloak
- NikoWatch Tools
- Adblock Plus
- Adblock Filterset.G updater
- DOM Inspector
- Firebug
- Firegestures
Google Toolbar・・・有効にしていると起動時にブラウザがハングアップしました。仕方がないのでLite版を導入することに。- Googlebar Lite
- URLParams
- Web Developer
- テキストリンク(textlink)
- スクラップブック(Scrapbook)http://amb.vis.ne.jp/mozilla/scrapbook/?lang=ja
使用感覚についてですが、まずとにかく速いです。Ajaxの通信速度(というかサーバの応答速度)はともかくとしても、Googleノートブックなどはまるでローカルアプリのように動作します。Javascriptぬきでも、どうやら裏でキャッシュを行っているようで、1度表示したページの再表示がとにかく速い。
インターフェース周りは特に何とも思いませんが、Firegesturesによるマウスジェスチャの安定性と速度が圧倒的に向上しております。かくついたり誤認識したりがほとんどありません。
この忍者Blogで記事を書くときにしても、画像のアップロードおよび画像挿入の際の重さがほとんどありません。まるでローカルアプリのようにさくさく動作し、次々と画像がアップロードできます。ポップアップが開く速度がとにかく速い。
逆にいくつか不満点も。まずWebアプリの動作が明らかにおかしくなる場所があります。中でも影響が大きいものをいくつか挙げてみました。
Googleノートブック。なんか文字が分身してる。
Googleマップ。何このスクロールバー。
決定的に困るのがこれ。こういうタイプのWYSIWYGなエディタ上で、タブによるインデントが出来ません。リスト構造が階層化できないんですけど・・・どうしろと・・・調べてみても原因不明です。ちょっと困ってます。解決できそうなアドオンを探すか、Mozillaに殴り込みメールを投げるか・・・ですね。
現状では問題があるにせよ、革新的なブラウザであることは間違いありません。正式版が楽しみです。
うちのブログにもタグクラウドみたいなシステムが欲しいなぁと思いました。
前回までのチャレンジで、余計な領域を削除して、ラベル領域を広げる方法までは何とかつかめましたが、依然として枠が広がった状態を維持することができません。
仕方がないので以下の方針で広がった状態を維持することにします。
- タイマーで2秒おきに関数を起動して、サイズを調整する
- ただし、1度広げたら2度は広げない(さもないと永遠に広くなります、ちょっとしたブラクラ)
- onresizeのタイミングで、1度広げたらカウンターをリセットして、再度調整できるようにする
今回の肝になるのが、タイマーの代わりを担当するwindow.setInterval()と、
もう一つ、Greasemonkey用のオブジェクトであるunsafeWindowです。
今までは匿名関数を宣言して、その中で操作を行っていたのですが、これでは匿名関数のスコープが終了する=Greasemonkeyのスクリプトが終了すると同時に匿名関数の中で宣言した関数などが使用できなくなってしまいます。
それでは匿名関数の外に関数を移動すればよいのかといいますと、実はそういうわけではありません。最近のGreasemonkeyの実行環境は、実はSandboxと呼ばれるオブジェクト(?スコープ?それとも関数?)の中でスクリプトが実行されているようなのです。図にすると以下の通り。
赤い線がグローバルスコープ、緑の線がGreasemonkeyスクリプトの走っているSandboxと呼ばれる・・・スコープ・・・スコープでいいのかなぁ・・・にあたります。たとえば今、Greasemonkeyスクリプトの中からSandboxの中で宣言した関数を呼び出して、windowオブジェクトに持たせるとします。図中の青い線がそれです。
ここでGreasemonkeyスクリプトが終了してしまうと、緑色の線で囲まれたSandboxはまとめて消えてしまいます。従ってwindowオブジェクトが参照している関数の実態もスコープアウトしてしまい、関数が実行できなくなってしまうみたいです。
そこで出番になるのがunsafeWindowオブジェクトです。このオブジェクトはSandboxの外に直接アクセスすることが出来ます。できるらしいです。つまりGreasemonkeyスクリプトが終了してもスコープアウトしません。
もちろんSandboxの外にアクセスできる=既存のページで走っている他のスクリプトと干渉するということですから、きわめて危険で不安定な方法になります。Greasemonkeyの解説サイトでも「可能な限り使用を避けろ、あらゆる代替手段を用いて避けろ」と明記されています。
というわけで、完成はしたのですが、全くおすすめできません。一応バグはないみたいですが、何が起きてもが責任とれません。ご了承ください。
以上を踏まえましてこちらが完成品です。
googlenotebookcustomizer_0_3
使ってみた結果が以下の通り。
ばっちりラベルエリアが広がりました!
もちろん、リサイズしてもきちんとサイズが広がります。
たったこれだけのことなのに、ずいぶんと長いみちのりでした・・・
このGreasemonkey、初めてJavascriptに触る人には最高のおもちゃになると思います。なんと言っても100行やそこらのソースで、普段から使っているWebページやWebアプリの動作をまるで別物に変えてしまうことが出来る手軽さと楽しさが最大の魅力です。
今後Javascriptを学ぼうと志す方をみかけたらまずはGreasemonkeyをおすすめすることにしますね。
12 | 2025/01 | 02 |
日 | 月 | 火 | 水 | 木 | 金 | 土 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
横幅900px以上、Firefox 3, Safari 3, Opera 9.5, Chrome 0.2以上。IE7ギリギリ対応。IE6未対応。