exfreeterのブログ

一念発起した。今日から頑張る。元ニートでもやれる。

VPSかPaaSか(個人Webサービスの場合)

最近、生活費は受託で稼いでいるのですが、それ以外に自分プロジェクトとして色々やってます。
主にWebサービスとiPhoneアプリの開発なんですが、けっこう気分的に乗っているので、ガンガン作っていきたいと思ってます。

サーバーを用意するのは精神的ハードルが高い

ガンガン作っていくのは良いんですが、自分のサービスやアプリを公開するとなると、どうしてもサーバーが必要になりますよね。
もちろん、オフラインだけで完結するスマホアプリとか既存のAPIを叩くだけのWebサービスとかもたくさんありますが、サーバーとの連携なしという縛りがあると、どうしてもアイデアの幅が制限されてしまいます...。

で、「よし、じゃあサーバー用意しよう」となるわけですが、これがけっこうハードル高いんですよね。(僕だけでしょうか?)
アプリケーション部分はそれなりに作れますが、インフラ部分は受託での経験がほとんどないので、精神的なハードルが高いんです。
もちろん、インフラエンジニアを雇うなんて出来ませんから、自分でやることになります。

現実的な選択肢としてはVPSかPaaS

何とか精神的ハードルはクリアしたとして、個人がサーバーを用意する場合には現実的な選択肢はVPSかPaaSの二択かと思います。

専用サーバーは論外ですし、AWS等のクラウドもコスト的に厳しいんですよね...。
個人ではなく法人が何か新しいサービスを始めるならAWSは最高だと思いますが、個人だと若干コスト的に厳しい気がします。(お金に困ってない方は別ですが)

サーバの知識があるならVPS、なければPaaS

じゃあ、VPSとPaaSどっちにするのかってところですが、これは場合によるかなと。
コスト的に優位なのはVPSなので、サーバ管理の知識がすでにそれなりにあるならVPSで良いと思います。

ただ、僕みたいにサーバ管理の知識が乏しい場合はPaaSがオススメかなと。
僕が想定しているPaaSはHerokuなのですが、ここは無料で幾つでもアプリを公開出来ますし、公開までがとにかく簡単です。
Herokuの使い方まとめ(←僕が先日書いた記事です。)

個人で何かを作る場合、モチベーションの維持が最大の課題になるため、「作りたい!」と思ってから公開までの日数が空けば空くほど挫折率が飛躍的に高まる傾向にあるので、余計な時間をかけないというのは大事かなと。
物凄く当たり前というか、誰でも分かってる結論になってしまって申し訳ないですが、サーバの知識がある人はVPS、ない人はPaaSってのが良いのかなと思います。
ただ、Herokuの場合は例外があって、

  • けっこうDBの容量が必要
  • Webサーバを止めずに定期処理をゴニョゴニョやりたい
  • けっこうメモリが欲しい

このどれかでも当てはまるならPaaS(というかHeroku)は高くつくので、VPSかなと思います。

DBに関しては、無料で使える容量がけっこう厳しいんですよね。
MySQLだと5MBまでです...。

定期処理に関しては、Webサーバを止めてしまえば無料で出来ます。
ざっくり言うと、Herokuは1プロセス(Web Dyno/Worker Dyno)までは無料で使うことが出来るんですが、これ正確にはWebとWorker合わせて1ヶ月あたり750時間までが無料という意味なんですね。
で、Webサーバーとして使うWeb Dynoをずーっと動かし続けると1ヶ月で720時間使っちゃいますよね。
ということは、Worker Dynoは30時間しか使えなくなるんですよ...。
あくまでもWebとWorkerが合計で月750時間まで無料ってことなので、Webを常時動かしつつWorkerも定期的に走らせ続けるみたいな芸当は厳しいんです(特に31日まである月とかは)。

メモリに関しては、Herokuは1台あたり512MBなので、メモリ一杯欲しいっていうサービスには厳しいですね。
これを2台にするだけで月2500円くらい行っちゃいます...。

ごちゃごちゃ書いて結論がぼやけてしまいましたが、個人で何か作るなら基本的にはPaaSで良いと思います。
上に書いたような理由があるか、サーバー知識に自信のある人はVPSで。
以上です。

本田はミランの救世主になれるか!?

本田圭佑のACミラン移籍が正式に決まったみたいですね。
ここ何年か本田の移籍話には踊らされっぱなしだったんで今回も不安だったのですが、今度こそガチのようです。
とりあえず一安心。

凄い時代になったもんだ

一安心とは言ったものの、本来「安心」なんていう言葉で片付けられないくらいの快挙だと思うんですよね、今回の移籍は。
あのミランに日本人が移籍、しかも10番...。
もっと大興奮しておかしくないようなニュースなんですが、ネットで今回の移籍の記事を見つけた時も「あ、やっと正式決定か。一安心やな」くらいの感想でしたからね(笑)
香川のユナイテッドや長友のインテルで感覚が麻痺してしまってるなと思いますね...。

でも、本当に凄い時代になったと思います。
僕がサッカーを見始めた頃から考えると、もう漫画の世界の出来事のようで...。
中田が98-99シーズン開幕のユーベ戦で2点取った時の興奮が昨日のように思い出されるなぁ。
あの時でさえ、「日本人がセリエAで通用してるだと!?」って思ったからなぁ。
やばい、完全に発想がオッサン(笑)

本田はミランで活躍出来るか

話を本田に戻しますが、今回の移籍は本田にとってもかなりのプレッシャーがかかってると思います。
もちろん念願のビッグクラブへの移籍が決まったわけで、プレッシャーがかかるのは当たり前なんですが、香川や長友の時とは状況が違うんですよね。

香川にしても長友にしても、あくまでも「一人の優秀な選手が加わりました」くらいのノリだったと思うんですよ、クラブやサポーターからしたら。
まあ、香川はブンデスで鮮烈な活躍をしてからの移籍だったんで、かなり期待はされてたと思いますが、別にチームをどん底から救う救世主みたいな扱いでは無かったと思います。

でも、本田はそういう扱いなんですよね。
「本田が、きっとミランを救ってくれる!」みたいな。
それもそのはず、いまミランは首位から勝ち点20以上も離されてリーグ中位に沈んでるんですよね。
資金難からここ数年は大した成績を残せていないと言われるミランですが、それでも一昨年はリーグ2位、昨年は3位と最低限の順位はキープしていました。
それが、一気に9位ですからね...。
しかも浮上する兆しも見えないとなると、冬の移籍で入ってくる選手に起爆剤になって欲しいと考えるのは自然でしょう。

デビュー数試合のうちに目に見える結果を

カカという強力なライバルもいますし、周囲の期待も過熱気味といえるほど高まっている。
これでデビューから低調なパフォーマンスが数試合続いてしまったら、一気に見放される可能性があります。
ビッグクラブのファンは我慢弱い印象がありますし...。

そうならないためにも、最初の数試合のうちに目に見える結果を、すなわちゴールが欲しいですね。
恐らく、最初から試合には出してもらえると思うんで、最初の3試合くらいが勝負になると思います。
理想を言えば、デビュー戦でFKからゴールとかあると最高なんですが、少なくともずっとスタメンで使い続けるに値する選手だということを証明するようなプレーが求められると思います。

何度も苦境を乗り越えてここまで辿り着いた本田ですから、きっとやってくれると思います。
期待して待つことにしましょう。

・関連記事

柿谷曜一朗と大迫勇也、2人の半端ないジーニアス - exfreeterのブログ

やる気が出ない日は早寝に限る

もうタイトルが全てなんですが。
今日は朝から心身共に調子が悪くて、何もやる気が出ない一日でした。

こういう日はルーティンワークに徹するようにしたりして、やる気ないながらも出来るだけ無駄にならないようにしています。
決断や判断が伴う作業って、やる気に満ちてないと出来ないタイプなんで、流れ作業で出来ることをやるというか。
(決断は脳のHPのようなものを消費するらしいので、僕だけではないかもですが)

が、それが簡単に出来るなら苦労しないわけで、結局こういう日は早く寝てリフレッシュするしかないと思うんですよね。
何も捗らなかったことで、「あれも終わってない」とか「これもやらなきゃ」とか焦ってくるんですけど、焦ったところで結局は何も手に付かないんで、寝るしかないと。
疲れが溜まってるのが最大の原因だと思うし、そういう意味でも寝るのが一番の薬だと。

経験上、いったん生活リズムが崩れてしまうと、やる気出ない日の発生率が飛躍的に上がるんで、睡眠&運動&栄養は本当に大事だなと思います。
良い年して何を今さら、ですが(笑)

とはいえブログは書いちゃいましたね。
良い感じで習慣化してきた感じです。
ブログを始めるにあたって、せめて一ヶ月くらいは毎日書こうと決めたんですが、やる気出ない日や疲れてる日をいかに乗り切るかが勝負なだと思ってたんで、それについては嬉しいですね。

以上です。

深夜のマックは集中出来る

今、マックでブログ書いてます。
こんな時間なのに、アップルパイとコーヒーを注文してしまいました...。

最近は、良くマックで仕事やブログの執筆をするようになりました。

集中出来ない時はマックに来るようにしてる

僕は今フリーランスでやっていて、決まったオフィスを持っていません。
ノマド(死語?)な感じを誇るつもりは全くなくて、むしろお金があれば今すぐにでもオフィスを持ちたいと思ってますが、コスト的にまだ不可能です。(オフィスを持ちつつ、移動の合間にカフェとかで仕事とかだと良いんですが...)

コワーキングスペースを使うことも多いですが、自宅が郊外にあることもあり移動に時間が取られるのが嫌で、週のうち2~3日は自宅で仕事している感じです。

ただ、自宅は誘惑をが多すぎて、ずっと集中を続けるのは至難の業ですよね...。
ずっと家にいると気分も滅入ってきますし。

そんな時、最近はマックを使うようにしています。
フリーランスな人が外で仕事するといえば、スタバを始めとしたカフェが定番だと思うんですが、僕はあのカフェの気取った感じがあまり好きじゃなくて、同じ距離ならマックを使うことが多いです。

幸い、僕の部屋から自転車で数分の距離のマックは電源もWifiも完備なので(電源は店員さんの許可を取ってます)、週1~2くらいの頻度で有り難く使わせてもらってます。
マナーとして、500円くらいは注文するのと滞在があまり長くならないようにしていますが、気分転換には十分な感じです。

おすすめの時間帯は深夜

これは僕が都内の郊外に住んでるからかもしれませんが、深夜のマックはオススメです。
仕事で使うってことを考えると午後が良いんですけど、午後は混雑してて食べ終わったらすぐに出ないと申し訳ないですし、何よりうるさすぎて集中出来ないんですよね...。
中高生グループが多いですし、土地柄か小さいお子さんを連れたママグループも多いですし、僕みたいな客が長居するのは良くないなと。

その点、深夜だと黙々と勉強してる大学生か僕みたいな作業をしている20~30代くらいの男性しかいません。
たまにカップルがイチャイチャしてますが、そういうのが気になる年でもないので(笑)
周りで勉強してる人や仕事してる人と妙な一体感を覚えて、何か無性に集中出来てしまいます。(僕だけか)

深夜なので、仕事をするというよりも、ブログを書いたり自分プロジェクト(iPhoneアプリやWebサービス作ったり)を黙々とやる感じですね。
以前から仕事が終わった後の夜の時間にダラダラしすぎてしまうのが気になってたんで、強制的にマックに繰り出すことで色々なことをやれるというか。

フリーランスの人、生活費を稼ぐ仕事以外に何かやりたい事がある人にはオススメです。
あまり長居し過ぎないことと、電源の使用許可を取ることには注意して下さいね。

Herokuの使い方まとめ(2013年12月時点、Rails使用)

Herokuの使い方は忘れやすい

Heroku、便利ですよね。
さくっとWebアプリ公開したりテスト用の環境作ったりするには最適ですよね。

今日僕も久しぶりにHeroku触ったんですが、半年ぶりくらいだったので使い方を忘れていて、色々ググるはめになりました。
たしか半年前も同じようなことをしていた気がするので、忘備録を兼ねてまとめておきます。

まずはHerokuのアカウントを取る

以下の公式サイトに行ってアカウントを取っておいて下さい。

Heroku | Cloud Application Platform

Heroku Toolbeltのインストール

次に、toolbeltをインストールしましょう。
ローカル端末からHerokuを操作するために必要なHerokuのCLIツールは、去年くらいまではgemとして提供されていました。
今は、Heroku Toolbeltというのを使ってインストールするようになっています。

インストールは簡単で、heroku toolbeltからダウンロードして普通に入れるだけです。
インストールが終わったら以下のコマンドで確認しておくと良いでしょう。

$heroku version

Railsプロジェクト作る

Herokuのインストールが終わったんで、次はHerokuにあげるRailsのプロジェクトをサクっと作っておきましょう。

$rails new YOUR_APP

続いて、Gemfileを変更します。
HerokuはデフォルトのDBがPostgreSQLなので、それに対応したものにしておきます。

gem 'sqlite3', :group => [:development, :test]

group :production do
  gem 'pg'
end

で、おなじみのbundle installですね。

$cd YOUR_APP
$bundle install

ここまでやったら、いったんGitにコミットしておきましょう。
HerokuはGitでPushすることでデプロイするのでGitは必須です。

$git init
$git add .
$git commit -m "COMMENT"

Heroku用の鍵を作る&登録する

次に、HerokuにSSH接続するための鍵を作ります。
アドレスの部分はHerokuに登録したものにして下さい。

$cd ~/.ssh
$ssh-keygen -t rsa -C "YOUR_MAILADDRESS" 

そして、そこで作られた鍵をHerokuに登録します。(以下はデフォルトの名前で鍵を作った場合。変更した場合は適宜修正が必要だと思います。)

$ heroku keys:add

Heroku上に自分のアプリを作る

ついにHeroku上に自分のアプリを作ります。
Railsプロジェクトのルートに移動して、

$heroku create YOUR_APP

YOUR_APP部分はRailsのプロジェクト名と同一にする必要はないですが、ここで決めたものがアプリのURLになるので、そこは注意して下さい。
その後、GitのリモートリポジトリにHerokuが自動登録されてるか確認しておきましょう。(便利!)

$git remote

HerokuにRailsアプリをデプロイ

最後です!
Railsアプリをデプロイしましょう。

$git push heroku master

無事push出来たら、ブラウザで以下のURLにアクセスして確認しましょう。
http://YOUR_APP.herokuapp.com/
Railsのデフォルトのindex.htmlが表示されればデプロイ成功しています。
お疲れ様でした。

この後は、Railsでゴリゴリ作っていけば良いかと思います。
コード書く→git commit→git push heroku masterの流れを楽しんで下さい。

多分、Asset Pipeline絡みでハマると思いますが、一度ハマってみましょう。
ネット上に腐るほど情報があるのでご安心を。

それでは、良いHerokuライフを。

(参考にしたサイト)

herokuコマンドをgemでインストールしたものからheroku toolbeltのものに置き換える - Qiita [キータ]

Railsで簡単なアプリをscaffoldで作ってHerokuにデプロイするまで - Qiita [キータ]

Rails4でheroku Pushまでの最短手順 [haml/bootstrap 3.0/postgresql or MySQL] - 酒と泪とRubyとRailsと

AngularJSとBackbone.js

最近、JavaScriptのフレームワークが気になってます。

もともとJavaScriptはあまり好きじゃなくて、Webアプリ作る時もjQueryでちまちま誤魔化すみたいな感じに実装することが多かったんですが、「ちょっと真面目にJavaScript書いてみたいな〜」って思い自体は前からありました。

で、最近色んなところでJavaScriptのフレームワークの話を目にするようになり、「たしかにフレームワークがあればJavaScriptでも破綻しなさそう」なんていう甘えた気持ちが芽生えまして、ちょっくら使ってみようと思い立ちました。
何となくAngularJSとBackbone.jsが2強なことは分かっていたので、とりあえずこの2つを重点的に見てみることにしました。

AngularJSとBackbone.js

両方ガッツリやれば良いんですけど、それはちょっと面倒臭いので、公式サイトや紹介しているブログ記事や各種チュートリアルや実際にこれらのフレームワークを使っている実例コードなどをザーっと見て回るにとどめました。
それでどっちか1つをまずはガッツリやろうという作戦ですね。

で、ザっと見てるうちに、

  • AngularJSは小粒なWebアプリを作るなら凄く向いてる気がする。でも、大規模になると怪しそう。→個人向け、趣味向け
  • Backbone.jsはちょっと大袈裟そう。でも、けっこう大規模になったり複数人で開発するなら断然良さそう。→チーム向け、仕事向け

っていうイメージを持ちました。

あと個人的に思ったのは、Backbone.jsはiOSアプリの開発に近い感覚になりそうだなと。
僕が普段iOSアプリの開発をメインにやってるからかもしれませんが、HTMLとCSSがiOSのxibみたいな感じになり、それを操作するBackbone.jsのViewがiOSのUIViewというイメージなのかなと。
もちろん、Backbone.jsのControllerがUIViewControllerでBackbone.jsのModelがNSObjectあたりを使ったモデルクラスに近い感じで。

そういう意味では、スマホアプリみたいに「クライアント側をガチでプログラミングする」っていう感じのBackbone.jsは嫌な印象は持たなかったのですが、いかんせんJavaScriptを書くこと自体は嫌なので(じゃあ辞めろよ!は無しの方向でw)、軽い気持ちで書けそうなAngularJSをちょっと勉強してみようかと思ってます。

年内に1つ、AngularJSで簡単なWebアプリでも公開したいなと思います。

(公式サイト)

AngularJS — Superheroic JavaScript MVW Framework

Backbone.js

W杯、日本は恵まれた組合せに

グループリーグの組合せが決まりましたね。
友達の部屋で抽選会の生中継見ましたが、ペレとかジダンとかケンペスとか来てて豪華でしたね。

で、一番気になる日本の組合せなんですが、

日本はほぼ狙い通りの組合せになった

と思います。

理想を言えば、コロンビアの代わりにブラジル、コートジボワールの代わりにアルジェリアなら最高でしたね。
僕が事前に妄想していたベストな組合せは、ブラジル、ギリシャ、アルジェリア、日本だったんで、かなり近いなと。
とはいえ、ブラジルが同じ南米のコロンビアに、アルジェリアが同じアフリカのコートジボワールになっただけなんで、万々歳と言って良いのかなと。

事前の妄想で重視していたこと

  1. ポット1はグループ内で圧倒的に強いこと
  2. ポット2は南米を避けること
  3. ポット4はギリシャかボスニアになるこ
  4. グループ内のポジションが4になること
この4点を重視して抽選を見ていました。
理由としては、
  1. 1位通過に拘らないなら、変に混戦になるよりシードに3勝してもらうくらいの方が的を絞りやすい。なおかつ、せっかくのお祭りを楽しむために華のあるチームとやりたいので、ブラジルがベスト。
  2. 対南米、対アフリカの相性を考えれば、どっちが良いかは明らか。なおかつ、アフリカの中で力の落ちるアルジェリアがベスト。
  3. 単純にその2ヶ国がポット4の中で力が落ちるので。
  4. ポジション4に入れば、シード国と3戦目に当たる。シードが前の2戦を勝っていると、怪我や疲労の回避のためにメンバーを落とす可能性があるので。
で、結果としては、3と4がドンピシャで、2もまずまず。
1が若干残念でしたが、スイスとかベルギーのグループになるよりは良かったので、全体的に見れば80-90点はあるんじゃないかと。

だからといって日本の決勝T行きは楽ではない
他の組よりは楽(EとかHは置いておいて)とはいえ、一部で言われてるような楽勝モードはおかしいと思います。
日本人の贔屓目でも、突破確率は2/3くらいじゃないかなと思います。
いけるとは思いますが、余裕とか楽勝とはとても言えない感じですね。

たしか、イギリスのブックメーカーのC組突破のオッズでも、コロンビア、コートジボワールに次ぐ3位の評価でした。(僅差ですけどね)
C組は全8組の中で一番オッズが低く、最も力が拮抗した組と見られているようで、僕も全く同意見です。
どこが勝ち抜いても不思議じゃない。(ギリシャは若干力が落ちると思いますが)

こういうグループに入るのは初めてなんで、そういう意味でも今回の大会は楽しみですね。
頭でっかちな予想はここまでにして、日本代表の活躍を祈りたいです。

次は優勝国予想でもしようかな。