🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

810閲覧

SWIFTでIOS用の地図アプリケーションを実装してみたい

pegy

総合スコア245

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2019/12/21 16:39

編集2019/12/21 16:39

前置きで申し訳ないのですが、SWIFTは触ったことがなく質問自体が不適切であればご指摘いただきたいのですが以下の状況でSWIFTを学びIOS用のアプリケーション開発に挑もうかを迷っているためご質問させていただきました。

【現状】

  1. PHP/HTML/CSS/Javascriptを初心者なりに2年程度独学で学んでまいりました。
  2. これらの技術を利用して、最近1つのウェブアプリケーションを作り上げることができました。(もちろん、ご専門にされている皆様が見たらめの覆いたくなるようなコードかと思いますが形としては初めて一つのものを作り上げました)
  3. そのアプリケーションはLeafletとOpenStreetMapと言う外部の地図関連のAPIを利用して、地図上の特定の緯度経度にユーザーから位置情報及びその他の関連情報を投稿しマーカをおいてもらいそれをRDBと連携させ、その他のユーザーにそのマーカー付きの地図情報を広く閲覧してもらうものです。

4)自分の趣味の範囲で近しい友人だけに当該ウェブアプリを使ってもらっていたのですが、ことのほか好評なものとなりました。しかしながら、利用してもらっている友人たちか共通の強い要望があり、例えば友人Aはケーキが好きなので、地図上にプロットされているケーキ屋さん(友人BさんやCさんが投稿したもの)をウェブアプリを開いて能動的に探しに行ったりします。しかし同時にAさんの希望としては、たまたま半径500M以内を通りかかった時にケーキ屋さんがあれば通知してほしいと言う受動的な仕組みを作ってほしいとのことでした。実際には地図上にたくさんケーキ屋さんの投稿マーカーがプロットされており評価4以上のお店の半径500M以内をたまたま通りかかることがあればプッシュ通知が来るようなイメージです。

【質問】

上記4)の機能を実装しようと思った場合、調べた結果、ウェブアプリケーションでは難しいかと考えました。
ウェブアプリケーションのままでは上記のように自分が仕掛けようと思うような都合の良いプッシュ通知は実装できないため、個別のアプリケーションをSWIFTで作る必要があるかもと言う結論に至りました。また、少し調べたところジオフェンス(ジオプッシュ)と言う考え方により実現可能性がありそうにも見えましたがSWIFTを勉強したことがなく、IOS用アプリ開発もしたことはないため明確な答えは出すことができませんでした。

A) 実際に上記のような機能(特定マーカーの特定範囲にユーザーが接近した場合、プッシュ通知してくれる)を持ったIOSアプリケーションを作成しようと思った場合SWIFTにより実装することは可能なのでしょうか?

B)また、SWIFTで当該機能を実装することは、一般的な難易度としてどの程度のものなのでしょうか?これは私の能力を定量的にここで表現することができない(間違いなく能力はまだまだ低いですし、初学者もいいところです)のですが、例えば、「個人で開発するようなスケールで使う技術ではない」や、「普通にPHP等を触ったことがある人であればそんなに難解な技術ではない」はたまた「そもそもSWIFTだけで実装できるものではないから甘く考えすぎている。。」等忌憚のないご意見をいただきたいです。
C)また、プッシュ機能以外のベースのアプリケーションとしてはすでにウェブアプリケーションとして保有、運用しているのですが、SWIFTで既存のアプリケーション+特定プッシュ機能を付加するとなった場合には、一般的にイメージとして既存のアプリケーションを活かす方法もあるのでしょうか?それともSWIFTによるIOSアプリ開発においては、例えばベースのアプリケーションをウェブアプリケーションとして保有・運用している場合、一般的に、0ベースから構築するものなのでしょうか?もちろんケースバイケースかと思いますが、例えば上位のようにプッシュ通知機能以外はすでにあると言う状態の場合、全くさらの状態から開発するものなのかもイメージが湧かず。。。

【最後に】

長い文章となってしまい、またお伝えすることがとても下手で、本当に申し訳ございません。
これらの質問の最終的な趣旨としては、これらのご回答の結果からSWIFTを初めて本格的に勉強してみようかと悩んでおります。
最近プログラミングがとても好きになってきたので、次に他のアプリを開発する時に新しい勉強も兼ねて、Javaを少しみたいと思ったところ、このような話が舞い込んできたので、順番を変えてSWIFTに触ってIOSアプリの開発もやってみたいという気持ちが芽生えてきました。
どちらの舵きりをするかにあたって、技術的に可能なのか、また難易度はどの程度のものかをご専門の方に仰ぎ判断したいとの気持ちからご相談させていただきました。

何卒、よろしくお願い申し上げます。

※Android用での開発は現在考慮に入れておりません。また、IOS用アプリケーションをもし開発をして、将来もし公開するにことになった場合厳しい審査がある等のことも聞いたことがありますが、一旦そのような事情の考慮しておりません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

A) 実際に上記のような機能(特定マーカーの特定範囲にユーザーが接近した場合、プッシュ通知してくれる)を持ったIOSアプリケーションを作成しようと思った場合SWIFTにより実装することは可能なのでしょうか?

可能です。

B)また、SWIFTで当該機能を実装することは、一般的な難易度としてどの程度のものなのでしょうか?これは私の能力を定量的にここで表現することができない(間違いなく能力はまだまだ低いですし、初学者もいいところです)のですが、例えば、「個人で開発するようなスケールで使う技術ではない」や、「普通にPHP等を触ったことがある人であればそんなに難解な技術ではない」はたまた「そもそもSWIFTだけで実装できるものではないから甘く考えすぎている。。」等忌憚のないご意見をいただきたいです。

簡単ではないですが、個人で開発できないということもないです。
実装の難易度は、どれほどのものを作ろうとしているのか次第なのでなんとも言えませんが、ユーザーの期待値を満足させられるかどうかのほうが難しいような気がします。
ご提示の機能を実現するには、

  1. アプリケーションが現在位置を常時把握する必要がある
  2. アプリケーションがサーバー (API) に現在位置をそれなりの頻度で送信する必要がある
  3. アプリケーションがAPIからの返り値を解釈して、プッシュ通知 (ローカル通知で実現可能と思いますがリモート通知でも可能) を表示する必要がある

というのが最低限求められるかと思います。Aさんの期待がどれほどのものかわかりませんが、まず前提として、**アプリケーションが起動していないといけません。**何も意識せずに通知を受け取るというのは無理です。
起動さえしていればバックグラウンドにいても位置情報の処理は可能ですが、バックグラウンドに以降したアプリケーションはiOS側の仕様でいつkillされてもおかしくないので、常時稼働を保証することはできません。
何を目的としたアプリケーションで、何ができるアプリケーションか、というのをきちんと説明してユーザーに分からせることも必要です。(裏を返せば、何は目的としていなくて、何はできないか、も)

C)また、プッシュ機能以外のベースのアプリケーションとしてはすでにウェブアプリケーションとして保有、運用しているのですが、SWIFTで既存のアプリケーション+特定プッシュ機能を付加するとなった場合には、一般的にイメージとして既存のアプリケーションを活かす方法もあるのでしょうか?それともSWIFTによるIOSアプリ開発においては、例えばベースのアプリケーションをウェブアプリケーションとして保有・運用している場合、一般的に、0ベースから構築するものなのでしょうか?もちろんケースバイケースかと思いますが、例えば上位のようにプッシュ通知機能以外はすでにあると言う状態の場合、全くさらの状態から開発するものなのかもイメージが湧かず。。。

バックエンド側 (API) は流用するのがよいでしょう。
Web技術をネイティブアプリに載せられる技術もありますので、フロント (Web) も流用可能です。流用せずにSwift (Swift UI / Storyboard) で作成する道を選ぶこともできます。

投稿2019/12/21 17:20

thyda.eiqau

総合スコア2982

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pegy

2019/12/22 08:46

コメントを頂きまことにありがとうございます。 ご回答大変よくわかりました。 実はこれまでIphoneを使用していて、ずっと違和感を感じていたことがあって、立ち上げていたはずのアプリが終了されていることがあリました。自動でタスクキルする仕様がIOSにはあるのですね。今日はそれをいろいろ調べていたのですが、googleで検索した結果、意外と記事が情報が収集できなかったため引き続きどのような仕様(例えばどの程度の時間操作がなければ自動でタスクキルされるかなど)かを引き続き調べてみようと思います。 また、技術的には可能なことそして概ねどのような考え方で実装していくかの糸口のイメージをつかむことができました。 おっしゃる通り当初想定してた完全な形での実装は難しので、可能な範囲で実装するとともにできないことをどのようにユーザーに伝達し適切な利用法を促すかなどが確かに課題かと感じております。 これらの点をゆっくり吟味して、次のステップを検討してみようと思います。 改めて御礼申し上げます。 よろしくお願い申し上げます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問