忍者ブログ
雇われるだけの人生から目指せ独立、社会人2年目なゲーム脳SEのブログ。更新頻度=週2~3回。
[4]  [5]  [6]  [7]  [8]  [9]  [10]  [11]  [12]  [13]  [14
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

知る人ぞ知るGoogleの新サービス、Google App Engineを使ってみました。

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記事でもみながらさらに勉強を進めていこうと思います。
PR
前回より大変長らくお待たせしましたが、諸事情・・・おもに作者のやる気不足とかSwingの面倒さについていけなくなった等の理由で・・・ついに終わってしまいました!

まずは完成品をご覧ください。

TO000038.JPG

ださっ!!!
GridLayoutというレイアウトを使ってみてボタンとリストを並べてみたのですが、これはひどいです。仕方がないのでGridBagLayoutというよくわからないレイアウトを使ってみます。

TO000039.JPG

おお、だいぶスマートになりましたね。
もっともこれを実現するためだけに1時間以上APIリファレンスと格闘するはめになりました。どうしてこう、SwingのAPIは複雑怪奇なんでしょう・・・いやWin32APIに比べれば確かにマシだとは思いますけど。

TO000040.JPG

こちらがAdd new Notebookボタンを押したときに動くアクションリスナーです。匿名の内部クラスとして実装するのがSwing(といいますかVisual Editor)のしきたりみたいなのですが、このアクションリスナーを作っている最中にまた相当イライラさせられました。
  • パネルやウィンドウ自身を指し示めそうと思ってthisと使うとアクションリスナークラスの内部なのでアクションリスナー自身が返ってくる
  • アクションリスナーの外部の変数をアクションリスナー内部で使うためには外でfinal宣言した変数を作らなければならない
  • getTopLevelAncestor()メソッドを使えば自分の親(すなわちOreNotebook本体)のオブジェクトにアクセスできるのですが、そもそもコンポーネントのGetterメソッドがすべてprivateになる(Visual Editorのしきたりみたいです)ので、親にアクセスできたところで何も出来ない。ひょっとしたら無理矢理publicに書き換えるのが正解なのかもしれませんけど。
とまぁ、書いていてとにかくイライラ。なんでこんな美しくないソースになるんだろうと・・・
アクションリスナーの中身は1行、コントローラクラスを呼び出すだけにしたかったのですが・・・そうすれば同じ操作を画面の別の場所で行うとしても、1行書くだけですみます。アクションリスナーの中身で操作を行ってしまうと、別の場所に移植する際にすべてコピペすることになってしまい後から困ります。

愚痴はさておきまして。
コントローラやエンティティの実装も行いまして、実際に動作させてみました。

TO000041.JPG

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を一般の人がデスクトップマシンとして使うのは難しそうですね。

【2008/06/23追記】
xorgcfgの代わりがありました・・・
sudo displayconfig-gtk
これでいけるみたいです。家のマシンで試したところバッチリでした。
Ubuntu/VirtualBox - Sarabande Wiki
困ったことになりました。
Firefox3でブログを書くと、画像やリンクが正しく挿入できないんです。
(確かにベータ版サービスだから文句は言えないんですけど)

仕方がないのでブログを書くときだけはIEでやろうかと思ってます(もしくはIE Tabを使うか)。うーん、困った。
先日無線LANの導入に成功しましたので、今度はいよいよノートPCに仮想マシンとしてUbuntuの8を入れてみます。

使用する仮想化ソフトウェアはVirtualBox
VMwareとどちらにしようか悩んだのですが、友人EさんがVirturalBoxを大絶賛されていたので、それに習うことにしました。何でもHDDのアクセス速度が体感で3倍は違うんだそうです。
インストール方法はiso形式のCDイメージをマウントしてインストールすることにしました。VirtualBox用のUbuntuイメージもありましたが、バージョン7しか無かったためあえなく断念です。

流れは以下のような感じです。
1:VirtualBoxをインストール
特に言うことなしです。非常に簡単です。

2:仮想Linux環境を作成
これまた非常に簡単です。GUIがすべて日本語化されているためなおさら簡単です。
メニューから「新規」ボタンをクリックして、後は表示に従うだけ。困ったところも詰まったところもまったくありませんでした。

NOTE000001.JPG

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/
cp xorg.conf ~/
cd
gedit xorg.conf &
さすがにviで編集するのは嫌だったので、geditを使いました。

NOTE000002.JPG

こちらの図にあるように、以下の用に編集します。
  1. Section "Device"の中に、Driver        "vboxvideo"を追加する。
  2. Section "Screen"の中に、SubSection    "Display"を作成して、その中にModes    "1024x768"とDepth    32を追加する。Depthは色深度、Modesは解像度です。自分のお好みに変更すればよいと思います。
  3. 変更したら保存。
編集したら以下のコマンドで編集した設定ファイルを元の場所に戻します。
cd ~/
sudo cp xorg.conf /etc/X11/
戻したらCtrl+Alt+BackSpaceでX11を再起動すると、見事に解像度が変化するはずです。

81216b86.jpeg

これで一通り完成です!もう少し解像度大きくしてもいいかも・・・
それにしても仮想PCは万が一設定を壊しても復旧が楽だし、インストール作業の勉強にも向いていますし、なにより新しいことを試すときにはうってつけですね。1年~半年ぐらい前から「これからは仮想化の時代だ」みたいな記事をいろいろなところで読みましたが、なるほどその理由がよくわかった気がします。

参考にしたページ一覧:
オープンギャラリー:VirtualBox 1.3.8 for Windows 
ひるあんどん - ubuntu でNVIDIAドライバと解像度設定
Ubuntu日本語フォーラム / 画面解像度を 1280×800 に設定したい
V.J.Catkick@: 覚書:MacBook+ubuntu 

2008/6/3追記
やはり1024x768では物足りなかったので、さらに画面解像度を大きくしてみました。
【普通】Ubuntuにxorgcfgがない・・・


ずいぶんと変な一週間でした。三週間分ぐらいのイベントがまとめてやってきた気がします。
簡単に備忘録もかねて今週のダイジェストを書いてみます。
Wi-FiでDSやPSPをつないだり、ノートPCを無線LANで接続できるようにしたくなってきたので(MacBook Airを買うときの布石にもなります)、無線LANルータを買ってきてネットワークを構築することにしてみました。
問題は私、ネットワークはさっぱりなんですよ。大学の授業でやったきり。売り場の店員さんは「つなげば動く」と豪語されていましたが、大丈夫でしょうか?
ここ最近何か物足りないなと思い、刺激を求めてとうとうFirefox3.0b5に手を出してしまいました。

・・・いや、だって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アプリの動作が明らかにおかしくなる場所があります。中でも影響が大きいものをいくつか挙げてみました。

4de65e42.jpeg
Googleノートブック。なんか文字が分身してる。


TO000036.JPG
Googleマップ。何このスクロールバー。


TO000037.JPG
決定的に困るのがこれ。こういうタイプのWYSIWYGなエディタ上で、タブによるインデントが出来ません。リスト構造が階層化できないんですけど・・・どうしろと・・・調べてみても原因不明です。ちょっと困ってます。解決できそうなアドオンを探すか、Mozillaに殴り込みメールを投げるか・・・ですね。


現状では問題があるにせよ、革新的なブラウザであることは間違いありません。正式版が楽しみです。
チラシの裏です。
うちのブログにもタグクラウドみたいなシステムが欲しいなぁと思いました。
なめらかシリーズ完結編です。
前回までのチャレンジで、余計な領域を削除して、ラベル領域を広げる方法までは何とかつかめましたが、依然として枠が広がった状態を維持することができません。
仕方がないので以下の方針で広がった状態を維持することにします。
  1. タイマーで2秒おきに関数を起動して、サイズを調整する
  2. ただし、1度広げたら2度は広げない(さもないと永遠に広くなります、ちょっとしたブラクラ)
  3. onresizeのタイミングで、1度広げたらカウンターをリセットして、再度調整できるようにする
ではやってみましょう。
今回の肝になるのが、タイマーの代わりを担当するwindow.setInterval()と、
もう一つ、Greasemonkey用のオブジェクトであるunsafeWindowです。

今までは匿名関数を宣言して、その中で操作を行っていたのですが、これでは匿名関数のスコープが終了する=Greasemonkeyのスクリプトが終了すると同時に匿名関数の中で宣言した関数などが使用できなくなってしまいます。
それでは匿名関数の外に関数を移動すればよいのかといいますと、実はそういうわけではありません。最近のGreasemonkeyの実行環境は、実はSandboxと呼ばれるオブジェクト(?スコープ?それとも関数?)の中でスクリプトが実行されているようなのです。図にすると以下の通り。

c697b925jpeg

赤い線がグローバルスコープ、緑の線がGreasemonkeyスクリプトの走っているSandboxと呼ばれる・・・スコープ・・・スコープでいいのかなぁ・・・にあたります。たとえば今、Greasemonkeyスクリプトの中からSandboxの中で宣言した関数を呼び出して、windowオブジェクトに持たせるとします。図中の青い線がそれです。

be846510jpeg

ここでGreasemonkeyスクリプトが終了してしまうと、緑色の線で囲まれたSandboxはまとめて消えてしまいます。従ってwindowオブジェクトが参照している関数の実態もスコープアウトしてしまい、関数が実行できなくなってしまうみたいです。

そこで出番になるのがunsafeWindowオブジェクトです。このオブジェクトはSandboxの外に直接アクセスすることが出来ます。できるらしいです。つまりGreasemonkeyスクリプトが終了してもスコープアウトしません。

もちろんSandboxの外にアクセスできる=既存のページで走っている他のスクリプトと干渉するということですから、きわめて危険で不安定な方法になります。Greasemonkeyの解説サイトでも「可能な限り使用を避けろ、あらゆる代替手段を用いて避けろ」と明記されています。

というわけで、完成はしたのですが、全くおすすめできません。一応バグはないみたいですが、何が起きてもが責任とれません。ご了承ください。
以上を踏まえましてこちらが完成品です。
googlenotebookcustomizer_0_3

使ってみた結果が以下の通り。

05060464.JPG

ばっちりラベルエリアが広がりました!
もちろん、リサイズしてもきちんとサイズが広がります。
たったこれだけのことなのに、ずいぶんと長いみちのりでした・・・

このGreasemonkey、初めてJavascriptに触る人には最高のおもちゃになると思います。なんと言っても100行やそこらのソースで、普段から使っているWebページやWebアプリの動作をまるで別物に変えてしまうことが出来る手軽さと楽しさが最大の魅力です。
今後Javascriptを学ぼうと志す方をみかけたらまずはGreasemonkeyをおすすめすることにしますね。

カレンダー
03 2024/04 05
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
ブログ内検索
最新コメント
[11/13 DSLR-A850]
[08/29 逆援助交際]
[08/23 クンニ]
[08/22 熟女]
[08/19 痴漢]
はてなブックマーク
プロフィール
HN:
akisute
性別:
男性
職業:
システムエンジニア
趣味:
ゲーム・東方・ニコ動。あと散歩。
バーコード
推奨環境

横幅900px以上、Firefox 3, Safari 3, Opera 9.5, Chrome 0.2以上。IE7ギリギリ対応。IE6未対応。

忍者ブログ [PR]