カテゴリー: 05.技術情報

MacOS X Snow Leopard!!!!

2009/08/30 6:27 PM

 

MacOSの最新版、MacOS SnowLeopardを購入しました。
MacOS XはWindowsに比べて、非常にシンプルで使いやすいOSだと思います。
僕自身、開発作業の一部はWindowsでないとできませんが、仕様書、プレゼン作成、管理業務等のほとんどをMacで行っています。できれば、すべての作業をMacでできればベストなんですが。

詳細はAppleのサイトを参照いただくとして、今回のアップグレードで、僕がすばらしいと思っているのは、

  1. OSの占めるHDD容量が最大7GB少なくなること。
  2. ほとんどのシステムアプリケーションが、64bit対応になったこと。
  3. 今まで129ドルだったアップグレードが、3,300円になったこと。

以上の3点。

僕が使っているのは、MacBook Airの最初のタイプです。
HDDは1.8インチのATA80GBなので、SATA主流の今となっては、交換して容量アップができません。
よって、インストールすることで空き容量が増える今回のアップグレードは、それだけで、実施する価値があります。
それが、3,300円で!
また、もっとも使用頻度の高いFinder、Mail、Safari、iCalが速くなるなら、なおさらよし。

で、発売日の金曜日に、さっそく買ってきました。
買ったのは、ケーズデンキ水戸本店。
21時過ぎに行ったのですが、50個仕入れて、残り5個。次の入荷が二週間後ということでしたので、危ないところでした。
現在のLeopardをTomiMachineでバックアップ後、上書きインストールしてみました。

結果は・・・。

大成功!
空き容量が約7GB増えて、残り14.6GBに。
Air使いには、大変喜ばしいことです。
また、Mail、Safariの速度が明らかに向上しているように感じます(あくまで体感速度)。
アップグレードしてよかった、と、素直に実感しました。

Exposé、Docなどの新機能は、これから試してみようと思います。

IntelMacをお使いの方々、スノレパ、おすすめです!

Webアプリ共通課題 #0 インデックス

2009/08/25 1:14 PM

 

Webアプリケーションにおける共通的な問題と、その解決方法をまとめます。

ここに挙げるのは、ブラウザとWebサーバというシンプルな組み合わせ、ステートレスな関係によって起きる、オーソドックスなものです。
近年、AJAXが一般的になってきていますが、ユーザビリティと内部の処理タイミングが複雑になってきており、なおさら意識しなければいけないものもあります。

以下はインデックス。詳細な内容を書いたらリンク化していきます。

  1. ボタン二度押し防止
  2. 戻るボタン対策
  3. スクロール位置の保持
  4. F5リロード対策
  5. セッションオブジェクトの後始末
  6. マルチウィンドウ/マルチセッション
  7. ログ出力
  8. 設定ファイル
  9. エラー処理

分散型バージョン管理システムの構築#2 SVKの活用

2009/07/02 7:10 PM

 

ソフトウェア開発において、バージョン管理が大切ということを前回の分散型バージョン管理システムの構築#1で書きました。

今回は、SVNサーバと連携可能な、個々のマシンでのバージョン管理を実現する、SVKというソフトウェアを試してみます。
これを使用することにより、開発者一人ひとりの作業単位ごとのリビジョン管理が、全体を乱さずに行うことができるというメリットがあります。

SVKの導入と、簡単な使用方法について、続きはこちら・・・。
続きを読む »

分散型バージョン管理システムの構築#1

2009/07/01 3:16 PM

 

ソフトウェア開発において、プログラムやドキュメントのバージョン管理が重要なのは言うまでもありません。
特に、複数メンバーで開発しているときや、拠点を分けて開発する場合、、現場と事務所で作業をする場合、あるいは、細かい変更管理が必要なときなど、開発の現場を経験された方なら、
「デグレか?」
とヒヤッとしたことの一度や二度はあるのではないでしょうか?
(デグレ・・・デグレード。プログラムのバージョンが、意図せず一部戻ってしまうこと。)

手軽に導入できるということで、多くのプロジェクトで採用されているのが、CVSやSVNなど、オープンソースのバージョン管理システム。
これらを導入することによって、いつ、誰によって、どのような変更があったかを、記憶にたよらずに機械的に参照することができますね。
特に、SVNは、変更リソース単位での管理なので、適切な単位でコミットすることで、後々に問題が発生したときに、見通しが良くなります。
複数メンバーで開発していると、同じファイルを何人かで変更することがあります。
ロジックそのものが競合している場合は、もちろん、後からコミットする人が注意深くマージしていくことになり、その作業そのものは人力になります。それでは、順番にマージしているのと同じかと思われますが、大切なのはバージョン履歴が自動的に残ることです。

中には、手作業でのマージが一番確実、という方もいますが、特に時間が無くなってきたときに、3人以上のマージがいかに危険か、経験された方も多いのではないかと思います。

しかし、SVNを使っても、危ない目に会うことがあります。
大切なことは、SVNでのマージはなるべく機械的にやることだと考えています。
受け取るソースは、必ず差分に目を通す。
マージしてはいけない設定ファイルなどは、判明し次第、ignoreにしておき、
コミットするときはもちろん、受け取るときも、絶対に中途半端に残さない。

これを徹底しないと、手作業よりも危ないです。

また、開発で大切なことは、作業を適切な大きさのタスクに切り分けて進めることです。
作業単位を小さくすることは、基本的には、個々人の能率を上げることになります。

しかし、複数メンバーで開発している場合、小さな作業単位でコミットすると、特に共通的なプログラムが関係しているときなど、他のメンバーのプログラムが動かなくなる可能性がありますね。
もちろん、他のメンバーになるべく影響を与えない順序でコミットしていくことを考えるのも大切ですが、
実装の順番の都合や、作りながら考えるような局面の場合、このままでは、自分の作業管理をシステム化できなくなってしまいます。

そこでこれから、
ソフトウェア品質を上げていくための、チーム全体のバージョン管理サーバ、個々人の効率と精度を上げるためのローカルなバージョン管理システムをご紹介していきます。また、バグトラッキングサービスや、iPhoneとの連携についても探っていくつもりです。

iPhone OS 3.0 レビュー#01 コピペ編

2009/06/22 11:54 PM

 

18日に、iPhone OSが、2.2.1から3.0にアップデートされました。
すでにいろんなところでレビューされてますが、とりわけiPhoneらしい、Appleらしいところをご紹介します。

最初は、何と言っても、コピー&ペーストでしょう。
今までできなかったのが不思議。
なので、コピペを実現するアプリが公式非公式(脱獄)ありました。

今回のアップデートでようやく実装されました。
いざ試してみると、さすがApple。と感じさせる、ちょっとした気配りを感じます。

iPhoneを使っていると、結構長い文章を入力する機会が増えてきませんか?
コピペができない時でも、あまりストレスを感じずに入力をすることができたのは、iPhoneの入力のしやすさがかなり効いていると思います。今の使い勝手の良さを損なわずに、うまくまとまっていると思います。

まずは、safariを開いてみます。

ダブルタップで領域拡大。
(ピンチ・イン、アウトが注目されますが、ダブルタップは、タップした領域(table,divなど)を画面いっぱいに拡大するので超便利)

safariの場合、長押しタップで、選択範囲が表示されます。
選択範囲の開始位置、終了位置にあるピン。
使い勝手の向上に、こういうちょっとしたアイテムが役に立っていると思いませんか?

このピンをドラッグすると、選択範囲を変更できます。
ここで、終端をドラッグしていって、段落の最後までいくと、自動的に段落全体が選択されます。

「コピー」をタップしてから、メモを起動し、ここでも長押し。

「ペースト」をタップして、貼付け完了。

Web画面をコピーして、メールに貼ったら、画像までコピーできました。
これは便利!!!

実際には、コピーされたHTMLソースをメールに貼付けているようです。

カメラロールにある画像でも、長押ししてコピー、メールに貼付けられます。

これは、普通の添付ファイルとして送信されました。

うっかり忘れてた。
ペーストしてすぐ、iPhoneを振ると、取り消しできます。

ついでながら、コピーしたクリップボードの履歴を取っておけるアプリを紹介します。

iDoClipboardiDoClipbord

これは、起動すると、最後にコピーした内容を履歴として保存するアプリ。
複数の文字列や、よく使う文字列を保存しておいて、すぐに貼付けることができます。
また、コピーした情報をメールで送信することもできます(デバッグが残っているのか、デフォルトの宛先が作者になっているので注意!)。
近々機能を強化したバージョンをリリースする予定のようですが、現在のところ無料です。
ただ、画像の貼付けには対応していないようなので、Webの内容を送るなら、普通にメールに方が良いことは確か。
ですが、このアプリの良いところは、操作が単純なところです。
メールを起動したり、Evernoteを起動したり、そんなちょっとした時間が、意外と気持ちをスポイルすることがあるものです。
願わくば、次のアップデートで、画像を含めたクリップに対応してほしいものです。

Mobile Me

2009/06/10 3:40 PM

 

iPhoneとMacとWindowsとWebのカレンダー、メール、ストレージをまとめるために、MobileMeを試してみることにしました。

近日中に、新サービス、リモートキルなどが追加されるとのことです。

まずは、フリートライアルで試してみようと思います。

MacBookAir これいいかも

2009/03/12 2:27 AM

 

MacBookAirを使い始めて2ヶ月余り、
そのスタイルと、MacOS Xの使いやすさ、Vistaも普通に使えること、心地よいキータッチ、美しい画面など、
かなり満足しています。
でも、すぐ熱くなること、ハードディスク容量が80GBなこと、USBが1ポートしか無いことなど、不満を挙げればきりがない。
その中でも、すぐ熱くなるのはちょっと怖いと思って、事務所では、木の板で少し浮かせていました。
ところが、MacFanを見ていたら、良いものを見つけました。

MacBookなどの底面に取り付ける折りたたみ式の足です。
これを付けたら、放熱とキーの角度も改善されるし、Airがもっと浮き上がって見えるかも。
注文してみることにしました。

届いたらレポートしてみます。

2008年に出会った技術

2008/12/27 2:47 PM

 

2008年に出会った技術の中で、今後の当社のソフトウェア開発において、もっともインパクトを与えそうなものを2つご紹介します。

  • Adobe Flex & AIR
  • Seasar2

Adobe Flex & AIR

Adobe Flex & AIRは、Adobe社が提供するRIA(リッチ・インターネット・クライアント)技術です。
RIAというのは、Webでは一般的なFlashの技術を、業務アプリケーションに持ち込むことで、
従来のWebアプリケーションでは難しかった、高度なユーザインタフェイスや帳票印刷、ローカルファイルアクセスなどを
実現するものです。
対抗馬としては、AJAX、MicrosoftのSilverlight、JavaFXなどが挙げられます。
たとえば、これまで、C/S型のアプリケーションを使用していた業務システムのリプレイスを行う際、
Webアプリケーションでは、コンボボックス、編集可能なデータグリッドなど機能不足な面が多々あります。
これらを解消した上で、より使いやすく生産性の高いアプリケーションを構築することが可能です。

Seasar2

これが、今年当社が出会った、最大の革新的な技術。
Seasar2とは、特定非営利活動法人 Seasarファウンデーションが支援する、国内最大のオープンソースコミュニティによるプロジェクト群を指します。
Seasarプロジェクトには、非常にたくさんのサブプロジェクト、製品が存在します。
当社が使用したのは、主にWebアプリケーション開発・上記Flexとの連動に関するものでした。
javaでのWebアプリケーション開発におけるオープンソース利用としては、
SpringFramework、JSF、Strutsを、データアクセスにはHibernateなどが一般的になりました。
当社では、早くから、これらフレームワークを積極的に取り入れ、顧客に提案してきました。
AOP(オブジェクト横断的な処理の実行)、DI(依存オブジェクトの自動挿入)が、これらフレームワークの特長で、
AOP・DI機能により、ビジネスロジックの記述はシンプルになりました。
しかし、これらのフレームワークは、再利用性の高い高度な設計ができる反面、定義ファイルの記述が爆発的に膨らんでいくという問題を抱えています。

Seasar2が目指すものは、「オープンソースという仕組みの元、開発者のゆとりを実現できるプロダクトの開発と提供を通じて、ユーザと開発者とが共に喜びを分かち合える環境実現をお手伝いすること」としており、文字通り、提供される製品には、以下のような特長があります。

  • HOT DEPLOY・・・修正したソースがスグに反映される
  • クラス名・変数名・メソッド名の簡単な規約ベースの連携・・・定義ファイル不要
  • 繰り返し作業の低減・・・当たり前の処理は記述不要

これらの特長は、実際に触れてみると、直ぐに実感できます。

Seasar2は導入実績が少ないということが言われますが、実は、NTT Dataが提供するintra-martで採用されており、こちらの導入実績は1800社だそうです。また、NTT Dataは、イントラマートのS2関係の資産を、Seasar2ファウンデーションに寄贈しているため、つながりは深いと思われます。
「Strutsを使用しています」という開発においても、S2StrutsやSAStrutsを使用している事例は多くあり、大げさなアピールをしなくても、オープンソースがOKな案件への導入は、案外たやすく可能なのではないかと思います。

今年、私たちが使用したのは、S2Container、S2Dao、S2Flex2、S2Dxo、Teeda、そしてEclipseプラグインであるDoltengです。以下に、簡単に紹介します。

S2Container

AOP・DIを司る、基盤となっているコンポーネントです。
ちまたのDIコンテナが、画面一つ、エンティティ一つに対して定義ファイルを必要とするのと正反対に、
簡単な名前付けルールを守っている限り、まるで空気のように存在し、必要なオブジェクトを提供してくれます。

S2Dao

データアクセスを行うコンポーネントです。
これが、もっとも手ごたえのあったプロダクト。
データ検索・トランザクション実行の実装の記述が不要です。
いりません。Connection、ResultSetなど、見なくてすみます。
実装のないインタフェイスのみ書いて、クラス名・メソッド名に基づいたSQLファイルを用意しておくことで、
データアクセスが実行できてしまいます。
また、SQLファイルも、パラメータにコメントで変数名を書いておくと、インタフェイスに宣言したパラメータが使用されます。

S2Flex2

クライアントにFlex・AIRを使用する場合の、Seasar2によるサーバとクライアントのつなぎをやってくれるプロダクトです。
Flexは、XMLによる通信をサポートしていますが、より効率のよいAMF3というプロトコルを持っています。
S2Flex2は、サーバ側のサービスの呼び出し、エンティティクラスとFlex側のActionScript3.0クラスの変換を行います。
これにより、Flexクライアント側は、非同期メソッド呼び出しと同じように処理を記述することができます。

S2Dxo

S2Containerとともに陰で働く、オブジェクト変換コンポーネントです。
クラス設計の階層化が進むと、階層間でのオブジェクト受け渡しの際に、似たような別のクラスに内容をコピーする処理が必要になります。
例えば、クライアントから受け取ったオブジェクトと、データベースに格納するオブジェクト。
S2Dxoは、やはり名前ルールで、同じ名前の変数を自動的に受け渡してくれます。
これも、S2Daoのように、インタフェイスの宣言だけです。

Teeda

HTMLでのプレゼンテーション層を、シンプルな記述で実現するプロダクトです。
DTO(Data Transfer Object)の変数名とHTMLファイルの要素のidを合わせておくと、ブラウザでアクセスした際に、自動的に展開します。
JSF実装なのに、faces-config.xmlが不要なんて。

Dolteng

開発環境であるEclipseのプラグインで、S2プロダクトの典型的な組み合わせのプロジェクトを生成してくれます。
その他、プロジェクトで使用するデータベースにアクセスして、Dao、Dto、エンティティの作成を助ける機能、
S2Flex2でクライアントを作成する際に必要な、画面(MXML)へのサービス・エンティティの追加機能、
などなど、さまざまな局面で、Seasar2開発者を助けてくれます。

まとめ

この二つのテクノロジについては、いつか書こうと思っていたことでした。
私たちが経験したのは、AIRとSeasar2を組み合わせた案件でした。

主にAIR側に、「なんで???」ということがあり、躓いたことがあったものの、
高いユーザビリティを実現し、「必要なところだけ」サクサク開発を進められるという点において、
Seasar2 + AIRは、非常に強力な組み合わせであることを実感しました。
いままでの作り方に比べて、どんなにか、シンプルでストレスの少ない開発が実践できることでしょう。

来年は、今年得たS2とFlexの経験を生かして、さまざまな案件に提案していきます。
また、私の個人的な目標は、S2コミッターになることです。

参考図書:

AR実験#1:タチコマ編

2008/11/14 1:45 PM

 

最近、僕のツボにはまっているAR (Argumented Reality:拡張現実感)技術。

前回、ステージを使った大掛かりなARをご紹介しましたが、
今回は、手元で体感できるものを見つけましたので、試してみました。

AR(拡張現実感)に驚いた!

2008/11/07 12:11 AM

 

AR、「拡張現実」という言葉をご存知ですか?

一昔前、VR(ヴァーチャル・リアリティ)「仮想現実感」という、

コンピュータを利用して、現実には存在しない世界・物体を感じさせる技術が広く紹介されました。

ディスプレイを仕込んだゴーグルや、センサーと反発装置のついたグローブを身に着けて、

コンピュータの作り出した世界を、「現実に近い」感覚で体験できるアレです。

今回、ご紹介するのは、「拡張現実感」のひとつ。

「拡張現実感(Augmented Reality : AR)」とは、現実の感覚(主に視覚)に、

コンピュータによって生成されたイメージを重ねることで、

実際の情報や感覚を拡張する技術です。

実写にCGを合成する技術は、映画を始め、広く用いられていますが、「拡張現実」というからには、リアルタイムで見えることが重要です。

先日見つけた、フランスの都市鉄道のデモンストレーション。

まずはご覧あれ。
(11月7日、スムースに再生できる動画に貼り替えました)

制作会社TOTAL IMMERSIONのクリップ

ステージに、デモンストレイターの手にする紙に、そして、壁から・・・。

録画したものではなく、カメラや人の動きにリアルタイムにCGを重ね、ほぼ何も無いステージ上に、仮想の物体を見せていると思われます。

しかし、聴衆のリアクションから、聴衆もやはりリアルタイムに見えていたのでは?謎。

どこからでも見ることができる立体映像、にしては、大きすぎるし、何より、はっきりくっきりしていますね。

一体どうなっちゃってるんだろう!

さっきのに比べると、身近な感じですが、これも面白いですね。

絶対やってみたい!!!

つづく!



WordPress Themes