読者です 読者をやめる 読者になる 読者になる

A Day In The Life

とあるプログラマの備忘録

Cocos2d-x でネイティブ連携する方法

Cocos2d-x でゲームを開発していると広告を表示させたり、ランキングを追加したり、課金を入れたり、SNS や Twitter と連携したり、アクセス解析をしたり、など iOS や Android の機能を使わないと実現できない機能があります(このようにプラットフォームと …

Androidでui::ScrollViewの背景が緑色になる時の対処方法

Cocos2d-x(3.4 Final) の ui::ScrollView クラスを使うとAndroidで背景色が緑色になる現象が発生しました(iOS ではこの現象は発生しません)。 こちらのページに載っている方法で解決することができました。 Problems with UIScrollView: Green Background an…

Android のソフトウェアキーボード表示・非表示を検出する

Android でソフトウェアキーボードの表示・非表示を検出する方法です。 LinearLayout クラスの onMeasure メソッド内でビューの高さを測ることでキーボードが表示されているかどうか検出できます。 import android.content.Context; import android.util.Att…

Android でライブラリの追加無しでマルチパート POST する方法

Android SDK には Apache Commons の HttpClient など HTTP 通信するためのライブラリがあらかじめ搭載されているのですがマルチパート POST するためのライブラリがありません。Apache のライブラリをプロジェクトに自前で追加してもいいのですが必要のない…

Android で LocationManager と MapView を連携させる

Android で Google Map を使ったアプリを作成しようとしたのですが、ライブラリに癖があって結構苦労しました。そこで LocationManager を使って MapView(Google Map) 上に位置情報を表示させる簡単なサンプルプログラムを作成してみました。 サンプルプログ…

Javascript 関数の戻り値を Android から取得する方法

Android の WebView を使って Javascript 関数を呼び出すには WebView#loadUrl メソッドを使います。ただしこの方法だと関数の戻り値を取得することができません。 一番簡単で手軽な方法として Javascript の alert 関数を使って WebChromeClient クラスの o…

Android で GPS 衛星からの情報を NMEA 形式で取得する方法

Android 2.0 から GpsStatus.NmeaListener というリスナが追加されました。このリスナは NMEA-0183という形式で GPS 衛星の情報を取得できます。このリスナかなり細かい情報がとれて面白いのでデータを取得するプログラムを作成してみました。 なお NMEA の…

Android の位置情報を確実に取る方法

Android の位置情報は端末や OS のバージョンによって微妙にとれるタイミングやプロバイダがちがうので iPhone にくらべかなり癖があります。中には LocationManager#requestLocationUpdates メソッドを呼んでも30分以上メソッドが呼び出されないなんて事も…

iPhoneとAndroidでちょっとしたデータの保存方法を比較してみる

データベースを使うほど大げさなものじゃなくて、ちょっとしたデータを保存したいときって結構あると思います。 そんな時iPhoneはNSUserDefaultsクラス、AndroidはSharedPreferencesクラスを使います。両者ともにKey-Value形式でデータを保存できます。ただ…

歩行ロボットの実験を通して周期関数としての三角関数の使い方を学ぶ

最近、GLUTによる「手抜き」OpenGL入門やOpenGLを使ってJavaでも3Dを楽しもうを参考にOpenGLの勉強をしています。 その中で歩行ロボットの実験という面白い演習問題を見つけたので腕試しにJOGLで実装してみることにしました。 問題のヒントとして腕や足の振…

メソッドの引数はオペランドのみにする原則(メソッドの引数がクラス設計に影響する)

前回に続きメイヤー著「オブジェクト指向入門 第2版 方法論・実践」で面白い原則があったのでまとめてみました(コード例はJavaで書きました)。 前提 メソッドの引数は2種類ある オペランドメソッドの操作対象であるオブジェクト オプション操作のモード オ…

iPhoneとAndroidのアプリケーション間連携方法を比較してみる

アプリAとアプリBがあり、アプリAでテキストボックスに文字を入力しボタンを押すとテキストボックスの内容をアプリBの画面に表示するサンプルを使って説明します。 iPhoneの場合 iPhone では UIApplication クラスの openURL メソッドを使うと他のアプリを起…

iPhoneとAndroidで真北の取得方法を比較する

この前書いた日経ソフトウエア2010年1月の記事の中でiPhoneとAndroidの電子コンパスについて書いたのですが、紙面の都合上Androidで真北をとる方法を載せることができませんでした。せっかくなので補足の意味も込めてAndroidで真北をとる方法を紹介しiPhone…

Processingでお絵描きをしてみる

最近Processingというお絵描き用プログラミング言語で遊んでいます。 手軽にいろいろできて面白いです。構文はJavaの簡易版といった感じなので、Javaがわかる人だとすぐにプログラムできるようになると思います。 サンプル static final int LENGTH = 400; v…

Google Androidプログラミング入門

Google Androidプログラミング入門江川 崇, 竹端 進, 山田 暁通, 麻野 耕一, 山岡 敏夫, 藤井 大助, 藤田 泰介, 佐野 徹郎アスキー・メディアワークスこのアイテムの詳細を見る 執筆に参加した「Androidプログラミング入門」が今日発売になります。前著「Goo…

Dev Phoneの温度センサはバッテリーの温度を測っているらしい。

Android(HTC Dev Phoneで検証、G1では未検証)の温度センサを試してみました。 気温20℃で33と表示されるのでなんかおかしいと思い、いろいろ調べてみるとインテントレシーバでバッテリーの温度が取れるらしいこと発見しました。もしやこれはセンサーの温度計…

AndroidとiPhoneのUIの実装方法を比較する

使えるUI部品の種類は似たり寄ったりですね。iPhoneはガベージコレクションが使えないのでオブジェクトの開放をしてやる必要があってめんどくさいです。 Viewの種類 iPhoneにはチェックボックスがなく代わりにUISwitchがあるのが面白いです。両者の違いはな…

AndroidとiPhoneのイベントハンドラの実装方法を比較する

両者の大きな違いはiPhoneはInterface Builderでイベントの定義ができるのに対しAndroidはレイアウトXMLでイベントの定義ができないところです。 またiPhoneはselectorという関数ポインタに似た仕組みがあるのでコード上でも割と簡単にイベントの定義ができ…

開発者目線でAndroidとiPhoneを比較してみる

iPhone と Android 両方のアプリ開発を経験したので両者を比較してみます。 技術情報 iPhone iPhone Dev Center iPhone Dev Center(日本語) Android Android Developers Android Developers(日本語) OS iPhone Mac OS Xベース Android Linuxベース 開発言語/…

AndroidとiPhoneの加速度計アプリの実装方法を比較してみる

大きな違いとしてはiPhoneの場合加速度計のみ管理しているのに対してAndroidは他のセンサー(温度計や磁気センサーなど)と一括りにして管理しています。またiPhoneでは加速度計オブジェクトを直接取得できるのに対しAndroidでは加速度計オブジェクトを取得す…

アジャイルソフトウェア開発の奥義 第2版

本屋で奥義本の第2版が出てるのを発見しました。 興奮して中身みたらC++のコードがJavaにかわってただけでした。 もともとコードの7割ぐらいがJavaやったしなんとも微妙...。 アジャイルソフトウェア開発の奥義 第2版 オブジェクト指向開発の神髄と匠の技ロ…

仕事を通して遅延学習の穴を埋めてきた。

5月の連休明けから先週までとあるSIer様の新人研修(Java・UML・オブジェクト指向)のサブ講師をしていました。 そもそも文系学部→システム営業出身でプログラミングの新人研修というものを受けたことがない私のような人間にはすべてが新鮮でした。 クラスパス…

Androidアプリ開発標準を作成してみました。

本格的にAndroidアプリの開発をするとなるとやはり開発標準が必要になると思います。 ガチガチに決める必要はありませんが、開発標準があれば複数人開発にも一定の秩序ができてやりやすくなるかと思います。UI標準D_PAD_CENTERまたはバックボタンで代用でき…

Spring + Hibernate連携メモ

SpringのHibernateDaoSupportクラスのgetHibernateTemplate経由のメソッドはSessionのcloseとflushを自動でやってくれるんですね。 ということは、getHibernateTemplate経由で取得したオブジェクトは分離オブジェクトになりますね。 Spring+Hibernateのセッ…

アノテーション汚染

ここ何日かHibernateAnnotationsを使ってみて気づいたことなんですが、ビジネス層がアノテーションで汚染されてるような気が...。 現在作成中のアプリケーションのレイヤ構成とパッケージ構成はこんな↓感じです。プレゼンテーション |-action ?form ビジネス…

HibernateAnnotationsでフィールドアクセス

Hibernateアノテーションでまたもやハマってしまいました...orz Immutableなクラスを作りたくてフィールドアクセスに変えようとしただけなのになぁ。 Hibernateでgetter/setterアクセスからフィールドアクセスに変更するには通常hbmファイルだと↓のようにacc…

all-delete-orphanがない!

昨日に引き続きHibernateアノテーションの話題です。 EJB3アノテーションのcascadeにはall-delete-orphanがありません。 これがないと1対多の関係で多のオブジェクトを削除してもDelete文を発行してくれません(それどころかupdateメソッドで落ちます)。 この…

相変わらず受身なフレームワークに踊らされてます

Hibernateでイーガフェッチを使うと重複行までとってきてしまいます。 普通、重複行は持ってこないだろと思うのですがそんなに親切ではありませんでした。通常eagerなコレクションフェッチをすると重複が出てしまうため、あなたが期待するような行数にはなら…

EJB3の勉強にもなるHibernateアノテーション

今日は一日中、Hibernateアノテーションと格闘してました。 Hibernateアノテーションに移行してしまえばhbmファイルが必要なくなるので導入するメリットはでかいです。 まずはこちらのページで基礎を勉強してしてます。 HibernateAnnotations::きしだ なおき…

Struts1.3x + Springの連携

ActionにサービスをAutowiringでDIしたいときは通常AutowiringRequestProcessorを使うのですがそうするとStrutsのChainが使えなくなってしまいます。 両方使いたいってときは↓のサイトが参考になります。 Struts(1.2.x)+Spring連携 Struts 1.3.x + Spring 2.…

Spring面白いよ

最近、仕事で本格的にSpringを使うようになってきました。 これがなかなか面白いです。 しばらくSpringの勉強してみようと思ってます。

DispatchActionの拡張ポイント

Struts1.x系のDispatchActionやEventDispatchActionを拡張するなら以下のようにすると良いですよ。 たとえばログ出力処理を共通化するならこんな感じでしょうか。 public class BsaeAction extends EventDispatchAction { @Override protected ActionForward…

コンセプト大事だよね。

最近、Java系のアーキテクチャ整備のお仕事をしています。 整備した環境を展開していろいろなプロジェクトに導入してもらうのが最終目標です。 いろんな人に使ってもらうにあたってターゲットユーザ、どんな人(プロジェクト)に使ってもらいたいのか。世の中…

redirect

今までまったく使ったことなかったんですけど、Strutsでredirectできるんですね。 public ActionForward execute( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { : 何らかの処理 …

SpringとHibernateと時々Generics。

HibernateとSpringの連携を使って汎用Daoを作ってみます。 Daoって同じようなコードであふれることがよくあるのでGenericsを使って整理するのがポイントです。 まずModelクラスを実装します。 public class Product implements Serializable { private Long …

ダークサイドJava

Struts + Spring + Hibernateが魔の組み合わせと言われるのがようやくわかってきました。 とりあえずメモ。 Strutsは実質FormにString型のフィールドしか使えない。Formからモデルに変換が必要。ドメインモデルにするとFormとの変換が超大変。→オブジェクト/…

総称性(Generics)を使って拡張性の高いクラスを作成する。

オブジェクト指向技術を活用していくための考察第3回目です。 今回は型の総称性(Generics)をうまく使って拡張性の高いクラスを作成していきます。 型の総称性はJavaでも5.0から導入されたので最近よく耳にすると思います。 ただ多くの方はコレクションを扱う…

ビジネス・ルールに合わせた独自データ型を活用する(実装編)

オブジェクト指向技術を活用していくための考察第2回目です。 前回の「ビジネス・ルールに合わせた独自データ型を活用する」では実装例を紹介できなかったので、今回は実際にJavaを使った実装例を紹介します。 それではショッピングモールサイトなんかで使わ…

依存関係逆転の原則

依存関係逆転の原則とは 上位のモジュールは下位のモジュールに依存してはならない。どちらのモジュールも「抽象」に依存すべきである「抽象」は実装の詳細に依存してはならない。実装の詳細が「抽象」に依存すべきであるという原則です。 まずはこのクラス…

いろんなフレームワークで実践されているパターン集

エンタープライズ アプリケーションアーキテクチャパターン翔泳社このアイテムの詳細を見るもう少し訳がしっかりしてればなぁと思うところが何点かありましたが、内容は良かったです。 トランザクションとかデータベースまわりのパターンが6割程度占めてまし…

JSFのエラーメッセージはよくわからんです。

Shaleでテキストボックスとボタンを配置した簡単な画面を作成しました。 無事画面も表示されて順調順調と。 しかしボタンを押すと 変換エラーが発生しました. などというわけのわからんエラーが。。。 どこを直したらいいのやらさっぱりわかりません。 格闘…

Long型フィールドのrequiredバリデータが作動しない。

public class HogeForm extends ActionForm { private Long amount = null; public Long getAmount() {return amount;} public void setAmount(Long amount) {this.amount = amount;} } のようなアクションフォームにStruts-Validatorでrequiredを指定しても…

O/Rマッピングとは何か?

HIBERNATE イン アクションソフトバンク クリエイティブこのアイテムの詳細を見る今使ってるFrameworkはデータベースまわりの機能が非常に弱い。 何とか改良したいなと、じゃあO/Rマッピングの勉強してみるかということで読みました。 Strutsインアクション…

パンくずリスト -実装編-

パンくずリスト実装編です。 たとえば以下のような画面遷移をしたとします。 ちょうど矢印の部分がActionForwardになるので、このActionForwardをActionが呼ばれるたびに以下のようにスタックに保存していきます。 こんな感じ。 これを実装していくわけです…

Strutsを深く理解するなら

STRUTS・イン・アクションソフトバンククリエイティブこのアイテムの詳細を見る少し古い内容もありますがStrutsの生みの親が書いた本だけあって内容が深いです。 いままでなんとなく使ってた機能、「あ〜そういうことだったんだ」みたいな発見が沢山ありまし…

ページを指定してバリデーション

ValidatorFormを使用して複数JSPを1Form(ワンビッグフォーム)で管理するとページごとのバリデーションができなくて困ることがあります。 そんな時はValidatorActionFormを使ってやるとバリデーションをActionごとにできるので便利だったりします。 public cl…

なやみの尽きないチェックボックス

Struts、ActionFormのresetメソッドの話題です。 複数画面で1つのActionFormを使用していて、なおかつチェックボックスが複数画面にまたがって混在する時、以下のようにするとうまくいきます。 public class SampleForm extends ValidatorForm { //画面1で使…

四捨五入(JAVA編)

JAVAで四捨五入する時のやり方。 BigDecimal value = new BigDecimal("2.335"); value = value.setScale(2, BigDecimal.ROUND_HALF_UP); 上記例だと結果は2.34になります。 参考 Java(SE) API 逆引き辞典 関連記事 .NETで四捨五入

テストケースについて考える

メソッドベースのテストとシナリオベースのテストにわける。 メソット名は後から別の人が読んでもわかるように名前を付ける。 Javadocコメントにテストの概要と事前条件、事後条件を書く。 テストコードはJavadoc化してテスト仕様書にする。 参考 JUnit 実践…

積極的に改善しましょう。

現在のプロジェクトではStrutsをベースにした独自フレームワークをつかってる。 いろいろ使ってると改善点とかが結構出てくる。 思いつくままに挙げると 基底Actionを作るときはDispacheActionを継承する。 FormはValidatorActionFormまたはDynaValidatorAct…