メーラを立ち上げるブックマークレット作ってみました。



おはようございます。こんにちわ。こんばんわ。
阿部です。


突然ですが、みなさん、「このサイトをメールで送る」みたいなリンクをご覧になったことは一度はあるでしょう。
だいたい、こういったリンクがあるのは、お店や会社の地図ページに貼られているのが多いかと思います。

そのブックマークレットバージョンを作りました。

使い方

1. 下記のリンクをお気に入り登録

このページをメールで送る

2. ブックマークのURL編集

登録したブックマークの編集画面でURLが、

http://d.hatena.ne.jp/ryo_abe?javascript:location.href="mailto:?subject="+document.title+"&body="+document.URL;

となっているかと思いますので、初めの
http://d.hatena.ne.jp/ryo_abe?」を削除し[保存]して下さい。


そしたら適当なページをひらいて、そのブックマークレットをクリックしてみてください。
ほーら簡単。メーラが立ち上がりましたね!!



◎作った経緯

経緯を話す前に、そもそもブックマークレットって方は、下記のサイトをご覧下さい。(古い記事ですが)

http://bizmakoto.jp/bizid/articles/0702/08/news105.html


では、経緯ですが、
みなさん、とあるページを見ている途中で
「あっ、やべ。こんな時間だ。もう出なきゃ。」なんて経験今までにありませんですか?(うんうん、あるある)
「ちくしょう、まだこのサイト見てたかったのにぃ!仕方ない、出先でiPhoneで見よう!」
などとなるかと思います。


このページを出先で見るには、

  • はてブを使う
  • Googleブックマークを使う
  • Read It Laterを使う

などなど、他にも色々あるかもしれません。
確かにブックマークなどする必要があるページであれば、上記のどれかを使えばいいかもしれません。
ですが、「ブックマークするほどでもねぇなーちょっと見て、一度見たらもういらないんだよなー」なんてこともあると思います。


その場合は、単純に「メールでそのページのURLを送る」でいいですね!


ところがどっこい!!!
意外にこれが面倒。

  1. ブラウザのURLエリアからURLコピー
  2. メーラで新規メール作成
  3. URLを貼り付ける
  4. 宛先に自分のメールアドレスを入れる
  5. [送信]

なんだ、この手間は!!メンドクサスギル!!!!!


そして僕はひらめきました。
文頭で述べたような「このページをメールで送る」リンクのような
ブックマークレットを作ればいいのだと。
それで作ったみたという話です。



それでは、また!
良いインターネットライフを!!!

阿部諒が試してみた!『Titanium mobileのARマーカー検出モジュール」編 その1

どうも、おはようございます。こんにちわ。こんばんわ。
阿部です。

はい今日も、既に恒例となってきました、
「阿部諒の試してみた!」シリーズです。


んで、今回は、先日の記事で紹介したTitanium mobile用に
ARマーカー検出モジュールを作ったという記事(拡張現実感)を見つけましたのでそちらを試していこう思います。


そもそもARとは?

ARとはAugmented Realityの略で、「拡張現実感」または「拡張現実感」という意味です。
架空の世界に現実を再現する「バーチャル・リアリティ」とは違い、
現実の世界に架空の物体などを人工的に提示することを AR と呼びます。
AR マーカーとは、AR(拡張現実感)を実現するためのバーコードなどのパターンのことです。

  • anasonic 3D VIERA AR Greeting

こちらは、PanasonicVIERAのキャンペーンのために作ったARアプリですね

  • マーカーが印刷されたAR(現実拡張)名刺「AR Business Card」

これは、まさに僕が作ろうと思っているやつで名刺の裏にARマーカを印刷しておき
iPhoneのカメラやWebカメラから覗くとARが動くというものです。

AR Business Card from James Alliban on Vimeo.


では早速インストールしてみよう

こちらの記事を参考しながら進めていきます。

  • 1. サンプル動作用プロジェクト作成

予めサンプル動作用Titanium mobileのプロジェクトをTitanium Developperで作っておく。
僕は今回用に「ARsample」名前でプロジェクトを作成しました。

  • 2. 本モジュールのビルド
$ cd ~/works/                                                         // 任意のディレクトリ移動
$ git clone git://github.com/atsusy/tiarmarker.git // 本モジュールをgitからcloneする
Initialized empty Git repository in /Users/rabe/works/tiarmarker/.git/
remote: Counting objects: 291, done.
remote: Compressing objects: 100% (210/210), done.
remote: Total 291 (delta 95), reused 222 (delta 60)
Receiving objects: 100% (291/291), 18.57 MiB | 1.36 MiB/s, done.
Resolving deltas: 100% (95/95), done.
$ cd tiarmarker
$ ./build.py                                   // ビルド

本来なら、ここでスマートにビルドが終わり、
参考記事にあるようにcom.armarkerti-iphone-0.1.zipという
ファイルが生成されるのですが、
ビルド時にエラーが発生し、すんなりとは行きませんでした。

$ ./build.py
      :
/Users/rabe/works/tiarmarker/Classes/ComArmarkertiModule.h:7:21: error: TiModule.h: No such file or directory
      :

「ファイルがねぇぜ」って言ってます。

  • 原因

インストール済みのTitaniumとインストールしようとしたモジュールの定義バージョンが違かったため。

  • 対応

gitでcloneしたディレクトリ直下にxcodeの設定ファイル(titanium.xcconfig)があるので、
そこに記載されている、TitaniumのSDKのバージョンを書き換えてあげたところ正しくビルド出来ました。

$ vi titanium.xcconfig
----------------------------------------
//
//
// CHANGE THESE VALUES TO REFLECT THE VERSION (AND LOCATION IF DIFFERENT)
// OF YOUR TITANIUM SDK YOU'RE BUILDING FOR
//
//

// TITANIUM_SDK_VERSION = 1.6.0
TITANIUM_SDK_VERSION = 1.6.1  // 1.6.0から1.6.0修正

//
// THESE SHOULD BE OK GENERALLY AS-IS
//
TITANIUM_SDK = /Library/Application Support/Titanium/mobilesdk/osx/$(TITANIUM_SDK_VERSION)
TITANIUM_BASE_SDK = "$(TITANIUM_SDK)/iphone/include"
TITANIUM_BASE_SDK2 = "$(TITANIUM_SDK)/iphone/include/TiCore"
HEADER_SEARCH_PATHS= $(TITANIUM_BASE_SDK) $(TITANIUM_BASE_SDK2) $(TITANIUM_BASE_SDK3) // 修正
----------------------------------------

$ ./build.py
-------------------------------------------------------------------------------------
=== BUILD NATIVE TARGET tiarmarker OF PROJECT tiarmarker WITH CONFIGURATION Release ===
Check dependencies


** BUILD SUCCEEDED **

Build settings from command line:
    SDKROOT = iphonesimulator4.3

=== BUILD NATIVE TARGET tiarmarker OF PROJECT tiarmarker WITH CONFIGURATION Release ===
Check dependencies


** BUILD SUCCEEDED **
-------------------------------------------------------------------------------------

ビルドが完了し、めでたくcom.armarkerti-iphone-0.1.zipが生成されました。

  • 3. 生成されたファイルをコピー

「2.」で生成されたcom.armarkerti-iphone-0.1.zipをサンプル動作用プロジェクトのディレクトリ直下にコピーして下さい。

$ cp -p com.armarkerti-iphone-0.1.zip ~/iPhoneApp/ARsample/

これでインストールは完了です。つまづかなければ簡単ですね!


サンプル動かそうぜ!

cloneしたモジュールの直下にあるexample/app.jsでサンプル動作用のディレクトリにあるapp.jsを上書き

$ cp -p example/app.js ~/iPhoneApp/ARsample/Resources/app.js

サンプルアプリを実機へインストールし、実行したが、
ソッコーアプリが落ちてしまった。。。


なぬ。。。!?!?

さて、この後どうなる!?!?!?
つづく。






つづきは、こちら↓
阿部諒が試してみた!『Titanium mobileのARマーカー検出モジュール」編 その2(完結編)

TitaniumMobile iPhone/Androidアプリ開発入門

TitaniumMobile iPhone/Androidアプリ開発入門

HTMLとJavaScriptでiPhone/Androidアプリが作れる『Titanium Mobile』を試してみた!


どうも、おはようございます。こんにちわ。こんばんわ。
ご機嫌いかがですか。阿部です。


突然ですが、iPhoneアプリObjective-C(C/C++)でしか
作れないと思っておりませんが!?!?
いいえ、そんなことはございません。
Objective-C(C/C++)、以外にもC#やAS3.0、JS×HTML×CSSなどでも作れるのです。

HTML/CSS/JavaScript(Titanium Mobile、PhoneGap)

今回はですね、その中でも皆さんおなじみのJS×HTML×CSSで開発が出来る
『Titanium Mobile』を試してみました!


Titaniumを使うメリット/デメリット

  • メリット
    • なんて言っても、みんなが知ってるJS×HTML×CSSが開発が出来るので開発速度の向上する
    • JavaScriptをサポートしているため、jQueryYahoo! UI Libraryなどの豊富なJavaScriptフレームワーク/ライブラリ資源を活用出来る
    • Objectice-Cでの開発では不可能だったメモリ管理が自動化出来る(細かなメモリ管理が出来ないのでデメリットでもあります)
  • デメリット
    • メモリ管理ができない
    • Objective-Cによる開発に比べて実現できる範囲が制限されている(と思う。グラフィックの制御とか?)



Titaniumがサポートしている機能

    • テーブル、ボタンなどデフォルトUI
    • ファイルシステムへのアクセス
    • GPSによる位置情報の取得(GoogleMapなど)
    • 画像や動画などメディアプレイヤーの利用
    • HTTP通信などのAPI
    • SQLiteをベースにしたローカルストレージの利用
    • 加速度センサのAPI



さーて、では実際の実装方法について

と書いてみようと思いましたが、@ITさんやgihyo.jp、とてもご丁寧に書かれていますので、
そちらをご覧頂いた方がよろしいかと思います^^;


最後に標準のサンプルソースをいじったものを載せておきます。
簡単なソースなんで少し読めば分かるかと思います。

// 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 controls tab and root window
// (1つめのタブとウィンドウの生成)
//
var win = Titanium.UI.createWindow({
    title:'Dear developper',
    backgroundColor:'#111',
    textAlign:'left'
});
var tab = Titanium.UI.createTab({
    icon:'KS_nav_ui.png',
    title:'Tab 1',
    window:win
});

var label1 = Titanium.UI.createLabel({
    color:'#aaa',
    top:0,
    height:220,
    text:"Let's enjoy SmartPhone Application Develop!!",
    font:{fontSize:45,fontColor:'#0000ff',fontFamily:'Helvetica Neue'},
    textAlign:'left'
});

var label2 = Titanium.UI.createLabel({
    bottom:1,
    height:100,
    color:'#aaa',
    text:"From @RyoAbe",
    font:{fontSize:20,fontFamily:'Helvetica Neue'},
    textAlign:'right'
});

//  add label
win.add(label1);
win.add(label2);



//
// create controls tab and root window
// (2つめのタブとウィンドウの生成)
//
var win2 = Titanium.UI.createWindow({
    title:'Tab 2',
    backgroundColor:'#fff'
});
var tab2 = Titanium.UI.createTab({
    icon:'KS_nav_ui.png',
    title:'Tab 2',
    window:win2
});

var label2 = Titanium.UI.createLabel({
    color:'#999',
    text:'I am Window 2',
    font:{fontSize:20,fontFamily:'Helvetica Neue'},
    textAlign:'center',
    width:'auto'
});

win2.add(label2);


//  add tabs
tabGroup.addTab(tab);
tabGroup.addTab(tab2);


// open tab group
tabGroup.open();


んでこれが出来上がったやつ↓↓

TitaniumMobile iPhone/Androidアプリ開発入門

TitaniumMobile iPhone/Androidアプリ開発入門

Twitter連携Webサービス「ひみつぼくん」がリリースされました


Twitter連携Webサービス「ひみつぼくん」がリリースされました。
(僕はTwitterの連携部分などプログラムのお手伝いをさせてもらいました〜)

どんなものかというと、

自分のヒミツをひみつぼくんにつぶやいて、その代わりに誰かのヒミツをみんなにつぶやいてあげる

というものです。

あなたの溜まりに溜まったヒミツをひみつぼくんにつぶやいてみては?

映画「漫才ギャング」のスペシャルファンサイトリリースしました


映画「漫才ギャング」のスペシャルファンページをリリースしました。
(って言っても、リリースされたのは一ヶ月前なんですけどね)
ツイッターと連携してて映画のレビューが出来ます。





画面をでかくするとこんな感じに。
(ドン・キホーテともタイアップしてます)



Twitter投稿フォーム



一覧ページ(リロードするとフキダシがランダムに変わるんです)



他にも人気ランキングページや



ボケツッコミ診断などもあって、色んなコンテンツが満載です。




映画の放映は、3/19だそうです。
スペシャルファンページはこちらから

Google App Engine for Python で WordPressを動かす


こんばんわ。
@shibukawa さんからバトンをもらい、今年初めて参加したアドベントカレンダーで記事を書くことになりました。


今回は、GAE/PythonWordPressが動かせないかなと思い調べてみました。

■ "pypress4gae" とやらでやれるらしい

web2py上で動く、pypress4gaeというオープンソースWordPress風なBlogが作れるらしい

■入れてみよう

1. pp4gaのダウンロード

$ git clone http://github.com/mdmcginn/pp4gae.git

2. web2pyのダウンロード、解凍

$ wget http://www.web2py.com/examples/static/web2py_src.zip
$ unzip web2py_src.zip

3. pp4gae側のものをweb2py側へコピー

$ cp pp4gae web2py/applications/
$ cp web2py/applications/pp4gae/app.yaml web2py/
$ cp web2py/applications/pp4gae/routes.py web2py/

4. app.yamlの修正

1行目を任意のアプリケーション名に変更

$ vi pp4gae/app.yaml
application: [アプリケーション名]

5. GAEにアップ

$ ./appcfg.py update web2py

6. Email/PassWordの変更

デプロイが完了後したら、ブラウザで確認するのだが、
初めてのログインはEmail/PassWordともに[admin]でログインをする。
http://アプリケーション名.appspot.com/
Email/PassWordを変更し、次のログインからは新しいパスワードでログインをする。

7. 感想

こんな簡単に出来ると思わなかったですなぁ。
なんかでも、けっこうモッサリモッサリしてる。。

ちなみにこれが出来上がったやつ。
http://rabe-weblog.appspot.com/




次のバトンは、@flag_boy さんに回します。

辞書を構造体っぽくアクセス出来るならリストでも出来るんじゃね?と思って調べてみた。

@shimizukawaさんの過去のBlogに pythonで辞書に構造体っぽくアクセスするメモ at 清水川Web という記事があった。
内容としては題名通り辞書に対してのアクセス、

In [1]: dic = {"a":1, "b":2, "c":3}
In [2]: dic["a"]
Out[2]: 1

を、

In [3]: dic.a
Out[3]: 1

なんていう風に構造体っぽくアクセスするためには?ということが書かれている。
方法としては、組み込み型のdictを継承し、
__getattr__というスペシャルメソッドをオーバーライドしてアクセス方法を変えるというものだった。


この記事を見て僕が思ったのが、listについてもコレが出来るのでは?と思った。
じゃあ、やってみようぜ!


基本的なソースは、pythonで辞書に構造体っぽくアクセスするメモ at 清水川Web の記事と一緒。

In [1]: class ListMapper(list):
   ...:     def __getattr__(self, index):
   ...:         if index in self:
   ...:             return self[index]
   ...:     def __setattr__(self, index, value):
   ...:         self[index] = value
   ...:         
   ...:         

In [2]: lists = [1,2,3,4] 

In [3]: mylist = ListMapper(lists)

In [4]: mylist[1]
Out[4]: 2

In [5]: mylist.1
------------------------------------------------------------
   File "<ipython console>", line 1
     mylist.1
            ^
SyntaxError: invalid syntax

__getattr__メソッドが呼ばれる前に、シンタックスエラーになるというオチでした。。
なんか、方法があるのかもしれないけど><
でも、__getattr__って使い道によってなんか色々出来そう!もっと調べてみよ〜