狠狠撸

狠狠撸Share a Scribd company logo
ACSをベースに1人でスマフ
ォとWebアプリ開発に取り
組んでいた話

Photo By John Shardlow
http://www.?ickr.com/photos/john_scone/493915787/
14年2月19日水曜日
簡単に自己紹介

こういうブログを
書いてます

14年2月19日水曜日

アプリ2本リ
リース
最近の活動

平日早朝+週末で

社内向けに営業支援業務アプリ作ってました

アプリで利用する
企業やユーザ情報
を管理するバック
エンドツール

Titanium Mobile+ACS
14年2月19日水曜日

Node.js+express+Jade+acs-node
ACSとは?
?

Titaniumの開発元のAppceleratorが提供する
MBaaS(エムバース)

?
?
?

MBaaSについて詳しくは技術評論社さんの記事を
http://gihyo.jp/dev/serial/01/mbaas/0002
Parseの方が知名度高いかなぁ??

スマフォアプリのバックエンドの機能で必要になりそうな
機能が揃ってる

?
?

14年2月19日水曜日

当然Titanium Mobileから扱いやすい
Appceleratorが提供するNode.js用のnpmモジュー
ルのインターフェースがTitaniumのそれとほぼ同じな
のでTitaniumの延長線上で気軽にWebアプリも作れる
ACSの管理画面はこんな感じ

14年2月19日水曜日
ACS利用する方法
? TitaniumStudioでプロ
ジェクト設定を行った後
tiapp.xmlを開いて
Enable Cloud
Serviceesの項目の
Enableボタンをポチッ
とする

? Production Keyと
Development Keyの
2つが表示されればOK
です
14年2月19日水曜日

tiapp.xml
ACSのサンプルコードを
ちょっと紹介
?Garry Ing
http://www.?ickr.com/photos/garrtron/4469056722/

14年2月19日水曜日
ある地点の周辺のお店検索
# ACS利用するためのおまじない
ACS = require('ti.cloud')
# 東京駅周辺の緯度と経度
latitude = 35.681382
longitude = 139.766084
# Webの管理画面からお店情報などを登録しておくと
# 以下クエリで東京駅周辺の情報が20件検索できる
ACS.Places.query
page: 1
per_page: 20
where:
lnglat:
$nearSphere:[longitude,latitude]
$maxDistance: 0.01
, (e) ->
if e.success
for place in e.places
Ti.API.info place.name
14年2月19日水曜日
登録済のユーザの
メールアドレスを表示する
# ACS利用するためのおまじない
ACS = require('ti.cloud')
ACS.Users.query
page: 1
per_page: 1
where:
username:”h5y1m141”
, (e) ->
if e.success
for user in e.users
Ti.API.info user.email

14年2月19日水曜日
登録済のユーザ宛にメールする
# ACS利用するためのおまじない
ACS = require('ti.cloud')
ACS.Users.query
page: 1
per_page: 20
, (e) ->
if e.success
for user in e.users
# Webの管理画面からSAMPLEという名前のテンプレートを作成
# テンプレート内にmessageBodyという変数を設定
ACS.Emails.send(
template:'SAMPLE'
recipients:user.email
messageBody:”test mail to #{user.name}”
,(result) ->
Ti.API.info "sendmail result: #{result}"
)

14年2月19日水曜日
直感的にコード書ける
APIが提供されています

?jeffrey james pacres
http://www.?ickr.com/photos/jjpacres/3293117576/
14年2月19日水曜日
良さそうに見えるけどやっぱりそれなりに
落とし穴もあります

たまに出る謎のエラー

標準機能ではオブジェクト単位での一括登録や削除機能がない

14年2月19日水曜日
後者についてはNode.jsをちょっと勉強してacs-nodeと
いうnpmモジュール使えば解決できる
log4js = require("log4js")
log4js.configure appenders: [
?
type: "file"
category: "request"
filename: "logs/request.log"
pattern: "-yyyy-MM-dd"
?
]
loggerRequest = log4js.getLogger("request")
loggerRequest.info "this is request log"
?
# 自作モジュール類の読み込み
path = require("path")
modulePath = path.resolve(__dirname, "lib/geocoder.js")
Geocoder = require(modulePath).Geocoder
geocoder = new Geocoder()
?
serverModulePath = path.resolve(__dirname, "lib/server.js")
Server = require(serverModulePath).Server
server = new Server()?
wait = (item, callback) ->
setTimeout((->
geocodingAPI = "http://www.geocoding.jp/api/"
address = encodeURIComponent(item.address)
url = "#{geocodingAPI}?v=1.1&q=#{address}"
?
geocoder.start(url,(err,statusCode,body) ->
if not err
callback(body,item.clientName)
)
?
), 5000)
clientList =[{"clientName":"xx","address":"xxx"}]

14年2月19日水曜日

act = ()->
# パラメータが無くなっていれば終了
return if clientList.length is 0
param = clientList[0]
geocodingAPI = "http://www.geocoding.jp/api/"
address = encodeURIComponent(param.address)
clientName = param.clientName
address = param.address
url = "#{geocodingAPI}?v=1.1&q=#{address}"
geocoder.start(url,(err,statusCode,body) ->
if not err and body.lat isnt null and body.lng isnt null
clientData =
name:clientName
address:address
latitude:body.lat
longitude:body.lng
loggerRequest.info("client: #{clientName}")
server.confirmClientInfo(clientData,(response) ->
if response is true
loggerRequest.info("#{clientName} already exist!!")
else
server.registClientInfo(clientData,(response) ->
if response is false
loggerRequest.info("FAIL: #{clientName} data is
#{clientData}")
else
loggerRequest.info("success data is #{clientData}"")
)
)
else
loggerRequest.info("error clientName is #{clientName}")
)
clientList.shift()
setTimeout (->
act()
), 6500
act()
使ってる方いましたらお互
い積極的にアウトプットし
ていきましょう!

Photo By Rusty Sheri?
http://www.?ickr.com/photos/rustysheri?/4908212366/
14年2月19日水曜日
おまけ:
Titanium+ACS連携サンプルアプリ

? とても初歩的な内容ですがGitHubに資料あるので興
味ある方こちらご覧ください

? https://github.com/h5y1m141/
streetAcademy/blob/master/4thStep.md

? 上記資料使った少人数制のTitaniumMobile開発のワ
ークショップをたまにやってます

? 詳しくはStreetAcademy(http://streetacademy.com/myclass/443)

14年2月19日水曜日
LT Finish

14年2月19日水曜日

More Related Content

2014 02-19-titanium meetupvol16