Mac業界の最新動向はもちろん、読者の皆様にいち早くお伝えしたい重要な情報、
日々の取材活動や編集作業を通して感じた雑感などを読みやすいスタイルで提供します。

Mac Fan メールマガジン

掲載日:

移動ログアプリを作ってみよう3

著者: 沼田哲史

移動ログアプリを作ってみよう3

アプリを追加でカスタマイズ

前回は、「マップ・キット(Map Kit)」を使って地図を表示させ、一定間隔でピンを追加する機能をアプリに実装しました。今回は移動距離を計算して、それをツイッターに投稿するという機能を追加してみましょう。

移動したことを検出して、現在地の情報を更新するたびに呼ばれる関数には、新しい場所を表す「CLLocation」というオブジェクトが引数として渡されます。これまではこのオブジェクトの「coordinateプロパティ」を参照することで緯度・経度の情報を取得してきました。このオブジェクトには、ほかのCLLocationとの間の距離を計算する「distance()」という関数が用意されているので、今回はその関数を使って移動距離を計算してみます。

また、iOSに用意されている「Socialフレームワーク」は、わずか3行のコードを書くだけで自分のアプリにツイッターやフェイスブックへの投稿機能を追加できます。今回はこのdistance()関数とSocialフレームワークを組み合わせて使うことで実現させます。

【STEP 1】プロジェクトの設定を追加しよう

Xcodeで前回作ったプロジェクトを開きましょう。まずは左側のナビゲータ領域から、青いアイコンの[Walk Memory]と書かれたプロジェクト名を選択します。

画面中央上部の[General]タブを選択します。そして、画面中央下にある「Linked Frameworks and Libraries」の欄の「+」ボタンを押しましょう。

表示された画面から[Social.framework]を選んで、[Add]ボタンを押して追加します。これでアプリの中でSocialフレームワークが利用できるようになります。

【STEP 2】コードを追加する

画面左側のナビゲータ領域で[ViewController.swift]を選択して、プログラムのコードを書いていきます。Socialフレームワークのimport文を追加して、Socialフレームワークが使えるようにします。

また、距離を計算するための変数を2つと、ツイート機能のためのユーザインタフェイス部品の変数を2つ追加してください。

【STEP 3】関数の実装コードを書く

viewDidLoad()関数の最後に、ツイートボタンを作って画面に追加するためのコードを書きます。52行目のコードで、ボタンが押されると「距離をツイート」という名前の関数が呼ばれるように設定しています。

端末の位置情報が更新されていくたびに呼ばれるlocationManager()関数に、1つ前の位置と現在位置の距離を計算して、距離の変数に追加していくコードを追加します。1つ前の位置は常に最新の位置情報で上書きされます。距離はメートル単位です。

ViewControllerクラスの最下部に、ボタンが押されたときに呼ばれる「距離をツイート()」関数を追加します。この関数の中では、ツイート画面を生成し、ツイート文字列を設定してから表示します。距離の変数にround()関数を使うことで、小数点以下を四捨五入した値が取得できます。

完成したアプリをiPhoneにインストールしてしばらく歩き回ってみました。地図上に何個かピンが立ったところで左上の[ツイート]ボタンを押すと、歩いた距離をツイートできるダイアログが現れました。距離をリセットする機能はまだ用意できていませんが、アプリを強制終了させて起動し直すと、最初から距離を計測できます。

【まとめ】

今回は移動距離を計算してツイートする機能をアプリに追加しました。目標の距離を決めて散歩に出かけて、ツイッターを使いながら健康状態を管理するなど、便利に活用できます。

 

次回のテーマ

考え中…。

※今回のソースコードはMac Fan WEB上の本連載記事内に記載されたURLよりダウンロードできます。こちらを参照して、ぜひXcodeにチャレンジしてみましょう。

【冒険記】

「移動ログアプリを作ってみよう」の全3回で作ったアプリのViewController.swiftの行数はおよそ100行となりました。まとまったアプリを作るためには、100行くらいのコードが必要だといわれていますので、目安にしてみてください。

【冒険記】

この連載ではスウィフトを使っていますが、面白いことに、プログラミング言語が変わっても、コードの行数はそれほど大きくは変わりません。完成したアプリがどれくらいの規模になったのか、皆さんも行数を一つの尺度としてチェックしてみてください。

Dr.さざめき(aka.沼田哲史)

1978年1月生まれ。某大学でプログラミングを教えつつ、ふらっとヨーロッパ旅行に出かけて美味しいものを食べ歩いたり、時折、iOSプログラミングの本を出したり。Mac歴16年。いつかアメリカ西海岸でお昼から美味しいIPAビールを飲みながらプログラミングするのが夢です。Twitter @sazameki