XojoでWebアプリケーション作成テスト


試しに使ってみたXoJo、前回の記事の宣言どおりwebアプリケーションのライセンスを購入してみた。

しかしやっぱり情報が少ない。

簡単な言語リファレンスは英語だがあるので、まったく調べようがないということはないが、Xojoの作法というか解説したものがないので、こう言う場合はどう表現したら良いのか的な事を調べるのは大変だ。

逆引き的なものがあるとほんと助かると思う。

大まかな事は無料版で分かっていたので早速webアプリを作ってみた。

それにしても生産性が良い。

情報量が少ないと事で調査する時間を含めても、簡単な事なら瞬時にできる。

ライセンス料がかかるというっても.netのように実行環境に費用がかからないのでトータルでは非常に安価でwebアプリケーションを公開する事ができるし、スタンドアローンでビルドすれば作成されたexeを起動するだけで良いので、いろいろ手間いらずだ。

まだ知識的に複雑な事はできないが、今別件で作成しているiOSアプリのアプリサーバーへ記事を投稿するwebアプリケーションを作成してみた。

これくらいの事なら現状のXojo知識でも十分できるくらいXojoは簡単だ。

大まかに言いますと位置情報を取得してアプリサーバーへコメントをPostするだけのアプリだがiOS+Swiftの方は四苦八苦している。

見栄えとか細かい部分はさておき3時間足らずで完成。

おそらく半分は調べている時間なので、経験と知識があれば30分とかでできる内容だろう。

一応iOSアプリでやりたいと思っていた事が簡単にできてしまった。

しかもwebアプリなのでAndroidとかでも使えると思う。

素晴らしいではないか。

とりあえずの完成品は
http://124.41.69.194:8080/
でアクセスできます。
位置情報を取得しますのメッセージが出ましたら許可を選択してください。
(PCだと問題ありませんがiPhone6sのサファリで開くとフル画面表示されない、調査中)

簡単な説明
・コメントを未記入で投稿ボタンを押すとリロード
・GPSの位置情報を元に記事を表示する
・記事を表示する範囲は範囲のところで5段階に設定できる
以上

私のようなサンデープログラマーレベルにはこの安易さは良い、Xojoは費用対効果が大きいシステムである。

追記:2016/3/17
iPhoneのサファリで表示時に画面いっぱいに表示されるように修正。
webアプリの場合はviewportのサイズを合わせないといけないらしい。

 

プログラム初心者による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。
ちょっと悩み中・・・

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