Javaの最近のブログ記事

4/10の土曜日に、とべとべ自習室に行ってきました。会場は例によってオラクル青山センター。いつもいつもありがとうございます。 > @yokatsuki さん

特に何を作るか考えていなかったので、てきとーにTDDの勉強でもすっかなぁ、それか仕事でも使えそうな携帯用のプラグインでも書いてみるか、と思いながらTwitterで


http://twitter.com/yoozoosato/status/11921093691
と呟いたら、


http://twitter.com/ayumin/status/11921431143

という返信を@ayuminさんからもらったので、Rubyの勉強会(自習室)なのに、何故かずっとJavaを書くという不思議な会となりました。
# 多分Java書いてたのはウチらだけだったんじゃないかな? 久しぶりすぎて相当忘れてたけど。。。

id:sugyanさんと飲みながらお話してたんだけど。
「Javaの開発だったら、Emacs使うよりもEclipse使う方がよくないですか?」
的な話。

んで、僕は当然「IDE嫌い。Emacsでここまでできるもん」的な反論をしたんですが、帰りの電車で考えてみると、Emacsでなんでもやってしまおう的な発想を持つようになったのがwebサイトの運用にずっと携わってきたからだということに気付いた。

例えばSIerさんのようなところや開発会社さんなどは、納期までにプロダクトを納品することで「開発」が終わる。僕も今の会社に転職する直前は開発会社に勤務していたので、そのためのツールとして、EclipseのようなIDEが非常に有効だという認識はある。
生産性も上がるし、何よりもチーム作業がとても効率的にできる。


一方で僕が今の所属会社でここ数年携わってきた業務は開発して納品したら終わり、というのはほとんど無くて、逆に複数のインターネットサービス(WEBコンテンツ)を複数年に渡って「運用」し続けるという仕事がメインだったし、多分これから先もそれは変わらない。
そうなると本番で稼動しているサーバーは勿論のこと、(所謂)ステージング環境やテスト環境にリモートログインして作業する時間の方が「開発」の時間よりも長くなる。

バリバリとスクラッチからコードを書き続けるのではなく、問題点を洗いだしてピンポイントで即座に修正する、という作業。
あるいは既存のソースコードを読み解いて、必要な箇所に修正&加筆していくという作業。

なので、EclipseなどのIDEを使わないとコード編集できないという状態では、逆に生産性が下がるのでEmacsやviのように「telnetでログインしたサーバー上で稼動するエディタ」への依存率が高くなる。

あってはいけないことだけどサービスが何らかのバグで停止しているなら、それは1秒でも早く復旧させないとビジネス的に機会損失になるし、お客様に迷惑をかける。

そういう土壇場作業をviでこなすhackerもいるし(同僚でもそういう人いたなぁ)たまたま僕はそれがemacsだったというだけ、かなぁ。。と。
emacs-lispは使いこなせてはいないけど、「本番反映hook」とかをちょこちょこっと書ける柔軟性は気に入ってる。
後輩や部下にも「とにかくコンソールでCUIベースで何でもできるようになっておけ」と良く説教してたなぁ。。

棲み分け? うーん。。 使い分け?ができると一番幸せなのかもしれない。ツブシがきく、という点で。

そんな感じ。

App Engine SDKに入っている
/appengine-java-sdk-1.2.0/demos/guestbook
をlocalhostで動かしてみた。
ドキュメントに書いてあるヤツなので、ノービスクラスの簡単なお仕事です。
http://code.google.com/intl/ja/appengine/docs/java/gettingstarted/installing.html

(Macなら)iTermとかTerminal.appとかでSDKのフォルダに入り、

$ cd ./demos/guestbook/
$ ant runserver
で動く。
Buildfile: build.xml

copyjars:

compile:

datanucleusenhance:
[enhance] DataNucleus Enhancer (version 1.1.0) : Enhancement of classes
[enhance]
[enhance] DataNucleus Enhancer completed with success for 1 classes. Timings : input=134 ms, enhance=35 ms, total=169 ms. Consult the log for full details

runserver:
[java] 2009-04-08 16:04:54.850 java[5761:80f] [Java CocoaComponent compatibility mode]: Enabled
[java] 2009-04-08 16:04:54.851 java[5761:80f] [Java CocoaComponent compatibility mode]: Setting timeout for SWT to 0.100000
[java] The server is running at http://localhost:8080/

サーバーが上がったら、ブラウザでlocalhost:8080にアクセスするだけだね。
# 別にEclipse要らない・・・w

最近Ruby On Rails or Perlばっかりだったので久々のJavaネタ。
Google App EngineがJavaサポートを開始したそうなので、さっそくsign upして「使える」準備だけやってみた。

Google App Engine Blog: Seriously this time, the new language on App Engine: Java™

(1) App Engineのサイトにアクセス

http://appengine.google.com/start

一番上の部分に「Interested in trying our new Java language support?」と書いてあるので、Learn moreをクリック。

↓これの進化型を模索して色々と試してた。
ギターの音にあわせてMacの画面を動かす

MacBookProの内蔵マイクはそんなに上等なものではないので、まずはアンプで鳴らした音をもうちょっとまともな方法でMacに突っ込むテスト。

むちゃくちゃ原始的w 
「アンプの前にマイクを置く」
マイクは一応audio technica製(安物)。それをt.c.electronic製のオーディオインターフェース(アキバで投げ売りされていた安物)経由でMacのFireWire端子に接続。空気の振動を電気信号に変換する装置を、MacBookに搭載されているチープなものから、ちゃんとしたMusical Instrumentsに置き換えたってだけです。プラグの形状さえ合わせればMacのマイクイン端子に直結でも良いかもしれないけど、それはまだ試してない。

ただアンプの前にマイクを置くという方法だとどうしてもギターの音以外の周囲音(エアコンの音とか、猫の鳴き声)も拾ってしまう。ウチには猫いないけど。なのでギター用のマルチエフェクター(ZOOM製。これも安物)からオーディオインターフェースにライン出力したものもMacに突っ込む、っていうのもやってみた。これならギターのピックアップで拾える電気信号以外の空気の振動は一切拾わない。はず。

書いてて気付いたけど、別にMacじゃなくWindowsでも普通にできるや。

で、こっから先が分からない。 ← イマココ

11月8日の土曜日にRBCでRuby-processingの勉強会をやりまーす。

Processingは、もともとJavaで開発された製品なんですが、JRubyを活かし、Rubyから利用できるようにしたのがRuby- processingです。

RubyらしさとJavaの良さ。そんなものを活かした技術。この機会を利用して、ソフトウェアの可能性を、もう一度考え直してみよう。

何故か(w)僕も裏方として色々とお手伝いしているので、お時間のあるかたは是非ご参加ください。
ustream.tvでも勉強会の模様を配信する予定です。


詳細はコチラから。

二択

今から開発しようとしているシステムを「何で」実装するか。


壁にぶち当たるのを覚悟でrubyでいくか。(経験ゼロ)

無難にjavaで作るか・・・。(こっちは得意)

あー、悩ましい。。

このアーカイブについて

このページには、過去に書かれた記事のうちJavaカテゴリに属しているものが含まれています。

前のカテゴリはiPhone / iPod touchです。

次のカテゴリはJavaScriptです。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

月別 アーカイブ

ウェブページ

OpenID対応しています OpenIDについて
Powered by Movable Type 6.1.2