Xcode
iOS
api
vagrant
Swift

iPhoneの実機テストで仮想マシン内のAPIを叩こうとした話

初投稿です。
swiftを触り始めて2週間程度の初心者が、業務の都合で仮想マシンに置いてあるAPIを叩こうとしてハマった話です。

もともとPHP + Vagrantで作成していた開発していたサービスを
iOSアプリ化したいとのことだったので、満を辞してxcodeを導入して
華麗なswiftデビューを飾る予定でしたが…

「あれ?どうやってDBにアクセスすんの?」

予定は未定と言いますが、あまりにも無様なデビューを飾りました。
とりあえず、PHPでAPIを書いてjson形式でデータを返すのが一般的との
ことだったので、status = 200を返すだけのAPIを仮設置。

これでswift側からurlにアクセスすればいけると思ってましたが、
人生そんなにうまく行かないご様子。
  
 
結果から先に言うとホスト側から仮想マシンにアクセスできてなかったと言うオチです。
 
 
言われてみれば、iPhone側からしたらVagrant内の設定など知ったこっちゃないのです。
と言うことなので、ちまちま調べているとようやくお目当の記事を発見。
この記事に全てが書かれてました。

http://maku77.github.io/vagrant/port-forward.html

仮想マシンのWebサーバのHTTP通信のポートは80なので、仮想マシンのHTTP通信をホスト側のポート8080でマッピングするよう~/.Vagrant.d/Vagrantfileに以下を追加。

config.vm.network :forwarded_port, guest: 80, host: 8080, auto_correct: true

これでやっとアクセスできた。
ここまで来るのにほぼ丸一日かかった。
しかし、iOS開発をしている人はみんなこんなことしているのかと思うとゾッとします。