プログラム初心者によるiOSアプリ開発プロジェクト(5)


デバッグ環境準備

開発環境のXcodeは無料だがappストアにアプリを登録するにはdeveloper programに登録する必要があるようだ。
まだ早いが気合を入れて登録してみた。
こいつは有料だ。
それと実機デバッグ用にiPhone本体が必要。
シュミレーターでも良いのだがGPSの最終的な確認やカメラなど使えないので実機があったほうが良いらしい。
以前iPhone6plus(SIMフリー版)を購入したので基本的にはこれを使う。

apple ID関係で登録の際には日本語は使わない方が面倒がないです。
ようやくこれで環境は整ったのでいざアプリ開発を始めたいと思います。

サーバー側アプリケーション作成

まずこちらを先にある程度作らないとiPhoneから投稿も閲覧もできない。
ということでサーバーアプリケーションを作成します。
作成するものは記事を書き込む機能と閲覧する機能を有したアプリ。
そしてデータベース。
それぞれ別々のperlスクリプトでやろうと思いましたが共通部分が多いので1つのスクリプトでやる事にします。
その方がなんとなくスマートかなと思ったからです。
データベースは単純な掲示板なので1つのテーブルで良いかなと。
多少時間はかかりましたが

geo.cgi

が完成。
確定申告のこともあり、この作業にLinuxのテストサーバー構築からあわせると3週間程かかりました。
無報酬のこの作業は自営業の身としては大変厳しい。
学生は良いなぁとつくずく思います。
スクリプトのソースは恥ずかしいのとセキュリティ面から公開しませんが、一応思い通りの動作はしている。

セキュリティホールとか無いか心配w

デザインセンスは無いがgeo.cgiの吐き出すHTMLがそのままiPhoneの画面に表示される事から最終的にもう少しビジュアル面を良くしたい。

検討課題

今回は簡単に目的を果たすために座標データはpoint型を使用したが、本来はPostGISを導入しジオメトリー型を使用しほうが良いかもしれない。

プログラム初心者によるiOSアプリ開発プロジェクト(4)


TableViewという壁

書籍や世のサンプルプログラムなどを試してTableViewの簡単な事はわかった。
しかし自由自在に扱えるまでにはまだまだ経験値が足らず、なかなか難しい。
どんだけやればTableViewマスターになれるのだろうか。

途方に暮れたが電撃が走るがごとく閃いた!
HTMLのままで良いじゃん?
いゃ、良いんじゃね?
むしろそれでいいだろ。
まさに目からウロコだ。開眼した気がする。
きっと私の前世は悪知恵の働く極悪人だったに違いない。

しかし動く事が最優先。
そう、実績が欲しいのです。
つい先ほどまでは記事をJSONとかで取得してとか色々難しい事を考えていましたが、今回はまずは結果はWebサーバーから吐かれるHTMLをそのまま表示してしまえばiOS側のアプリ開発の初心者には難しい部分がかなりなくなるだろ。
そうなれば簡単なブラウザアプリにコメント送信機能を付けるだけ。
なんかどんどんiOSアプリ開発要素が無くなってる気がするが気にしない。

難しい機能は後々レベルアップしたら付加すれば良い。
これくらい単純ならandroid版とかももしかしたら作れるかもしれない。

構築するシステムの全体像

ここでごっちゃごちゃになる前に構築するシステムの全体像をおさらいしておこう。

まずサーバークライアント方式。

サーバー側はwebサーバーで、Nginx+perl+Postgresql。当然OSはLinux。
基本は掲示板。+位置情報他。
古い投稿は自動で削除する。
ユーザー登録などなし、アプリをインストールするだけで投稿できる。
2ch掲示板などでいうキャップ機能のようなものを導入する。
とりあえず自宅サーバーを利用する。
一応セキュリティ面は気にしたい。
他のOSからでも利用できるような構造に。
androidやwindowsタブレット。

クライアント側は動作プラットフォームはまずはiOS、iPhone6など。
結果を表示するのはwebブラウザ。名前やコメントをPostするための機能(ボタン)を付加。
postの際にGPSの位置情報を付加する。
名前などの基本情報はアプリ側に記録できるようにする。
ブラウザ部分を更新するリロードボタンをつける。
基本設定を行うボタンをつける。

以上である。

プログラム初心者によるiOSアプリ開発プロジェクト(3)


位置情報付きBBSスクリプト

perlとphpは業務ではないが私事で利用したことがある。
どちらかと言えばちょっとした文字列を処理する用に多用しているperlの方がなれている。
現在webでは主流のjavaはJavaがまだ出たてのころ、ちょっとかじったが利用する機会がなかったので忘却の彼方へと行ってしまった。
今はだいぶ違っているだろうと思う。

本当はサーバー側アプリもきちんと作らねばならないだろうと思うが、まぁとりあえずまずは動けば良いだろうということで一番なれているperlを使います。
今回はDBも必要だろう。
Postgresqlがライセンス的に良いと思うのでPostgresqlに決まり。
Mysqlは使わない。
これもどちらが優れているとかでなく慣れの問題だ。

webサーバーはapacheが使い慣れているがブログ用のRaspberryPiサーバーで使用したNginxを使う事にした。
この場合なんていうのか?
LAMPでなくLNPP?最後のPは本来はphp。まぁなんでも良いや。
早く実現する為には慣れたものを使った方が良いよね。
理想を言えばTOMCAT+Javaなんだろう。

幸いPostgresqlには経度・緯度を扱える型があるようなので(どんなDBにもあるのかな??)、一番面倒そうな座標の計算などもpostgresqlの方でやってくれそうですし。

次回はまたiPhone側のアプリを検討したい。

プログラム初心者によるiOSアプリ開発プロジェクト(2)


どうやって実現するか?

前回思いついたアプリ、とりあえず仮称?コードネイムを考えたい。
まず日本語にしか対応しない予定なので日本っぽい名前にしたい。
最終的にはappストアに出したいのであまりふざけた名称はダメ。
思ったより簡単に決まらないので、そのまま「Kasyou」とする。
Kasyouを実現するにあたりまずiPhoneだけではできない、もしくは難しい事に気がついた。
そう、インターネットの掲示板のようにメッセージを溜めておくサーバーがいるのだ。
でも、それは掲示板に位置情報を追加したもので良いのでiOSアプリ開発より簡単ではないか??
サーバーアプリケーションを作成するのも大変だし面倒なので、すでにあるwebサーバーにperlやphpで掲示板スクリプトを置けば良い。
これは筆者にとっては比較的簡単に構築できそうだ。
iOSアプリ開発は想像だにしないが掲示板cgiはなんかは昔少し触ったことがあるのでハードル高く無いと思う。
そんで、その掲示板に書き込む。そして読み込んで一覧表示する。
できた!

 

iOSアプリ側をもう少し考察

本で得た知識によるとswiftというものはappleのiOSのアプリ開発では新しい言語らしいのでそれを採用したい。
一覧表示はTableViewってやつで実現できそうだ。
GPS情報は簡単に取れるのかな、サンプルがあれば簡単にできそうだが。
そしてコメントや名前などと一緒にGPSの位置情報をサーバーへPOST送信。
って、そんな簡単にできるのかは不明。
一応見栄えは巷にあるTwitterのクライアントに良くある感じのビジュアルにしたい。
カメラで撮った画像も投稿できると面白そうだが、それは次の段階にしよう。

上記を実現するためのプログラミングをswift関連の書籍を読み考えてみたがTableViewは初心者には簡単にはできなそうだ。サンプル通りにやれば動作するが自在に操るまで理解が及ばない。やはり中年に達した筆者の脳では理解不能なのか、やはり簡単ではない。
GPSやPost送信はサンプル的なものがありそうなのでそれを参考にすればなんとかなるだろう。
問題はTableView。
ちょっと悩み中・・・

小一時間考えてみたが悩んでもはじまらないので次回はサーバー側を考えるとします。

プログラム初心者によるiOSアプリ開発プロジェクト(1)


はじめに

新しい年も始まったことだし、何か新しいことにチャレンジしてみたいと思い始めました。
主に組み込み系以外のプログラミングをしたことがない筆者がiPhone用のアプリの開発を行おう、という無謀なプロジェクトです。
筆者は電子回路設計や基板設計などの延長から組み込み用のマイコンのプログラミング経験(アセンブリ言語バリバリ、C言語などやPerlやLinuxのshellScript程度は多少できます。)はありますが、例えばWindowsアプリケーション開発やiOSアプリ開発などで使用するオブジェクト指向でのプログラミング経験はまったくゼロです。
入門本を買ってはみたもののちんぷんかんぷん状態。
こんな私でもiPhoneアプリ作成などできるのだろうか。
暫くプログラミングがらは遠ざかっており最近は簡単なシェルスクリプトなど組むことはありますが、iPhoneアプリ開発など想像もつかない状態。
何から始めたら良いかもわかりませんが、とりあえずMacはあるので勢いで始めたいと思います。

初回の今回は何を作るかを考えたい。
すでに優れたアプリが沢山あるし二番煎じではそれら既存のアプリの方が何もかも絶対優れていると思います。
やはり現在無いものを作らないと。
こんな沢山あるのに無いものは無いのでは?と思いますが気をとりなおして無い知恵を絞りたいと思う。
まずゲーム系は考えてません。
自分はスマフォのゲームほど人生を無駄に消費しているものは無いと考えているので、多少なりとも役に立つものを作りたい。
とは言えツール系はスキル的に絶対無理。
初心者にはハードル高い。
お仕事効率化アプリは?
すでにありますね、沢山。
私の出る幕なし。

そんなこんなで布団の中で数日考えた結果、流行りGPS機能を使い位置情報付きの簡単な伝言アプリを作ることにした。
以前レジャー目的でお出かけした際に、地元のおすすめのお店やスポットなどをネットで調べるなどしたのですが、どのwebサイトも同じような事しか書いてないしあまり有益な情報を得られなかった経験から、簡単気軽に近所の人に聞けたらなぁという思いからきてます。
まぁアプリをダウンロードして利用してくれる人がある程度いればの話ですが。

簡単に説明するとこんな感じ、

  • iPhoneから位置情報付きでコメントを発信。
  • コメントは近くの人しか見れ無い。
  • みれる範囲はある程度調整できる。
  • ユーザー登録とか無い。(面倒な処理は今回はしない)

です。
わかりづらいかもですが近くにいる人と会話できるメッセンジャーアプリと思ってください。
通勤列車などでも同じ車両に居合わせた人と気軽に会話できたら面白いし暇潰しになるでしょう。
頭を使いすぎたので今回はここまで。
次回はこれをどうやって実現するか考えてみたい。