Skip to content

{ Author Archives }

Androidカスタムコンポーネントのススメ

はじめに
Androidアプリケーションの機能実装のアプローチとして、コンポーネント(Component / Control、Widgetと称すこともあります)を拡張していく方法があります。特にコンポーネントの振る舞いに紐づく機能は、それをActivityクラスに実装するよりコンポーネントに実装する方が、全体的にシンプルなコードになることがあります。
例として、必須入力チェック機能付きEditTextコンポーネントを作成してみます。
※いつもの如くeclipseは英語版のままなので、適宜日本語に置き換えてください

開発手順

Androidプロジェクトを作成します。プロジェクト名は「CustomComponent」、パッケージ名は「jp.tworks.android.customcomponent」としました。パッケージ名は後に使いますので覚えておきましょう。

EditTextに必須入力チェック機能を付けるために、必要な属性を考えてみます。EditTextが必須チェックを行うか否かのフラグ(boolean)と必須チェックエラーを検出したときのエラーメッセージ(String)があれば良さそうですね。

さっそく属性を定義します。/res/values/attrs.xml を追加します。
/res/values からコンテキストメニューを開き、[New] –> [Other...] を選択します。

Android XML Values Fileを選択します。

ファイル名に「attrs.xml」を入力したらFinishをクリックします。

attrs.xmlを以下のように編集します。

1
2
3
4
5
6
7
8
9
<?xml version="1.0" encoding="utf-8"?>
<resources>
 
<declare-styleable name="ValidEditText">
<attr name="required" format="boolean" />
<attr name="required_message" format="string" />
</declare-styleable>
 
</resources>

declare-styleable name=”xxxxxxxx” のxxxxxxxxは、これから作成するカスタムコンポーネントのクラス名を指定しておきましょう。

次にカスタムコンポーネントのクラスを作成します。プロジェクトにクラスを追加します。srcからコンテキストメニューを開き「New」–>「Class」をクリックします。

Package名を「jp.tworks.android.customcomponent.widget」、クラス名を「ValidEditText」、継承元クラスをAndroid標準の「android.widget.EditText」としました。

ValidEditTextクラスのコンストラクタを定義しましょう。widgetには3タイプのコンストラクタがありますが、ここではそのうちの1つ(引数が2つのバージョン)を定義します。

1
2
3
4
5
6
7
public class ValidEditText extends EditText {
 
public ValidEditText(Context [...]

Tagged

双方向Bindingが可能なAndroid Binding v0.45を使ってみた

前置き
Android Bindingが0.45にバージョンアップしていたので試してみたところ、何と双方向Bindingに対応しているではないですか!…とTwitterにつぶやいたら@nakajiに「blogに書け!」と言われたので、纏めてみようと思います。
はじめに
Android Bindingって何?ですが、一言で言うと「ViewとModel層を祖結合にしてくれるライブラリ」ってところです。これを使うとどう素敵になるの?という前置きは、@nakajiがコチラに書かれていますのでご参照ください。@nakajiの記事にもある通り、昔はView–>Modelへの片方向Bindingのみがサポートされていましたが、v0.45ではView<–>Modelの双方向Bindingが実現出来ていました。スバ、ラッシィ。
事前準備

Androidの開発環境(eclipse+Android SDK)を整えておく
Android Bindingのサイトから android-binding-0.45-update.jar をダウンロードしておく

開発手順

Androidプロジェクトを作成します。AndroidBindingSampleと名付けました。

事前にダウンロードしておいた android-binding-0.45-update.jar をプロジェクトの外部ライブラリとして参照追加します。プロジェクトの「Property」ダイアログを開き「Java Build Path」を選択し「Add External JARs…」ボタンを押下します。

android-binding-0.45-update.jar を選択します。

プロジェクトに参照が追加されました。

次に画面を作り…たいのですが、その準備として、画面に表示する文字情報をリソース(string.xml)に定義します。

<!–?xml version="1.0" encoding="utf-8"?–>
 
Android Binding
Enter your Height
Enter your Weight
Calc BMI

画面を作りましょう。…とその前に何のアプリケーションを作るかを決めていませんでした。@nakajiの記事と比較しやすいように、入力された身長と体重からBMI値を計算し表示するアプリケーションにします。画面に身長(EditText)、体重(EditText)、計算ボタン(Button)、BMI計算結果(TextView)を貼り付けます。貼り付けついでに、EditText:hintプロパティとButton:textプロパティに、string.xmlで定義した文字列を設定しておきます。

layout.xmlの内容はこんな感じです。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:binding="http://www.gueei.com/android-binding/"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
[...]

Tagged

「はじめてのWindows Phoneプログラミング」執筆しました

参考書「はじめてのWindows Phoneプログラミング」を執筆しました。蜜葉たんと共同執筆です。

http://www.kohgakusha.co.jp/books/detail/978-4-7775-1661-2

タイトルの通り、これから”はじめて”Windows Phoneプログラミングをする方向けの内容になっています。
アプリを出している人が読む本じゃないんだからねっ!
さておき、立ち読みして良かったら買ってくださいねー。

Tagged

アプリ内テーマのすすめ

Windows Phone Advent Calendar 20日目の記事です。
■はじめに
 Windows Phoneのアプリケーションに、アプリ内テーマを適用する方法を紹介します。参考文献はコチラです。
 
 複数の画面を持つアプリケーションで、各画面に配置しているボタンやチェックボックスなどの配色をカスタマイズしつつ、全体で統一したいということがあります。画面毎/コントロール毎にプロパティを編集してもできますが、色味を変えたくなった時に、その都度すべてのコントロールのプロパティを編集しなければならないのは大変なことです。
  
 Androidは自身のアプリケーションの外観を統一させるために、Style Resourceという機能があります(Android UI前身のSWINGがその機能を持っており、それを継承していると思われます)。Style Resourceにデザイン要素を定義し、それを参照している画面はStyle Resourceのデザイン定義に従って描画を行います。
 
 Windows Phoneで同じことができないかと調べたところ、冒頭の文献を見つけました。
■開発手順

アプリ内テーマを適用したいプロジェクトに「Theme」フォルダを追加します。

Themeフォルダに「System.Windows.xaml」と「ThemeResources.xaml」を追加します。

ファイルは以下からダウンロードしてください。
System.Windows.xaml
ThemeResources.xaml

「System.Windows.xaml」と「ThemeResources.xaml」のビルドアクションを「Resource」に設定します。

App.xamlを編集します。

1
2
3
4
5
6
7
8
<!–アプリケーション リソース–>
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Theme/System.Windows.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>

App.xaml.csを編集します。

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
32
33
34
35
36
using System.Collections;
 
public App()
{

InitializeComponent();
 
// 以下を追加する
MergeCustomColors();
 
InitializePhoneApplication();

}
 
// テーマをマージするロジック
private void MergeCustomColors()
{
var dictionaries = new ResourceDictionary();
 
[...]

Tagged

今年最後の「たのアプ」やりますよー

今年最後の「楽しいアプリ制作の会」を開催します!
テーマ「楽しいLTの会 2011」。関西圏の勉強会主催者さんを中心に、楽しいLTセッションを行う催しです。
詳細な告知はコチラでやってます。参加お待ちしてますー。

GeForce 9600M GT / WDDM 1.1 on BootCamp Win7

メインマシンのMacBook Pro 17′ (2009 Mid)のWindows 7 (BootCamp)で、ずっと困ってたことが解決したので備忘録を残します。
ココからドライバをダウンロードしてインストールで解決しました。
何が困っていたかというと、BootCamp(Mac OS X 10.6)が当ててくれるGPU(GeForce 9600M GT) のドライバがWDDM 1.0だったんですね。WDDM 1.0で何が困るかというと、Windows Phone 7開発で使うエミュレータがまともに動かないのですよ。エミュレータがまともに動く要件に、WDDM 1.1対応のGPUってのがありまして。
まぁ普段の開発は実機があるので手詰まりになることはないのですが、勉強会などでプロジェクタ越しにUI/UXを見せたいときはエミュレータが要るのですよね。12/4に開催する「Windows Phone Hackathon in Osaka」に間に合ってホッとしています。

次はコンソーシアムだ!

次はコンソーシアムでしゃべります!
先端IT活用推進コンソーシアムというのがありまして、それの分科会の「ユーザーエクスペリエンス技術部会」の「第1回「ユーザーエクスペリエンス技術部会」&
「ネットデバイスアプリケーション部会」合同キックオフセミナー」(長っ!)でiOS/AndroidのUI/UXをしゃべります。
セッションの講師陣が、僕以外はみなさん凄いですよ。っていうか僕だけ浮いてません?そしてセッションの順番が非常に良くない(汗)。UI/UXについて、いつも興味深く分かりやすいお話をしてくださるMicrosoft川西さんの後ってのがとってもプレッシャーです(汗)。でもいい機会を頂けたので、精一杯やってみようと思います。

HTML5 プログラミング生放送勉強会 第11回@大阪 でしゃべってきた

11/19に開催された「HTML5 プログラミング生放送勉強会 第11回@大阪」で、JavaScriptのスマートフォンWebアプリ開発フレームワーク「Sencha Touch」についてのセッションをやってきました。
詳細なレポートはプロ生主催者の5jzさん(@jz5)のレポートを見て頂ければと思います。
今回は資料作成に時間をかけることが出来ずSencha Touchの上辺しか語れなかったのですが、セッション後のアンケートを見るとさほど悪くないというか、厳し目に見ても普通くらいの評価でした。コーディングしつつデモを見せつつ〜という流れで進めたのが、分かりやすさに繋がったのかな。。。
最後に、今回のお話を下さいました、プロ生主催者の5jzさん(@jz5)、なかじさん(@nakaji)本当にありがとうございました!またよろしくお願いします。
資料は以下です。(slideshare)
Sencha Touchをさわってみた
View more presentations from Tomonori Ohba

第2回 名古屋情報セキュリティー勉強会でしゃべってきた

だいぶ遅くなりましたが、11/5(土)に開催された「第2回 名古屋情報セキュリティー勉強会」でiOS審査についてのセッションをやってきました。内容はこの1週間前に行われた「第23回まっちゃ139勉強会」と同じです。
2週間続けてのセッションだったので、伝えるべきポイント(スパイラルのあたり)を伝えきれたかなと思います。それからセッションは伝えられてナンボっていうのが第一ですが、前後のセッションとうまく絡めつつ纏めつつという流れが組めると聞いてる人の興味を引けたりするので、竹森さん@KDDI Labsセッションとの関係性も意識してみました。
今回は懇親会にも参加し、いろいろな方と談笑させていただきました。セッション内容について「面白かった」と言ってもらえましたが、具体的なツッコミが無かったのはそれ以上も以下も無かったということかな…次回はもっとストーリーを考えていかないといけませんね。
最後に、登壇の機会をくださったまっちゃだいふく師匠、ありがとうございました!
ということで発表資料は以下です。(slideshare)
iOSの審査なんてくそくらえさ!
View more presentations from Tomonori Ohba

プロ生 第11回@大阪 でしゃべるよー

ここのところ、他所の勉強会でしゃべりたくりの @tworks です。
11/19 HTML5 プログラミング生放送勉強会 第11回@大阪でHTML5ネタをしゃべりますー。Twitterで @nakaji さんから突如話題を振られ、プロ生主催者の5zjさん(@jz5)とやりとりして、何故か喋ることになりましたw
ネタなんですが「Sencha Touch」を喋ってみようと思ってます。理由は普段からスマホ系に携わっているので・・・です。さわってみて面白くなかったら、別のネタにするかもしれません(汗