今年からプログラミングを学び始め、現在swift歴3ヶ月です。
テックアカデミーでswiftを学び、最近初めての仕事をもらえることになりました。
しかし仕事を探す中で疑問に思ったことがあります。
何回か仕事に応募した際、「サーバーサイドのプログラミングはできますか」と聞かれました。
自分で調べた限りではjavaやpythonがそれに当たると考えられるのですが、
iPhoneアプリ開発をする際はどの言語を使ってサーバーをいじれば良いのでしょうか。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答5件
0
ベストアンサー
そうだねぇ、スマホを使った質問者さんにとって分かりやすそうな例を考えてみよう。
例えばSwiftを使ってパズルゲームを作るとするじゃん?
そのパズルゲームは早く正確に解けば高いスコアが出てスマホ内に保存される。
でも、折角ハイスコアが保存されるんだから皆で見せあって自慢したいじゃない?
だからプレイヤー達のスコアを集計、ランキングにして表示して、
上位入賞者には豪華景品…なんてサービスにしたら面白そうじゃない?
でも、各スマホの中にあるハイスコアのデータを何処
に、どうやって
集計するか。
各スマホはインターネットには接続出来るけど、他のスマホの情報を吸い上げる事は出来ない。
そんなこと出来たら、私はあなたのスマホを簡単に乗っ取れることになるからね。
そこで一般的にはこんな手段を使う。
インターネット上の特定のマシンを情報置き場として広く公開する。
そしてその特定マシンへのアクセス情報はパズルゲーム内に埋め込むから「ハイスコア送信」ボタンを押すとそのマシンに保存するという仕組みを作る。
これはクライアントサーバモデル(クラサバ)と呼ばれる手法。
より具体的に言えば、WebサーバーとかAPIサーバーと呼ばれる仕組み。
以上を踏まえて質問への回答。
サーバーサイドのプログラミングはできますか
他の質問者さんが見当をつけているように、サーバーサイドのプログラミングといえば……
クラサバの、特にWebサーバーを指す事が多い。
技術的にはHTTPという規格に準拠した通信を待ち受けるプログラムを動作させるマシンを構築する。
このHTTPはインターネットの仕様でがっちり規格化されている。
iPhoneでSafari等のブラウザを立ち上げて他のWebサイトを閲覧するような場合、裏では全てこのHTTP通信を利用して通信している。
他の手法や技術でやってやれない事はないけれど、
一般的にはスマホアプリのデータを共有するためにはWebサーバーを構築する技術が必要。
学生なら「出来ますか?」の問いにはNoと答えることになるかも知れないけど、親和性が高くて夢が広がるから積極的に勉強してみたうえで「興味がありますので是非作ってみたいです!」と答えられると良いかもしれないね。
どの言語を使ってサーバーをいじれば良いのでしょうか
確かにJavaやPythonってのはサーバーサイドプログラムでよく用いられるけど、
実はWebサーバーたる条件ってのは言語とは直接関係がない。
その条件は下記
- マシンのバックグラウンドプロセスとして起動し続ける
- HTTP通信を待ち受ける
- HTTP通信に従って情報の受け渡しを行う
これが出来れば言語は問わない。
Webサーバーとしてよく見られるPHP、Ruby、Java、Node.js、Pythonは広く使われているけど。
その気になればC言語、C++、GO、LISP、Haskellといった意外な言語も全てHTTP通信のモジュールが存在するからWebサーバーを構築することが可能。
それくらいHTTP通信は出来て当然の世界になってるわけだ。
例えばニコニコ動画は多数のユーザーがアクセスしてくる為に、速度が必要だからC++で書かれてるんだったはず。
去年の勉強会だったかで見知ったけど、ドワンゴが別の言語(ScalaやElixir)での負荷を検証してたりしてたね。
とにかく、気になった言語を見つけてWebサーバーを作ってみる事をオススメするよ。
言語はマジで何でもいいから、有名どころの内から適当に選ぶ程度でいいと思う。
実際の業務は様々な要因で、サービスに適した言語を選択せざるを得ないから、○○以外触れませんってのと、
一つの言語がそれなりに触れれば、他の言語も簡単にそれなりのレベルまで上達するから。
投稿2017/07/26 23:54
編集2017/07/27 02:47総合スコア21158
0
何回か仕事に応募した際、「サーバーサイドのプログラミングはできますか」と聞かれました。
アプリ開発ではスマホアプリからサーバのAPIを叩いてサーバとの連携をするということがよくあります。
面接ではAPI等のサーバ側の開発もできますかと聞いていると思います。
iPhoneアプリ開発をする際はどの言語を使ってサーバーをいじれば良いのでしょうか。
これはプロジェクトによって異なります。JavaだったりPythonだったり他の言語もあります。
応募前にこの会社はサーバサイドは主にどの言語で開発してるか調べると良いかもしれません。
投稿2017/07/26 05:07
編集2017/07/26 05:10総合スコア222
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
ネットワークシステム(ネットワークで接続された複数の機器で構成されて機能するコンピュータシステム)は、利用者が利用する装置(クライアント:パソコンだったり、iPhoneのような携帯電話だったり、様々)と、クライアントからの要求に対して様々なサービスを提供するシステム群(サーバ:ネットの向こう側にある)から構成されます。クライアントもサーバもコンピュータであり、様々プログラムを実行します。
例えばWebサイトを見る場合、クライアントではWebブラウザ等のプログラムが実行され、サーバではWebサーバのプログラムや、データベースを検索するプログラム等が実行されます。
実行される場所はクライアントとサーバに分けられるので、クライアントで実行されるプログラムの事を「クライアントサイド」のプログラム、サーバで実行されるプログラムの事を「サーバサイド」のプログラムと呼び分けます。
「サーバーサイドのプログラミングはできますか」というのは、というのはwebサーバ、データベース、PHPなどの分散環境の知識を持っていて、要求に応じて適切なプログラミング環境・プログラミング言語を使い分けながらプログラム作成やシステム構築ができるのかという問いだと思います。
もちろん、サーバ側も標準的な構成(LAMP(Linux, Apache, MySQL, PHP)など)の場合が多いですし、様々なパッケージもありますので悲観することはありませんが、iPhoneアプリ開発よりも相当レベルが高いです。
サーバサイドのプログラム構築の仕事が来たら、その時にはすでにサーバの基本的なソフトウェア類はインストールされていて、その中でプログラム開発をするしかありません。 自分の好みでプログラム言語を選べると思わないほうが良いと思います。(技術レベルが上がって、サーバの設計を任される立場になれば、話は別ですけど)
投稿2017/07/26 06:06
総合スコア6915
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
「iPhoneアプリ開発のサーバーサイド」
→様々な言語がつかわれるのでこれといった特定はできません。
この質問はたとえて言えばInternet ExplorerでWEB画面を表示するのにどんな言語を使ったらよいか、と聞いているようなもの。
WEBサイトでたとえるとブラウザがサーバーに問い合わせてHTMLを返せばWEBのサーバサイドプログラムといえます。実現手段(=言語)はなんだっていい。
teratailがどんな言語で書かれているかしらないが私のブラウザはこのページをちゃんと表示している。
iPhoneアプリはブラウザの位置にあたります(実際iOSのSafariもiPhoneアプリの1種だし)。
iPhoneアプリ(androidアプリも同じ)が通信して必要な情報をちゃんと返せればサーバはどんな言語をつかってもいい。
ちなみにブラウザ(クライアント)とWEBサーバの場合はhttp/httpsという決め事(プロトコル)に従って情報をやりとりするが、iPhoneアプリ(クライアント)とサーバともに自作する場合はこの決め事すらも自分できめちゃっていい。
ただ良く使われるプロトコルとか、サーバーサイドで比較的よく使われる言語というのは存在しますが。
投稿2017/07/26 05:18
総合スコア276
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
「サーバーをいじる」となるとかなり御幣がありますね・・。
サーバーサイドの言語とは一言で言うとサーバー上で動作するプログラミング言語のことですね。
html、javascriptなどは「クライアントサイドの言語」ですね。
学ばれているSwiftも「iOSおよびmacOS、Linuxで利用出来るプログラミング言語(Wikipediaより)」とのことで「サーバーサイドのプログラミング言語」と言えます(Linuxはサーバーなので)
iPhoneアプリ開発をしていく上でも様々な言語が利用できると思います。
「何を作りたいか」にもよるのではないでしょうか。
下記も参考にしてみてください。
投稿2017/07/26 04:59
編集2017/07/26 04:59総合スコア80850
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/07/27 01:56