プログラミング

0から始めるTitanium Mobile 第2回 簡単なiPhoneアプリを作成する

結構簡単にツール系であればできそうですね。

勉強不足でよくわかっていないところもありますが・・資料見ながらでもある程度作れそうです。またJavascript自体はサンプルがたくさんありますのでそれらの移植は結構簡単に行えると思います。

何が簡単なのか考えてみて Objective-C とかだと日本語の変換とか面倒な感じですがJavascriptだとそのへんに沢山サンプルが落ちているのでカナを全角→半角に変更するアプリを作成してみます。

Screenshot 1

 

STEP1. 新規作成を行う

まずは、導入したTitatium Mobile の管理画面から「New Project」で新しいプロジェクトを作成します。このあたりは前回Android版のサンプルで実施したのと同様に行います。

今回はこの初期のプロジェクトの内容を変更して作成します。

STEP2.ファイルの修正

app.js ファイルを拡張します。

サンプルなどであるようにWindowの描写は別のJsファイルに移します。10行目にある「url : ‘main.js’,」にて呼び出しを定義しています。今回はAndoridのコンパイルは行いませんがiPhone要の部分については一応制御しておきます。

[cc lang=”javascript” tab_size=”2″ lines=”30″ width=”512″]
// this sets the background color of the master UIView (when there are no windows/tab groups on it)
Titanium.UI.setBackgroundColor(‘#000’);

// create tab group
var tabGroup = Titanium.UI.createTabGroup();

// create base UI tab and root window
var win1 = Titanium.UI.createWindow({
url : ‘main.js’,
title:’半角カナ変換’,
backgroundColor:’#fff’
});

var tab1 = Titanium.UI.createTab({
window:win1
});

// iPhoneのステータスバーなどの変更
if (Titanium.Platform.osname == ‘iphone’ ){
// ステータスバー
Ti.UI.iPhone.setStatusBarStyle(Ti.UI.iPhone.StatusBar.TRANSLUCENT_BLACK);
}

win1.hideTabBar();
tabGroup.addTab(tab1);
tabGroup.open();

[/cc]

 

STEP3. メイン処理の記述

次に今回のメインのJSとなる main.js を載せておきます。

[cc lang=”javascript” tab_size=”2″ lines=”122″ width=”512″]
// メイン処理

var win = Ti.UI.currentWindow;
var view = Ti.UI.createView();

// 全角カナを半角カナに変換する関数 toHankaku()
// http://www.openspc2.org/reibun/javascript/business/004/
function toHankaku(motoText)
{
han = “アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォャュョッ、。ー「」゙゚”;
txt = “アイウエオカキクケコサシスセソタチツテトナニヌネノ”;
txt+= “ハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォャュョッ、。ー「」  ”;
str = “”;
for (i=0; i= 0) c = han.charAt(n);
str += c;
}
return str;
}

var label1 = Titanium.UI.createLabel({
color:’#999′,
text:’半角カナの表示’,
font:{fontSize:20,fontFamily:’Helvetica Neue’},
textAlign:’center’,
width:’auto’
});

var button1 = Ti.UI.createButton({
title: ‘半角’,
height: 32,
width: 80
});

var button2 = Ti.UI.createButton({
title: ‘コピー’,
height: 32,
width: 80
});

var button3 = Ti.UI.createButton({
title: ‘クリア’,
height: 32,
width: 80
});

var ta1 = Ti.UI.createTextArea({
value: ‘アイウエオ’,
height: 150,
width: 300,
top: 5,
font:{fontSize:20,fontFamily:’Marker Felt’, fontWeight:’bold’},
color:’#888′,
textAlign:’left’,
appearance:Titanium.UI.KEYBOARD_APPEARANCE_ALERT,
keyboardType: Titanium.UI.KEYBOARD_DEFAULT,
returnKeyType:Titanium.UI.RETURNKEY_DEFAULT,
borderWidth:2,
borderColor:’#bbb’,
borderRadius:5,
borderStyle:Titanium.UI.INPUT_BORDERSTYLE_ROUNDED,
keyboardToolbar:[button3,button1,button2],
keyboardToolbarColor: ‘#999’,
keyboardToolbarHeight: 40
});

view.add(ta1);
view.add(label1);
win.add(view);

ta1.focus();

// イベントの定義
button1.addEventListener(‘click’, function(){
ta1.value = toHankaku(ta1.value);
});

// クリップボードにコピー
// http://code.google.com/p/titanium-mobile-doc-ja/wiki/guides_platform_clipboard
button2.addEventListener(‘click’, function(){
Ti.UI.Clipboard.setText(ta1.value);

if (Ti.UI.Clipboard.hasText()){
Ti.UI.createAlertDialog({
title: ‘クリップボード’,
message: Ti.UI.Clipboard.getText(),
buttonNames: [‘OK’],
cancel: 0
}).show();

} else {
alert(‘Hey there was no text.’);
}
});

button3.addEventListener(‘click’, function(){
ta1.value = “”;
});

// Text area events
ta1.addEventListener(‘change’,function(e){
label1.text = ‘change fired, value = ‘ + e.value + ‘\nfield value = ‘ + ta1.value;
});

ta1.addEventListener(‘return’,function(e){
label1.text = ‘return fired, value = ‘ + e.value;
});

ta1.addEventListener(‘blur’,function(e){
label1.text = ‘blur fired, value = ‘ + e.value;
});

ta1.addEventListener(‘focus’,function(e){
label1.text = ‘focus fired, value = ‘ + e.value;
});

[/cc]

全ての解説は行いませんがざっと見ていきます。

まず、最初に別だししたmain.jsの先頭では  var win = Ti.UI.currentWindow; として操作を行うWindowsを手に入れています。これによりapp.js側での情報を引き継いで動くことになります。

function to Hankaku(motoText) については、http://www.openspc2.org/reibun/javascript/business/004/ を参考にそのまま頂きました。このようにJavascriptは過去の遺産が色々あると思うので開発が楽になるかと思います。使われ方は通常の javascript同様に使うことが出来ます。

その後、ボタンの定義があり、テキストエリアの定義があります。各々そのなかでプロパティを定義しておくことでデザインを行うことが出来ます。今回は、キーボードと連動して動くToolbarの定義を行っています。これはテキストエリア(ta1)のプロパティで定義されています(行65-68)

各種のイベントは addEventListener() 関数を記述します。これは各コンポーネントにメソッドとして定義していきます。今回はボタンを押すとクリップボードに内容を入れたり、先程の Hankaku() 関数により半角にしたりと行った動作をそれぞれのボタンに記述していきます。1

 

STEP4.

さてどうでしょう?実際にはほとんどコードを書くことなしに使えるアプリを作ることが出来ました。実際には起動画面を変更したりアイコンを作ったりと色々しないといけないと思うので後ほど変更していきたいと思います。

勉強不足で今回は出来ていませんが次のことはどこかでしたいと思います。

  • 「ひらがな」→「半角カナ」の変換を加える
  • 起動時にクリップボードの内容を、テキストエリア(ta1)に入れる (これはできそう)
  • 起動時にテキストエリアにフォーカスを当ててキーボードを常に表示させる。Objective-Cで言うところの [textField becomeFirstResponder]; に該当するのはどこで定義?
  • 起動画面の変更
  • アイコンの変更
  • 実機への転送
  • AppStoreへの登録

まだ他にもたくさん出てきそうですが次回以降少しづつ行っていきたいと思います。ただこのアプリは完全に被っているアプリがAppStoreにありますので(^^; このままではリジェクトされそうなのでなにか機能を付ける必要がありますね。

 

 


0から始めるTitanium Mobile

第1回 Windows開発環境(Android) の構築

第2回 簡単なiPhoneアプリを作成する

第3回 簡単なiPhoneアプリを作成する(2)

  1. label1 は単純にデバック用に配置しているだけのため特に動作上意味はありません []

0から始めるTitanium Mobile 第1回 Windows開発環境(Android) の構築

0から始めるTitanium Mobile開発環境

というわけで興味津々なTitanium MobileなのですがWindowsでも利用出来るようにセットアップしたいと思います。Macの場合にはiOSのSDK環境がサイトからあったので気楽だったのですがWinodowsの場合には何も無いのでAndroidSDKの準備からしないといけません。いちおう次にはTitanium mobileで簡単なアプリを作ってアップしてみたいと思います。

 

STEP1 Android SDK の導入までの流れ

▼ 【初心者向け】Android SDKインストール手順 2011年1月版!(windows版) – smartgoods.me
http://smartgoods.me/2011/01/android_sdk_install/

コチラの記事を参考に導入を行いたいと思います。簡単簡単とおもったら意外な罠があり時間をつかいました。

▼ Android SDK 3.0(R10)インストーラーバグ対応版
http://www.hlplus.jp/php/blog/index.php?UID=1298718926#

”JDKが認識できない画面を一度Backで戻って、再度同画面に進む”とJDKが何故か認識されるようです。

というわけでJavaのJDKをなんども入れなおして痛い目を見ました。

  1. Java JDKをOracleのサイトからダウンロードして導入 (jdk-6u25-windows-i586.exe)
  2. 環境設定で、「JAVA_HOME=C:\Program Files\Java\jdk1.6.0_25」 と指定
  3. 環境変数で、「PATH=%JAVA_HOME%bin;~~」を追加
  4. Android SDKのインストーラーの実行
  5. 上記のJDKが見つからない問題は、一つ前の画面に戻って再度実行することで回避
  6. AndroidSDKインストーラーが終了すると「Android SDK and AVD Mange」rが自動起動するので「All」を選んで実行
  7. [Close]が表示されたら、次にパスを環境変数に追加する「C:\Program Files\Android\android-sdk\tools;C:\Program Fi
    les\Android\android-sdk\platform-tools」の二つのパスを追加

image

STEP2 Titanium SDK の導入までの流れ

次に本命のTitanium SDKを導入してみます。ダウンロードサイトからイメージを落とします(http://www.appcelerator.com/products/download/)にアクセスすると自動的にダウンロードが始まります。Titanium Developer.msi

  1. インストーラーを起動します。
  2. 「次へ」で進んでいけば問題ありません。導入先程度しか選択の余地はないので迷うことはないと思います。
  3. 導入が終わったら次は 「$ copy $ANDROID_SDK/platform-tools/adb.exe $ANDROID_SDK/tools」をしておきます。

 

STEP3 サンプルアプリを動かしてみる

  1. プログラムファイルから実行をしてみます。
  2. image
  3. 次に左上の  人形のアイコン(左から三個目)をクリックしてAndroidSDKのパスを通しておきます
  4. image
  5. 新規にプロジェクトを作成してみます「New Project」をクリックします。太字の箇所は気をつけて作ります。
    • ProjectType : Mobile
    • Name : kana
    • App id:  info.roguer
    • Directory: c:\tmp\android
    • Company : http://roguer.info
    • Titanimu SDK Version: 1.6.2 1
    • image
  6. 「Target&Project」を選択して「Emulator」タブを選びます。
  7. 画面下部の「SDK」「Screen」を選んでエミュレータを起動します2
  8. image
  9. タブが二つあるアプリが起動することが確認できます。(( エミュレータは起動に時間がかかるので一度起動したらそのままにしておいたほうが良いです ))

 

サンプルアプリケーションをいじりながら作りたいものを作っていきたいと思います。しかしながら正直Androidの端末を触ったことがないからさっぱり使い方がわからないという罠w

ダウンロードのぞけばここまで文章かいて2時間程度。眠いので続きはまた今度。

 

第1回 Windows開発環境(Android) の構築

第2回 簡単なiPhoneアプリを作成する

第3回 簡単なiPhoneアプリを作成する(2)

関連情報リンク

今回はただの列挙ですがリンク先のサイトには数々の整理された情報があります。

…………………………………………………………………………………………………
▼ 連載:Titanium Mobileで作る! iPhone/Androidアプリ|gihyo.jp … 技術評論社
http://gihyo.jp/dev/serial/01/titanium

…………………………………………………………………………………………………
▼ 無料で読めるTitanium Mobileの書籍風PDF「Titanium MobileではじめるiPhoneアプリケーション開発」 | ke-tai.org
http://ke-tai.org/blog/2011/04/21/titanium-mobile-iphone-pdf/

…………………………………………………………………………………………………
▼ 「Titanium Mobileで始めるiPhone / Androidアプリ開発」のメモ – sub usuilog;
http://d.hatena.ne.jp/usuihiro1978/20110225/p1

…………………………………………………………………………………………………
▼ Windowsで環境変数をいじらないでTitanium mobileを使う « kwLog
http://blog.makotokw.com/2011/03/10/windows%E3%81%A7%E7%92%B0%E5%A2%83%E5%A4%89%E6%95%B0%E3%82%92%E3%81%84%E3%81%98%E3%82%89%E3%81%AA%E3%81%84%E3%81%A7titanium-mobile%E3%82%92%E4%BD%BF%E3%81%86/

…………………………………………………………………………………………………
▼ 何がなんでもTitanium MobileでKitchenSinkを起動したい人の覚書(Windows) – Cherenkovの暗中模索にっき
http://d.hatena.ne.jp/Cherenkov/20110112/p1

…………………………………………………………………………………………………
▼ Titanium MobileでAndroid向けの「Run Emulator」に失敗したときに見るまとめ – CH3COOH(酢酸)の実験室
http://ch3cooh.jp/index.php/tips/titanium-mobile/run-emulator-for-android/

…………………………………………………………………………………………………
▼ Titanium BBS(JP unofficial)
http://ti.masuidrive.jp/

…………………………………………………………………………………………………
▼ Titanium mobile で開発を始める時に役立つ情報のまとめ » astronaughts.net
http://astronaughts.net/?p=204

  1. ここで正しいバージョンにしておかないとエミュレータ欄になにも表示されませんでした []
  2. iOSと違いかなりのパターンが有るみたいでこのあたりは非常に大変そうですね>Android []

[vim] Blogit.vimでVimからWordPressに投稿する

これはVimエディタのプラグインであるBlogit.vimからの投稿している。やはり使い慣れたエディタで文章をかけるのは一番いいと思う。ブログエディタ(という名称が正しいのかわからないが)もHTMLを書かなくてもいいという利点もあるがWordpressはそもそもある程度改行とかテキストのままでもその用にしてくれるのでそれほどHTML形式で投稿しても神経質にならなくていい。

先日まではVimpress.vimを使用していたが下書きが出来ないのでこちらのBlogit.vimに乗換をしてみた。下書きはサーバに保管したほうがなにかと便利だ。最終的にはiPhoneから投稿するかもしれないしどこからも参照できたほうがよい。ただ通信ができな事もあるのでローカルの管理もあるには越したことがないのだが。

blogit.vim – Blogit – SymLink Me

This script for vim provides some commands to list, edit and publish articles on a wordpress blog.

使い方自身はサイトを見て頂ければそのとおり。

設定内容はいつもどおり.vimrc に記載する
[cc lang=”vim” width=”520″]
let blogit_username=’Your blog user name’
let blogit_password=’Your blog password. Not the API-key.’
let blogit_url=’https://your.path.to/xmlrpc.php’
[/cc]

過去記事のリストアップと編集画面のスクリーンショットを掲載する。
:Blogit ls (これで過去の投稿から選択)

:Blogit edit

またこのプラグインですが投稿時の時間が標準時の問題がありこちらのブログで説明がされています。そのままだと9時間先に予約投稿されていますので注意。

st.Prestage

blogit.vim、便利ですね♪
ただ前回の変更だけではバグがあり、
なぜか投稿がすべて9時間後になってしまっていました。

ちなみに画像は”up!”というアプリで投稿していて、簡単な操作でwordpressに画像をアップしてそのURLを取得できるおすすめのツール。(まさにこのアプリのiPhone版を作りたいのですが・・)

Up! 窶鐀 a photo uploader.

“Up!” is a small Cocoa application that can resize and sharpen photos and upload them to a blog software via the MetaWebLog API.

VimShellをMacVimで使ってみようとしたがエラーが出てしまった(解決)

2010.10.17 解決しました。記事は最後に追記しています

VimShellをMacVimで使えるようにしようと思って設定したのですがうまくいかず。
Windows側では便利に使わせてもらっています。


エラーメッセージ: ターゲットがリスト型内の要素よりも多いです。

MacVimは、Custom Version 7.3 (KaoriYa 20100902) がベース。
VimShell, VimProc は今日の段階で git clone で取得したもの。
VimProcはコンパイルが必要とのことなので ~/.vim/autoload 以下に配置しています。

./proc.so
./vimproc/parser.vim
./vimproc
./vimproc.vim

このVimShellは普段はWindowsで使用しているのですがほんとに便利でエディタとシェルを行き来擦る必要がある人には是非おすすめしたいものですね。

追記:2010.10.17

Twitter経由でご連絡いただいてモジュール自体は悪くないことがわかりました。ありがとうございます。

  • http://twitter.com/splhack
  • http://twitter.com/ShougoMatsu

素早くレスを(しかもTwitter経由で)いただけて嬉しかったです。原因は、.vimrc の設定でした。この定義ファイルはWindowsで利用している物でした。どうもMacVimは若干修正が入っておりその箇所を治すことで事なきを得ました。したがってMacVimを定義ファイル(.vimrc)を利用されている限りにおいてはこのような問題はなさそうです。差がある箇所が日本語の設定関連でなんだかよく分からないですが。
日本語の設定である endcoding=utf-8 が必要な模様です。

[cc lang=”vim”]
MacOS Xメニューの日本語化 (メニュー表示前に行なう必要がある)
if has(‘mac’)
“set langmenu=japanese

if exists(‘$LANG’) && $LANG ==# ‘ja_JP.UTF-8’
set langmenu=ja_ja.utf-8.macvim
set encoding=utf-8
set ambiwidth=double
endif

endif
[/cc]

追記:2010.10.17

@splhackさんから追加で教えていただきましたが、encodingが指定されない場合にはディフォルトでUtf-8とのことでどこかで設定されているのではないかということ。:scripnames で読み込んでいるファイルが確認できるとの事です。まだ確認出来ていませんが(^^;

[vim] vim で WordPress に投稿するプラグイン「Vimpress : Manage wordpress blog posts from Vim 」

Vimの拡張 Vimpress : Manage wordpress blog posts from Vim

なかなか面白そうですね。
普段Vimをよくエディタとして利用するのでこの手のプラグインは大好きです。いつもMacからブログを書くときにはEctoを使用しています。それでも最近は hiro45jp さんのブックマークレットの威力もあってHTMLで書くのにも不自由がなくなってきました。

Vimpress – Manage wordpress blog posts from Vim : vim online

Vimpress is a nifty plugin for Vim which allows you to publish and edit posts on your wordpress blog. link: Full Article…
Big Sky :: vimからWordPressにブログを投稿する(ちょっと改造してBXRにも対応かも

基本的な修正は文字コード周りですが、カテゴリの取得方法をMTからmetaWeblogに変えて、BXR: Blosxom XML-RPC Interfaceにも対応してみました。 link: Full Article…

上記のVimpressからTarでプラグインを取得します。Version 0.91 ですね。その後、BigSkyさんのサイトから修正パッチをダウンロードします。

# patch -p0 vimpress-0.91-mb.diff

上記のコマンドで適応できます。解凍したvimpressのディレクトリのしたで実施します。次に plugin / syntax 以下のファイルを導入します。(適宜適切な箇所に導入すれば良いですがわからない場合には、/Applications/MacVim.app/Contents/Resources/vim/runtime/ ) 以下の各ディレクトリの下に配置します。

設定として runtime/plugin/blog.vim の中の定義を編集します。

enabletags = 1
blogusername = ‘login’
blogpassword = ‘password’
blogurl = ‘http://patth.to.your.blog/xmlrpc.php’

上記の内容を自身のブログの内容に即して修正します。
さて起動したら早速してみましょう。

:BlogList
投稿されているブログのリストが表示されます。ステータスが、公開されているのか下書きなのかがわからないのが残念ですね。
blog.vim (_Applications_MacVim....esources_vim_runtime_plugin) - VIM.png

記事上で「Return」キーを押すと編集画面に入ります。
blog.vim (_Applications_MacVim....esources_vim_runtime_plugin) - VIM-1.png

:BlogNew
自動的にカテゴリとかはリストされます。後は通常のエディタのように使用して書いていきます。
[無名] - VIM.png

:BlogOpen id
ブログの記事番号が分かっている場合にはこれで直接開けます。

:BlogSend
記述したブログを投稿するのはこのコマンドで投稿します。

.

簡単に普段使用してるエディタからブログの記事がアップできるとなれば結構便利ですよね。最後に経路が違うといえば違うのですがしたいことは似ているEvernote+Wordpressの連携。こう言うのもいいですよね。自分の普段使用している「書く」物とブログの「書く」は統一したいと思うのがあたりまえだと思うので。

WordPress 窶コ EverPress ≪ WordPress Plugins

EverPress is an automatic RSS posting plugin primarily designed to integrate with the information capturing service, Evernote. This plugin allows Evernote users to automatic post their shared notebooks to WordPress. link: Full Article…
上部へスクロール