ガンズターン 公式サイト

楽しいことに、まじめです。 ——ガンズターンアプリ研究所公式サイト

iPhoneアプリを作るために、わたしが整えた開発環境について(3) サーバ編

Pocket

オセロで4歳の姪に負けました

今日は午後から少しだけ姪や甥とあそぶ機会がありまして、4歳の姪にせがまれてオセロで対戦をしました。

(序盤である程度まで劣勢に追い込まれたら、後半盛り返してギリギリで勝とう)

そう考えていた時期がわたしにもありました……
けれど気づいた時には4つ角をすべて取られ、なすすべもなく……

結果、3倍近い大差で負けてしまいました。orz

くやしまぎれに
「オ、オセロは、最後に自分の駒をすべて一列に積み上げて、崩さずにより高く積み上がったほうの勝利なんだよ」
嘘のルールを姪に信じ込ませ、手先の器用さで勝ちにいった大人げないおっさん……

……こんな汚い大人にはなりたくなかった——

改めましてこんにちは。
ガンズターンアプリ研究所のRyosukeです。

いつも前置き長くてすみません。

前々回前回に続きまして、わたしの開発環境のご紹介になります。

本日は、手元の環境を離れて「サーバ」編。(少しだけローカル環境で使用してるサーバ関係のソフトウェアのご紹介もしますが)

いつも以上にアプリ開発に興味ない人には伝わりづらい内容になっているかと思いますが、できるかぎり独自の注釈で説明を増やしていきたいと思いますので、何卒よろしく御願いいたします。 m(_ _)m

1. サーバはすべてAWS上で運用してます

このブログサーバをはじめとして、ガンズターン関連で利用しているサーバはすべてAWS(※1)上のクラウドサービスを利用して構築しています。
個人で契約してるので、1年後に無料期間が終わったら毎月どれぐらいの支払い額になるのだろうと今から戦々恐々しています。

試算によると1月あたり3,000円弱に収まる予定なのですが……。
(運用しているのはS3が1バケットEC2が本番用1台、開発用1台(使用寺だけ稼働)、ウェブサイト用1台の計3台。あとはRoute53CloudFront、とけっこう多岐にわたっていますね。いずれ、AWSについてもブログの記事にできるぐらいに習熟していきたいです)

AWSに関して料金面以外で心配なのは、セキュリティに関する諸々の設定とかを自分で考えないといけないところ。
先日、ウェブサーバのアクセス履歴を調べてみたらもののみごとにsshdアタック(※2)が仕掛けられていて、1日で何千件もの不正アクセスログが残っていました。(怖)
denyhostsというセキュリティパッケージをサーバにインストールすることでひとまずの対策としましたが、果たしてどれだけの効果があるのやら……。
この件についても、いずれブログで記事にしたいですね。

2. サーバ側はFuelPHP使ってます

先日、初めて「りずもぐ!」サーバと連携する機能を搭載しました。
かなり地味なので気づいていない方も多いと思いますが、タイトル画面で上部に表示されるガンズターンの自社広告バナーがそれです。
(あと、通知機能も実は人知れず実装してあります。)

この自社広告バナー、一定の確率で、稼働してるサーバから広告の表示に必要な情報を取得し、それをもとに動的にバナーを作成して表示してるわけですね。

こういうふうに、サーバとアプリが連携する時に必要になるのがAPIという仕組みです。
りずもぐに関しては、非常に簡単なAPIを自作して動作させています。

で、このAPIって何か、っていうと、実際のところはサーバ側で動作する一連のプログラムなんですね。

一口にプログラムといっても、iPhone上でゲームを動かすためのプログラムと、サーバ側でAPIを実装するためのプログラムでは、まるっきり勝手がちがいます。(そもそもプログラミングをするための言語が異なります。)

わたしはあまりサーバ側のプログラミングに詳しくないので、FuelPHPというフレームワーク(※3)の力を借りることにしました。(幸い、以前仕事でほんのちょっとだけ触れたことがあったので、馴染みがあったためです)

FuelPHP、動作概念が初心者にもわかりやすいので、慣れてくると自分みたいな素人でも悩むことなくすいすいコーディングできます。(まあ、大して難しいことしてないからですが)

FuelPHPについては、以前職場で使っていたとは言うものの、その存在を知っていただけで自分でFuelPHPを使ったプログラミングをしたことはありませんでした。
なので、独立を決めたあとで、1から自分で勉強したような形になります。

そんな時、どうやって勉強していったかなども、いずれブログ記事にしていけたらな、と思います。

3. 開発中はVagrantで確認してます

世の中にはVagrantという非常に便利なソフトがあります。
ご存知の方にはいまさら説明するまでもないぐらい、今やサーバ開発の定番となっているソフトです。(多分。笑)

Vagrantのなにがすごいかと言うと、なんと、ごくごく普通のパソコンの中に、仮想的にサーバを丸々1台構築することができてしまうのです。

……え?
そんな説明じゃなにがすごいのかわからないって?

す、すみません……。
わたし自身、ひとさまに説明できるほどVagrantに習熟してるわけじゃないので、どうしても曖昧な言葉づかいになってしまいます。

言い方を変えましょう。

「Vargrantを使うと、サーバを持っていなくてもサーバと同じ働きをするものを無料で手にいれることができる」

……こう言ったら、なんかすごいと感じませんか?

Vagrantはフリーウェアです。
そして、そのVagrantを使ってサーバを構築するために必要な、サーバイメージも無料で手にいれることができます
つまり普通のパソコン1台あれば(MacでもWindowsでも可)、無料で自作のサーバが作れちゃうのです。

もちろん、ここでいう「自作のサーバ」はあくまで仮想的に作成されるものなので、例えばインターネットを通じて広く一般に公開したりすることはできません
(厳密に言うと不可能ではないかもしれませんが、色んな意味でおすすめしません)

しかし、動作自体は本物のサーバとなんら変わる部分がないので、例えば、開発中のプログラムの動作確認なんかを行う際に、いちいちインターネット上に公開された本物のサーバを使用する必要がないのです。

  1. 開発中のソースコード(※4)はVagrant上の仮想サーバで動作確認。
  2. 動作確認をしっかり終えたものだけを、本番のサーバへ反映する。

こんな運用フローがあっという間に構築できちゃう魔法のソフト
それがVagrantなのです。
(注:ここに記載したVagrantの紹介はあくまでRyosukeの主観です。実際には、もっと的確で正確なVagrantの紹介文が他にあると思いますので、興味がわいた方はぜひ実際にご自分の手でGoogle先生に尋ねてみるなりしてください。)

個人でアプリ開発もサーバ構築もぜんぶやっちゃいたい、というわたしみたいな変人であれば、必ず必要になるツールですので、ぜひ早いうちに使ってその便利さを実感してみてください。

ちなみにこのブログ記事も、ブログサーバにあげるまえに、一度Vagrant上に構築したWordPress環境にアップロードをしてみて、見栄えとかを確認してから公開しています。

4. むむむ。書き足りません。

いつもの通り、あっという間に時間と紙幅を消費してしまいました。
本日のこの記事は、書き始めてから1時間30分——

こんな調子で、1日1記事なんて達成できるのだろうか。

ちなみに本日の1日1成長「人口知能の本を1冊読む」でした。

読んだのは、松尾豊さん執筆の「人口知能は人間を超えるか」
昨晩から読み始め、本日のお昼休みに一気に最後まで読み上げました。

人工知能には昔から興味津々で、いくつか書籍(いずれも一般向けに書かれたやさしいやつです)を読んできました。
ですからなんとなく人工知能の進化の歴史は頭の中に入っていたつもりですが、この本を読んだら体系的な理解がいっそう深まったような気がしています。
いずれ、きちんと感想をブログ記事にしたいですね。

さてさて、開発環境紹介も明日で最後にしたいと思います。
最後は、これまで書ききれなかったけどどうしても書き足しておきたい「補足編」。

記事を書き終えたあとで思い出したツールとかを、補足的にご紹介していきたいと思います。

ではでは。
いつも通りの長文、最後までお読みいただきありがとうございました。 m(_ _)m


(以下の注釈は当ブログ管理人の個人的な見解ですのであしからず)


※1 「AWS」とは……
「Amazon Web Service」の略。みんな大好き、超絶便利な通販サイトであるところの「Amazon」さんが運営されている超巨大クラウドサービスです。早い話が「レンタルサーバのお化け」なんですが、利用料が月額固定とかじゃなくて「使った分だけ支払い」なので、例えば構築だけして、普段は使わないサーバとかについては、稼働しない限りお金を払う必要がありません。それになんといってもサーバはすべて仮想的に作成されており、物理的な実体が存在しないため、性能の変更がマウスの操作だけでできちゃうのがすごいところ。AWSに関する勉強だけでも何冊も本が必要になる程奥深い分野です。しかも日々、サービスが改善されていてすごい。(本文に戻る)


※2 「sshdアタック」とは……
インターネット上に公開されたサーバに対して、手当たり次第に「ユーザ名」と「パスワード」の組み合わせを試して、ログインできないかどうかを試すいわゆるハッキングの手口のことです。インターネットの通信資源を無駄に消費するとても悪いことですね。例えばユーザ名「admin」で、パスワードも「admin」、なんていうsshの設定がされているサーバがネット上に公開されていたなら、一瞬で突破されてサーバを自由に操作されてしまうでしょう。根本的な対策は、今の所ないみたいです(公開してる以上、外部からの接続自体を拒否することができないので)。なので不正アクセスはされるものと考え、できるだけパスワードとユーザ名は他者に推測されにくいものを使用しましょう。(ちなみにガンズターンでは、特定のIPアドレス以外は管理ページに入れないようにしています)(本文に戻る)


※3 「フレームワーク」とは……
世の中にはとても志の高いエンジニアがたくさんいるものです。というか、エンジニアという人種自体、志が高い人にしか務まらない職業なのかもしれません。そんなエンジニアの中でもとくに優秀な人たちは、自分たちが開発した一連の普遍的に使えるプログラム群を「フレームワーク」として一般に公開していたりします。FuelPHPもそのうちのひとつ。このフレームワークを使うとなにが便利かというと、自分自身に大したプログラミング能力がなくてもフレームワークの使い方さえ覚えれば一流のプログラマが構築した仕組みを簡単に使いこなすことができるようになるという点です。いつかわたしも、なんらかのフレームワークの開発に携われれば、うれしいですね。(本文に戻る)


※4 「ソースコード」とは……
プログラムを記述した「テキスト」のことです。世の中のプログラムは、基本的にはすべて「テキストファイル」です。人間に理解できる形で記述されたその「テキストファイル」に記述されたテキストのことを「ソースコード」と呼びます。実際にコンピュータが動作するにはその「ソースコード」を機械が理解できる形式(マシン語と言います)になんらかの形で変換するわけですね。英語の「ソース」には日本語でいう「源(みなもと)」に近い意味があるようです。つまり「ソースコード」は「マシン語」の「源」というわけですね。「それじゃあ「ウスターソース」もなんかの「源」なのか?」といわれれば、実はあちらの「ソース」はスペルが違う別の単語のようです。(本文に戻る)

Pocket

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

トラックバックURL: http://gunsturn.com/2015/05/05/about_server/trackback/