
今回Xcode(エックスコード)初挑戦で、こころの健康チェックアプリを作っています。10月1日くらいに始めたのでもう二ヶ月ほどかかりました。StoryBoard(ストリーボード)の使い方やテーブルビューの作り方など少しづつ理解しています。
やっとTableVew’(テーブルビュー)が一つできました。あと四つ作らないとなりません。
合計でホームページにして5サイト分をアプリに収めなければなりません。
ただ、まだAuto Layoutを使っての画面スクロールさせるのには苦労しております。
それでもひと画面うまくスクローさせることができました。インターネットでもいろいろと調べてはいるのですが、なかなかうまくいきません。
サイトによって扱っているエックスコードのバージョンが違うので、その記事を書いたときには参考になっても、エックスコードやSwift(スイフト)がバージョンアップしてしまうと、コードが変わっていたりします。
そして、新しいバージョンは、前の古いバージョンと互換性があるかというと、変更されたコードは、まず互換性がありません。すぐにエラーとして表示されます。それでも古いコードを新しくしてくれる機能もあり、それで解決することもありますが、中には解決しないものも、どちらかというとこちらが多いですが、あります。
今使っているエックスコードはバージョン11の最新版です。iOS13.2に対応しています。
Swiftのバージョンは5です。
参照した記事によると、スイフトはバージョン2などではまだ安定している言語とは言えなかった、それは3になってもあまり変わっていない、とのことでしたが、今私が使っている5も、"The buijd system has crashed"(ビルトシステムがクラッシュしました)とのエラーメッセージが二度、違うプロジェクト出てました。
最初のエラー発生時は解決できずにまた新しいプロジェクトを作って初めからやり直しました。しかし、また再びこの現象が起きました。
それで、CocoaPodsを使ったライブラリを削除しました。
下記の記事ではCocoaPodsのアンインストールでは解決しなかったと記載されていましたが、私がインストールしていたEurika(エウレカ)は、アンインストールすると、ビルト・システムのクラッシュエラーは出なくなりました。アンインストールしたのはその時唯一インストールしていたエウレカのみでした。CocoaPods自体は残してあります。
サイトによっては
>派生データフォルダー(?/ Library / Developer / Xcode / DerivedDataにあります)をクリアしてXcodeプロジェクトを再起動してください。
>URL:https://codeday.me/jp/qa/20190618/1041176.html
と記載されているところもあります。
なんとか復旧したので、一からやり直さずに済みました。
今は、一番最初のアンケート(属性取得:大まかな住んでる地域、性別、年齢のアンケート)の回答をデータベース(mySQL)へ保存することに取り組んでいます。
データベースに送るには、Swiftから直接ではなく、PHPを介して送ります。
PHPはずっと仕事で使ってきましたので、データベースに送る方法はわかりました。でもまさかSwiftをやっていてPHPが出てくるとは思っていませんでした。
前からPHPをやってきたおかげで、Swiftだけでも大変なのに、新たにまた違う言語を一から勉強せずに済んで助かりました。
それにしても、Auto Layout(オートレイアウト)は、アップルの技術者が取り組んでもなかなかできる人がいなかったというだけあって難しいです。
今作っているアプリは、元はホームページに掲載されているものと同じものです。そっくりそのまま、アプリにしようというもので、アプリならではのページやコンテンツはありません。
今後、せっかく現在地情報がわかるアイフォーンのアプリですから、現在地から近い相談先やお医者さんなどが表示させるようにしてみたいですね。
今までアイフォーンのアプリはMonaca(モナカ)という、HTMLとJavaScriptを使って、ホームページを作る感覚でアプリを作れるサービス(年額:50,000円のプラン)で作ってきたのですが、だんだんと審査が厳しくなってきて、Xcode(エックスコード)のラベルやボタンがついていないと却下されるようになりました。
iOSネイティブボタンやラベルですね。それに、iOSネイティブ機能もついていないといけないようです。
そうなると、Xcodeなどのアップル純正総合開発環境で作ったアプリでなければ、審査に通らなくなっていくかもしれません。
簡単にアイフォーンアプリを作れる事が売りのモナカなどは、アップルからしたらさぞうっとうしい会社でしょうね。アップルからしたら自社のアプリ開発ソフトを使わせたいところです。そうすれば新しい機能をどんどん入れて、開発者に新しい機能を組み込んでもらえ、競争相手のAndroidよりも品質の良いアプリができると思っているでしょうから。