iOSでジオフェンスに触れる②

こんにちは増島です! 引き続きジオフェンスについての話をしていきます。 前回の記事はこちらになります。 https://intheweb.io/geofence-ios/ 今回のテーマはXcodeでジオフェンスの動作確認になります。 アプリをデバッグ実行し、Xcodeで位置情報をシミュレートすることによって端末の位置を擬似的に変えることができます。 それでは見ていきましょう。 今回作成したサンプルはこちらに置いてあります。 https://github.com/shushutochako/geofence-sample-swift サンプルの機能 日比谷公園あたりに半径500mで領域を作る 端末が領域内に入ったらラベルで表示 端末が領域内から出たらラベルで表示 シミュレーション内容 東京駅から新橋駅まで車で移動するようなシミュレーションをする この流れで、日比谷公園あたりに作った領域のエリアに入った時と出た時で、ちゃんとラベルに表示されるかを確認します。...

iOSでジオフェンスに触れる①

こんにちは増島です! ポケモンGoがリリースされてしばらく経ちました。 最近ではゲームやO2Oサービスなど色々な領域で位置情報の重要性が増しているような気がします!! 先日iOSでジオフェンスについて触れる機会が有りました。その時学んだことを2回に渡って書きたいと思います。 ジオフェンスとは 仮想的な地理的境界線のことを言います。 ある特定の領域をジオフェンスとして設定し、移動体の侵入、退出をトリガーとしてイベントを発生させることができます。 例えばジオフェンスを使用すると下記のような機能を実現することが出来ます。 1.ある店舗を中心に半径500mで領域を作成する 2.ユーザがエリア内に入った時に店舗のクーポン券を配布する ジオフェンスを使っているサービス ジオフェンスを使っているサービスとしては下記のようなものが挙げられます。 Airウォレット https://airregi.jp/wallet/ ショプリエ https://shoplier.jp/...

AI関連技術を使ったサービスについて

こんにちは増島です!  最近はAI、ディープラーニング、機会学習などのキーワードをしょっちゅう聞くようになりましたね。 あゆたでもちょくちょく話に出るようになりました。 僕も流れに取り残されたくないとは思いつつ、勉強を開始できていない現状です。 それを使って何が出来るのかなどイメージが湧かなかったのでとりあえず取っ掛かりとしてどのようなサービスに使用されているかを調べて纏めました。 AI関連技術を利用したサービス 現状でも事例は膨大にありそうなので、個人的に面白いなと思ったものを挙げています。 AI関連については「機会学習」「ディープラーニング」「コグニティブ・コンピューティング」など色々なキーワードがありますが、 今回は特に分類せず「AI関連技術」と一括りにして紹介します。 この他にも面白そうなものを見つけたら随時追加していきます。 シェフ・ワトソン https://www.ibmchefwatson....

Nifty Cloud Mobile Backendでプッシュ通知のお話

こんにちは増島です! 先日シン・ゴジラを見たのですが、僕の生活圏内の街がことごとく破壊されていたのでとてもショックでした。 話は変わりますが、作成しているアプリでNifty Cloud Mobile Backendを使用しています。プッシュ通知の実装の機会があったので、今回はその話をします! 環境 【ネイティブ】 iOS 【サーバサイド】 Node.js はじめに Mobile Backendのコンソールから手作業でプッシュ通知を送ることもできますが、 今回の例はサーバ側のイベントをトリガーに対象を絞ってプッシュ通知を送る例です。 証明書の登録やデバイストークン取得処理については今回触れません。 それらについては下記のページをご参照下さい。 http://mb.cloud....

Swiftでスライダーライブラリを作って学んだあれこれ

こんにちは増島です! オニドリルにモンスターボールを60個使用しましたが捕獲出来ず、悔しさで眠れませんでした。家の近くにポケストップがあまり無いのでモンスターボールの確保にはいつも必死です。 話は変わりますが、以前iOSのスライダー系のライブラリを公開しました。 その際CoreGraphicsやUIControlなどあまり触れていなかった部分を触ることが出来てとても勉強になりました。 今回は作成を通して学んだ事をiOSのTipsとしてお話します! 公開したライブラリはこちらになります。 https://github.com/shushutochako/CircleSlider UISliderを円形にしたイメージでしょうか! 使い方によってプログレス表示なども出来るようになってます。 UIViewをくり抜く アプリのチュートリアルなどでボタンのヒント表示などで使われているのをよく見ますね! 今回のライブラリだと円形のバーの内側のところで使われています。 internal class TrackLayer: CAShapeLayer { internal init(bounds:...

iOS8での「Hiragino Sans」の罠

こんにちは増島です。 iOS10のリリースがもうすぐですね! エンジニアの方は嬉しさとともに10対応が心配なのではないでしょうか。 サポート対象にするOSはアプリごとに異なると思いますが、ある程度の歴史があったりで10リリース以降も暫くはiOS8もサポート対象にするプロジェクトも多いかと思います。 作成中のアプリでは10リリース以降もiOS8以降をターゲットにする方針なのですが、 タイトルの内容で少しハマってしまったのでお話したいと思います! 新規に画面を作成したところiOS8のみ遷移に時間が掛かってしまうという事象がありました。 今回はサンプルということで、この通り一つUILabelがあるだけの簡単な画面で事象を再現します。 こちらの画面の読み込みにかかる時間を計測してみます! AppDelegate.swift func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { // 起動時の時間を保持する startTime...

iOSのライブラリを宣伝できるサービスまとめ

こんにちは増島です! オープンソースライブラリを作成してGitHubで公開したものの中々スターがつかない‥ なんていうことありますよね! 今回はiOSのライブラリ作成したら宣伝に使いたいサービスをまとめました!! またライブラリ探す場合にも使えるので、是非参考になればと思います。 ライブラリ管理ツールから使用出来るようにする どこかのサイトなどに載せてもらう前にまずはこれでしょうか! 使用する側としてはライブラリは一元管理したいもの。これらのツールに対応することで圧倒的に注目度が変わるのではないでしょうか! ちなみにiOS用のツールはこのようなものがあります。 CocoaPods https://cocoapods.org/ Carthage https://github.com/Carthage/Carthage Swift Package Managerが公式から出たことによって、Swift製のプロジェクトではこれらのツールがどう活用されていくか‥ という感じですがまだまだ使用しているプロジェクトは多いかと思います。...

MongoDBでバッチ処理

こんにちは増島です! 実家の猫が昨日19歳の誕生日を迎えました。月日が経つのは早いものです(*´∀`*) 話は変わりますが、MongoDBを日次バッチで改廃したい要件があったので調べてみました! 概要 今回僕がバッチ処理で実現したかったのが、下記の内容でした。 処理対象のスキーマ Rooms Messages スキーマ補足 Messageは一つのRoomに属する Roomは複数のMessageを持つ 処理内容 Roomsから作成日付が60日前のデータのroomIdを抽出する 1で抽出されたドキュメントをRoomsから削除 Messagesから1で抽出されたroomIdを持つドキュメントを削除 javascriptを渡して実行 MongoDBに対してシェルなどから操作したい時は処理内容を記述したjavascriptファイルを用意してmongoクライアントに渡すのが簡単そうでした。 実行するスクリプト [delete_expiration.js] var expirationDate...

Socket.IO-Client-Swiftでリアルタイム通信

こんにちは増島です。 アプリ内でリアルタイム通信機能を入れようと思い、 折角なので使ったことのないSocket.ioを使ってみました!! 今回はイベントの送信や受信の実装部分を簡単に説明したいと思います! Socket.IO-Client-Swift ネイティブ側のライブラリは「Socket.IO-Client-Swift」を使用しました。 Socket.IO-Client-SwiftはSocket.ioの公式Swiftクライアントライブラリです。 iOS用のクライアントライブラリは他にも「SocketRocket」「SIOSocket」などがあるようです。 https://github.com/facebook/SocketRocket https://github.com/...

コマンドラインで快適生活

こんにちは増島です! アプリエンジニアの方だと、普段Mac OS Xで開発していてもコマンドラインを使う機会の少ない人も多いかと思います。 直接的に必要はなくとも、面倒な作業を効率よくしたいときにコマンドを知っていると便利だと感じます! 今回は僕がよく使うコマンドを紹介します。 wc テキストやファイルの行数を調べるコマンドです。 ファイルを渡すと行数,単語数,バイト数がそれぞれ表示されます。 $ wc aaa.txt 35 66 1722 aaa.txt $ ファイルでなくともテキストをパイプで入力して調べることもできます。 $ echo "aaa" | wc 1...