質問: はじめまして。 現在swiftを勉強しつつ、iOSアプリの開発を目指している初心者です。 現在のところ、メルカリのようなフリマのアプリのように、 サーバー側から出品情報などあらゆるデータを取ってきて、 瞬時に反映するようなアプリを作っていきたいと考えています。 ただ、表題の件について、内部のデータのやり取りにおける仕組みの難しさが 私自身のレベルの範疇をこえているため、 どなたかわかる方教えていただきたく投稿させていただきました。 --- <現状のレベル感> swiftの文法やxcode,uikitの使い方など、初心者段階の知識は一通りあり、 クライアント側のデザインとコードのデータ紐付けはできるようになりました。 ただ、サーバーサイドの知見が全くと言っていいほどありません。 <今回わからない部分> 出品情報などのユーザーデータの管理・操作の方法 保存及び更新、削除の方法をどのように管理していくのがいいのかがわからない。 アプリ内、及びアプリ外とのデータのやり取り方法がいまいちわかっていません。 <詳細> クライアント側: UserDefaults,realm サーバー側: rails等でAPIを作成 or firebase などアプリのデータ連携を担当するツールやフレームワークは色々とあると思うのですが、 構築したいイメージは、 オフライン時には本体(クライアント側)に保存し、オンライン時にサーバー上のデータと同期させるよくあるネイティブアプリの仕組みを構築したいと考えています。 今のところ、私で色々調べた感じだと、 オフライン時には、 ・realmでアプリ内にデータベースを構築するのか ・userdefaultsでアプリ本体に保存するのか のどちらかの方法でデータベースとして保存・更新することなどが可能であり、 またオンライン時には、 ・railsなどでAPIを作成しておき、何らかの形で上記データベースに紐付ける必要がある と認識しております。 そもそもクライアント側でuserdefaultsとrealmって違いがあるのかどうかさえもあやふやな状態ですので、その辺もご考慮いただいた上で、 何かこうした場合に必要な知識と簡単なベストプラクティスのようなものがございましたら、 ご回答をいただけますと幸いです。 目的は、ひとまず現状よくあるようなサーバーとも連携できる フリマアプリが作れてしまえればいいと思っています。 何卒、宜しくお願いいたします。
回答: ローカルデータの表示の方法を悩まれているようですが、そもそも論になっちゃいますが、オフライン時にデータを表示する事はしなくて良い気がします。 フリマアプリなどでは、出品者が値段を変えたり、すでに売れてしまったりと、複数のユーザーがデータを更新する可能性があるので、常にサーバにある最新データを表示するように作るほうが良いと思います。 ■Firebaseの参考記事 もしFirebaseで実装するのであれば、サーバサイドのAPIは実装しなくても良くなります。 この辺の記事を参考にすると、Firebaseの仕様の理解の助けになると思います。 http://qiita.com/ShinokiRyosei/items/f71c73ab8b0de145c5bc その後フリマアプリに必要なデータの構造を設計して、Swiftコードも書き変えていくという流れで開発していくとよいかと思います。 今後、ブラウザでアクセスするWEB画面も視野に入れている場合、javascriptで書けば、サーバサイドAPIはなくても実装できます。 ■プラットフォームに何を選ぶか データをどのデータベースに保存するか(MySQLなどにするか、Firebaseにするか)は、自分がよく知っている物にするというのが、まずはベストプラクティスなんじゃないかと思います。 データベースに関してどれも詳しくないというのであれば、どれか一つを使ってみて感触をつかむのが良いと思います。 ただFirebaseは現状では日本で採用している人は少なく、WEBに日本語資料が潤沢に揃っていない、なかなか人に聞きにくいという面もあります。 参考記事が多い方を選ぶか、開発する言語の種類数やコード量を減らしたいか、などを考えて選択すると良いと思います。