質問: 自分が今持っている知識でIOSではswiftかObjective-c,AndroidではJavaを使ってアプリを作ることです。HTML/CSSでどちらのOSにも対応させて作る方法もあるというイメージもあります。 (c言語に触れたことはありますが、素数を出す、確率を出すなどの基本のみ触れました。 MySQLは言語として表示,削除,Viewなど一通り学びましたが、実際に作成などしたことないです) そこでtwitterやEvernoteはjavaで作られてると知ったのですが、javaで作られているものがiOSではswift(もしくはObjective-Cなど)の言語で作られているところが頭の中でこんがらがってしまいました。 どういう風に分けて考えればいいのかわからないです。 想像ですがTwitterの場合、 ・大元のデータベースがありツイートするとそのデータベースに追加される。 ・javaを使いトレンドやニュースなどのデータを作る。 ・アプリ・・JavaとSwiftそれぞれでデータベースにアクセスし、先ほどのjavaが処理したデータを表示やツイートの送信を行う。 ・ブラウザ・・HTML/CSSでアプリ同様データを表示&送信を行う。
回答: 前置きとして、 twitter や evernote が全くその通りかは確証のあるものではないですが、 基本的な考え方として参考となると思い、回答します。 まず、混乱の元になっていそうな用語の整理として、 **アプリ** と一言でいってもいろいろあります。 iOS や Android アプリといったユーザが手元で操作するアプリは **クライアントアプリ** と呼びます。 一方、クライアントアプリからリクエストを受けて処理をして結果を返すアプリを **サーバアプリ** と呼びます。 ご想像の通り、 **クライアントアプリ** では、ユーザが操作して表示したい内容をサーバアプリにリクエストし、結果を表示するのが主な役割になります。 **サーバアプリ** では、 クライアントアプリからのリクエストに応えるために、データに関する処理は基本的に全て行います。 この時、クライアントアプリとサーバアプリでやり取りする仕組みを **API** として用意して実現できるようにしています。 twitter や evernote ではこの **API** が第三者にも公開されていて、 **クライアントアプリ** を作成できたりもします。 * Twitter Developer Documentation * Evernote Developer Documentation これらを利用して **クライアントアプリ** を作成してみると理解が深まると思います。