この記事を書いた人
komagata

WordPressなら結構触ったことがあるけどちゃんとしたプログラミングやrubyはちょっと・・・というデザイナー向けsinatra簡単入門を書いてみます。

sinatraはWebアプリが超簡単に書けるライブラリなのでWebが分かった感を掴むには最適だと思います。

rubygemの設定

rubyにはrubygemというライブラリを管理する仕組みがあります。rubyに対するプラグインみたいなもんだと考えてもらって結構です。プラグイン(gemと言います)みたいなもんだけあって、手っ取り早くて便利なものが沢山あります。sinatraもそのひとつです。

Macでの簡単rubygem設定

Macでややこしいことをせずにrubygemを使うには下記の通りにしてください。理由は聞かないで下さい。

~/.bash_profileに下記の通り書いて保存、ターミナルを再起動する。

export GEM_HOME=~/.gem/ruby/1.8

(ターミナルの使い方についてはこちらを参照してください)

sinatraのインストール

これでrubygemの準備ができました。sinatraをインストールしてみましょう。rubygemの検索・インストール・アンインストールにはgemコマンドを使います。

$ gem install sinatra

これでsinatraが必要とする他のgemも勝手にネットからダウンロードしてきてインストールしてくれます。便利です。

最小限Webアプリ

早速、トップページ(/)にアクセスするとhelloと表示するだけのWebアプリ(hello.rb)をテキストエディットで書いてみます。

上記をhello.rbというファイル名で保存したらターミナルから下記のようにrubyプログラムとして実行してみてください。

$ ruby hello.rb

何か表示されて止まると思うので、その状態でブラウザでhttp://localhost:4567/にアクセスしてみてください。

最低限のWebアプリができました。

中身の説明

requireは他のrubyプログラムを読み込むメソッドです。(メソッド=機能ぐらいに思って下さい)

rubygemを使うにはまずrubygemというプログラムを読み込む必要があるので1行目でrequireしています。2行目ではsinatraを使うのでrequireしています。

4〜6行目は、「'/'にアクセスしたら'hello'を表示する」みたいな意味です。

getというのはsinatraが提供するメソッドです。他にpost, put, deleteなどがあります。対応するURLにアクセスが来たらdo ~ end(ブロックといいます)の中身を実行して最後の行を表示してくれます。

対応するURLを増やす

トップページだけじゃ寂しいので/helloというURLも追加してみます。

require 'rubygems'
require 'sinatra'

get '/' do
  'hello'
end

get '/hello' do
  '<html><head><title>hello</title></head><body><h1>hello</h1></body></html>'
end

こんな感じにまともなHTMLを返すこともできます。

hello.rbを再起動してみましょう。(動いているプログラムを止めるにはターミナルでControl + Cキーです)

$ ruby hello.rb

http://localhost:4567/helloにアクセスしてみます。

このプログラムを今は自分のMacで動かしていますが、ネットに公開されているPC(いわゆるサーバー)で実行すればれっきとしたWebアプリです。

既にこれだけでもかなりのWebサイトが作れることにお気づきの方もいらっしゃるかもしれません。Rubyの知識などはすっ飛ばして進んでいますが、次回はHTMLファイルを表示する方法を紹介したいと思います。

この記事を書いた人
machida

KRAYさんのブログの大人気記事「1時間でツイッターサービスを作ろう!」にデザイナーも挑戦してみようという今回の企画、「デザイナーも1時間でツイッターサービスを作ろう」いよいよ今回が最終回です。

今回は機能を実装してHerokuにデプロイ。Herokuにデプロイは今まで散々やってきましたが、Railsに機能を実装するのは初挑戦。今回は深いことは考えず、記事をひたすら記事をなぞっていきます。この後、ゆっくり本でも買ってRailsの勉強をしたとき、今回の経験が役に立てば、くらいの感じでやっていきたいと思います。

偉大なるHelloWorldボタンの実装

ボタンを押すと「偉大なるHelloWorld」というつぶやきができる機能の実装。いよいよプログラミングがさっぱりの僕にとって厳しい領域。…というわけで元記事にあるまま進みます。

$ script/generate controller messages index

ターミナル — bash — 80×24

ここで、コントローラとビューのファイルが生成されるのですが、

コントローラとは、ユーザの入力(通常イベントとして通知される)に対して応答し、それを処理する要素である(by wikipedia)、とのことで、ボタンを押したときの動きなんかを設定するファイルだと思われます。

ビューとは見た目のテンプレート部分みたいなもので、WordPressで言うところのThemeみたいなものです。余談ですが、Railsアプリでデザインを入れる仕事をやるとき、デザイナーの僕はここばっかり触ってます。

      exists  app/controllers/
      exists  app/helpers/
      create  app/views/messages
      exists  test/functional/
      create  test/unit/helpers/
      create  app/controllers/messages_controller.rb
      create  test/functional/messages_controller_test.rb
      create  app/helpers/messages_helper.rb
      create  test/unit/helpers/messages_helper_test.rb
      create  app/views/messages/index.html.erb

こんなメッセージが表示されました。「create」は「作る」という意味ですが、「exists」は?というと、「存在する」という意味です。「exists」の方は無ければ作ったけど最初からあったよ、っていうメッセージですね。まぁ、これだけのファイルが生成されたということです。

続いてURLのパスの設定。今回はページ遷移なしの1ページだけのシンプルなWebアプリなので、「/」のときに表示されるファイルの設定だけ。元記事に書いてあるまま、「config/routes.rb」を編集。

config

ActionController::Routing::Routes.draw do |map|
  # ここから追加
  map.resources :messages,:only => [:index, :create]
  map.root :controller => 'messages', :action => 'index'
  # ここまで追加
end

書いてあるまま、

routes.rb-1

routes.rb

に、中身を上書き。

アプリケーションに設定されたURLパスを確認

では、ちゃんと設定されているかの確認。元記事にあるままコマンドを打ってみます。

rake routes

こう出たらOK。

         login        /login                  {:action=>"new", :controller=>"sessions"}
        logout        /logout                 {:action=>"destroy", :controller=>"sessions"}
   new_session GET    /session/new(.:format)  {:action=>"new", :controller=>"sessions"}
  edit_session GET    /session/edit(.:format) {:action=>"edit", :controller=>"sessions"}
       session GET    /session(.:format)      {:action=>"show", :controller=>"sessions"}
               PUT    /session(.:format)      {:action=>"update", :controller=>"sessions"}
               DELETE /session(.:format)      {:action=>"destroy", :controller=>"sessions"}
               POST   /session(.:format)      {:action=>"create", :controller=>"sessions"}
oauth_callback        /oauth_callback         {:action=>"oauth_callback", :controller=>"sessions"}
      messages GET    /messages(.:format)     {:action=>"index", :controller=>"messages"}
               POST   /messages(.:format)     {:action=>"create", :controller=>"messages"}
          root        /                       {:action=>"index", :controller=>"messages"}

ターミナル — bash — 91×27

出来た!

加えて、「/login」や「/logout」というパスが存在していますね。これらはtwitter-authプラグインが自動生成してくれているパスで、「/login」にアクセスするだけで、ツイッターのOAuth認証を実行できるようになっています。便利ですね。

なるほど、前回苦労して入れた twitter-auth が twitter 認証などの面倒な処理のプログラムを自動で作ってくれたんですね。

コントローラーの処理を実装

app/controllers/messages_controller.rbを編集します。

controllers

元記事にあるまま、

class MessagesController < ApplicationController
  def index
  end
  # ここから追加
  def create
    if current_user.twitter.post('/statuses/update.json', :status => "偉大なるHelloWorld")
      flash[:success] = "おめでとう!偉大なるHelloWorldは成功した。"
      redirect_to root_path
    else
      flash[:error] = "残念だが、偉大なるHelloWorldは失敗に終わった。"
      render :action => 'index'
    end
  end
  # ここまで追加
end

を記入します。

messages_controller.rb

今気づいたんですが、今回はKodというエディターを使っているのですが、このエディター、背景が黒いのでターミナルと混同しそうですね。ブログの記事には向かないです。ちょっと失敗でした。

さて、今コピペしたところを見てみると、「偉大なるHelloWorld」という文字列がTwitterにpostされて、「おめでとう!偉大なるHelloWorldは成功した。」というメッセージが表示される。エラーが起きると、「残念だが、偉大なるHelloWorldは失敗に終わった。」というメッセージが表示される。というのが何となくわかりますね。完成したら、次はこのメッセージを変えてみるのも面白そうです。

ビュー(app/views/messages/index.html.erb)の編集

では、次は「view」の編集です。ここは僕がいつもRailsの仕事で触ってるファイル。ブラウザでアクセスしたときにユーザーが見る、見た目の部分です。Railsでは「public」フォルダにjavascriptや画像ファイル、cssファイルがあるので、Railsの仕事を受けたデザイナーは、これからいじる「view」と「public」が自分の領域になります。

では元記事の通りにやってみましょう。

<% if logged_in? %>
  <% form_tag messages_path do %>
    <%= submit_tag '偉大なるHelloWorldをツイートする' %>
  <% end %>
<% else %>
  <%= link_to 'ログインする', login_path %>
<% end %>

これを「app/views/messages/index.html.erb」にコピペ。

messages

エディターを「mi」に変えてみました。

index.html.erb

全体のレイアウトファイル(app/views/layouts/application.html.erb)を作成

次の作業もviewです。Railsの場合、「app/views/layouts/application.html.erb」っていうファイルが必ず(多分)あって、デザイナーは必ずここをいじることになります。このファイルは全体の枠組みのファイルで、WordPressでいうところの「header.php」、「sidebar.php」、「footer.php」がセットになったもの、って感じです。

これからコピペする以下のコードに「<%= yield %>」という部分がありますが、ここに先ほど作った「app/views/messages/index.html.erb」が表示されます。つまり、枠は「app/views/layouts/application.html.erb」、中身は「app/views/messages/index.html.erb」となります。

今回はペラ1のシンプルなWebサービスですが、複雑なものだと、「app/views/layouts/application.html.erb」の枠の中に色んな中身がそれぞれのページごとに入ってきます。例えば、トップページのときの中身、ログインフォームのときの中身、記事を投稿するフォームの中身、記事の一覧を表示する中身...といった感じです。

おっと、この部分を<pre><code>で書こうとしたら表示されない、というLokkaのバグを発見。kuroigamenではお馴染みのGithubのメモ帳サービス「gist」を使って貼りつけました。

ちなみに、「<%= msg %>」に、「flash[:success] = "おめでとう!偉大なるHelloWorldは成功した。"」、「flash[:error] = "残念だが、偉大なるHelloWorldは失敗に終わった。"」のメッセージが表示されるみたいです。

application.html.erb

layouts

作りました。

これでアプリは完成!

公開

ついに最後の作業です。今完成したアプリをkuroigamenでは毎度おなじみのHerokuにデプロイします。

.gemsファイルの用意

Herokuにデプロイするときに、このアプリはこのgem(Rubyのプラグイン)が必要だから入れておいてね、とHerokuに言うメッセージのようなファイルを作ります。それが「.gem」です。

元記事に書いてあるまま「.gems」ファイルを作りましょう。プロジェクトの一番上の階層に作ります。

oauth
ezcrypto
json

「ezcrypto」、「json」ってGemは前回、これがGemsetに入ってなくてハマったやつですね...

kuroigamen_hello_world

作りました。

デプロイ

ついに最後の作業。git で色々やって完了です。では、元記事を見てみましょう。

% git add .
% git commit -m 'finish!'
% git push heroku master
% heroku rake db:migrate

まずは、作ったアプリを「git add」で git のバージョン管理におきます。

それをコミットします(「git commit -m 'finish!'」)。

そのコミットした状態をherokuに送ります。(「git push heroku master」)

「heroku rake db:migrate」で heroku の DB のセットアップ

おっと、これで終わりかと思いきや、「heroku rake db:migrate」で上手くかない!

Missing the Rails 2.3.8 gem. Please `gem install -v=2.3.8 rails`, update your RAILS_GEM_VERSION setting in config/environment.rb for the Rails version you do have installed, or comment out RAILS_GEM_VERSION to use the latest version installed.
(in /app)

...というメッセージ。

Railsのバージョン2.3.8がないよ、って言ってますね。元記事では2.3.8が最新だったのですが、今のHerokuのRailsではもっとバージョンが上がっていて、「.gem」に2.3.8を指定しないといけないのか?と予想を立てて、とりあえずやってみます。

ここに「.gem」のバージョンも含めた書き方が載ってました。

rails --version 2.3.8

を「.gem」に追加。

.gems

この変更をコミット。

git commit -a -m 'added rails'

※今回は変更があったファイルの変更を自動的にコミットするっていう「-a」オプションが付きます。

もう一度herokuにpush。

git push heroku master

DBの設定に再挑戦。

heroku rake db:migrate

ターミナル — bash — 91×27-1

成功した!

ちゃんと出来てるかアクセスしてみます。僕のはここ

まずはトップページ、ログイン前。

偉大なるツイッターアプリ

ログインをクリックすると...おおっ!アプリケーション認証画面。

Twitter _ アプリケーション認証

ログインをすると、「偉大なるHelloWorldをツイートする」ボタンが出現。

偉大なるツイッターアプリ-1

では、ボタンをクリック...成功のメッセージが出現!

偉大なるツイッターアプリ-2

では、Tweetされてるかチェック。

Twitter _ @machida_ 偉大なるHelloWorld ...

出来たー!

最後に

以上で「デザイナーも1時間でツイッターサービスを作ろう!」は終了です。それにしても、この三回に渡って書いた連載ですが、第二回の設定編を記事を書きながら作業をしていたらエラーが出てしまい上手くいかずハマリにハマって、今回は無かったことにしようかな...と思いかけたとき、第一回の準備編の記事にはてぶがたくさん付いてしまい、無かったことに出来ない状況に追い込まれてしまいました。試行錯誤の連続でしたが、無事アプリが公開できてほっとしています。

この元記事を書いたfunc09さん、元記事があるサイトのKRAYさん、勝手に記事をコピペしまくってしまってすいません。

この記事を書いた人
machida

前回の続きです。前回は元記事(1時間でツイッターサービスを作ろう!)のRails環境を自分のMac内に構築するところまででした。今回は外部サービスの登録と、開発の始めのところまで。今回も長い記事になりそうなので、早速本題へ(っていうかこんなペースでは1時間でつくるなんて無理!)。

まずは「cd」コマンドを使って、「Sites/kuroigamen_hello_world」の場所からスタートしてください。

Gitのリポジトリを初期化

今回もHerokuにデプロイしてWebアプリを公開するので、バージョン管理はGit。今作ってる「kuroigamen_hello_world」もGitでバージョン管理をします。コマンドは、

$ git init

これだけ。

バージョン管理したくないファイルを無視ファイルに定義

続いて、Gitの管理下に置きたくないファイルを定義します。例えば、Macの場合必ず出てきてしまう「.DS_Store」っていうファイルがありますよね。この不要なファイルまでリポジトリに入ってくるのは気持ち悪い。他にも、一時的なファイルを置くフォルダなどをGitの管理下から外します。これは元記事のまま、まずは「.gitignore」というファイルを作ります。今回は黒い画面でファイルを作ってみましょう。ずっと前にやった「touch」コマンド。

$ touch .gitignore

これで「.gitignore」というファイルが出来ました。このファイルに、

.DS_Store
log/*.log
tmp/**/*
db/*.sqlite3
db/schema.rb

と、書き込みます。

黒い画面でエディタを使ってみる

おまけで、黒い画面でのファイルへの書き込み方法を紹介。まずは、viという黒い画面用のエディタでファイルを開きます。コマンドは「vi」、引数に開きたいファイル名を入力します。

$ vi .gitignore

そこに、

.DS_Store
log/*.log
tmp/**/*
db/*.sqlite3
db/schema.rb

をコピペ。

続いて、「esc」キーを押す。

「:w」と打って保存完了。

最後に「:q」と打ってエディタを閉じる。

黒い画面のエディタって面倒くせー。おまけで黒い画面でのエディタの使い方を紹介しましたが、この作業はFinderから開いて適当なエディタで編集で全然OKです。

サービスを動かすサーバ、Herokuの設定。

次はKUROIGAMENではお馴染みのRuby版PaaS「Heroku(へロク)」の設定です。これは以前にもここで説明をさせていただきましたので、今回初めてHerokuを使うってかたはこちらをご覧ください。こちらの記事は無料でHerokuに静的ページを置くっていうことを実際にやってみるという記事なのですが、是非これにも挑戦していただきたいです。

  • herokuの会員登録
  • herokuコマンドのインストール

※今回は新たにGemsetを作ってるので前にHerokuを使ったことがある方も、またherokuコマンドをインストール必要があります。インストールは、

$ gem install heroku

上記が完了しましたら、続いて今回作るアプリをHerokuに登録します。Herokuに今回作るアプリのリポジトリ置き場を設置するって作業です。会員登録はブラウザからなのに、リポジトリ置き場の登録は黒い画面(ターミナル)からコマンドを打って行います。

今回「kuroigamen-hello-world」という名前で登録をしますが(Herokuでは「_」を使うことが出来ないので「-」に変えました)、Heroku上には同じ名前をアプリを作ることができないので、これを見ながらやっている方は別の名前で登録をしてください。

$ heroku create kuroigamen-hello-world

すると、

Creating kuroigamen-hello-world... done
http://kuroigamen-hello-world.heroku.com/ | git@heroku.com:kuroigamen-hello-world.git

というメッセージが表示されて完了したっぽい。

Herokuに行ってリポジトリ置き場が登録できてるか確認してみます。HerokuのMy Appsへ行って確認。

ちゃんとできてました。

ツイッターアプリ登録

元記事に書いてあるまま、次の手順、ツイッターアプリ登録の作業に移ります。

登録はこちらから。要Twitterアカウント。

ここで元記事にある「ポイントになるのは・・」に注目。

* アプリケーションの種類:ブラウザアプリケーション
* コールバックURL:http://twitter-helloworld.heroku.com/oauth_callback
* Default Access type:Read & Write

とすることです。

コールバックURLは、自分のサービスURLに「/oauth_callback」を追加したものを設定してください。

この点に注意して入力します。

ついでに、Herokuを初めての方へ。

先ほど確認したHerokuのMy Appsに表示されてるアプリ名をクリックすると、

こんな画面が表示されます。

ここにある「Heroku URL http://kuroigamen-hello-world.heroku.com」っていうところがアプリを公開するURLになります。

元記事には、

コールバックURLは、自分のサービスURLに「/oauth_callback」を追加したものを設定してください。

とありますので、今回の僕の場合は「コールバックURL」は「http://kuroigamen-hello-world.heroku.com/oauth_callback」になります。

入力した内容は以下。

New Twitter Application | dev.twitter.com

黒い画面ハローワールド Settings | dev.twitter.com-1

登録が済んだら、「Consumer key」と「Consumer secret」をメモっておきます。

以上でツイッターアプリ登録は完了。

開発

いよいよ開発です。開発…すいません、全然Railsのことを知らないので、ここからは元記事に書いてあることをただなぞっていく作業になってしまいます。

では、「kuroigamen_hello_world」の場所から作業スタート。

public/index.htmlを削除する

書いてある通りにやってみます。ファイルの削除のコマンドは「rm」。リムーブの略ですね。ただ、せっかくなので捨てる前にこのファイルを開いてみます。

Ruby on Rails_ Welcome aboard

なるほど、Railsでアプリを開発する手順が書かれてますね。「index.html」を削除することも手順「2」に含まれています。ついでに、手順1は「Use script/generate to create your models and controllers」、手順3は「Create your database」。これらの作業も後でやることになりそうな予感。

では、「rm」コマンドで「index.html」を削除。

$ rm public/index.html

ツイッター認証

どんどん先に進みたいと思います。元記事によると、「twitter-auth(http://github.com/mbleigh/twitter-auth)」というプラグインを使うことで、面倒そうなTwitterとの連携部分の機能の実装をサクっと完了させられるそうです。Railsはこういった便利なプラグインがたくさんあるところが大きな魅力の一つだそうです。デザイナーの僕からすると、「WordPressみたいなものかー」、という感じ。

この元記事では、「script/plugin install」というコマンドが書いてあるのですが、KUROIGAMENではRubyのGemという機能を使って、「gem install」っていうコマンドを使ってやってます。その方法は比較的新しいやり方のようで、元記事にある「script/plugin install」はちょっと古いやり方です。ググッてみると、Gemを使って「twitter-auth」をインストールする方法もちらほらあったのですが、今回は何か起こったら怖いので元記事のままやってみましょう。

$ script/plugin install git://github.com/mbleigh/twitter-auth.git

次に、それを使うコマンド

$ script/generate twitter_auth

ターミナル — bash — 97×44

ウギャー、ここでエラー発生。あとは元記事をなぞるだけで成功すると思ったのに…。

エラーメッセージを見てみると、

no such file to load -- json (MissingSourceFile)

という一文が。もう勘以外のなんでもないですが、jsonってやつが無いのがエラーの原因?と思って、

$ gem install jason

をやってみました。

もう一回、

$ script/generate twitter_auth

に挑戦。

また、エラー。でも、エラーメッセージが変わってる!これはいけそうな予感。今度のエラーメッセージは、

no such file to load -- oauth (MissingSourceFile)

なら、今度は

$ gem install oauth

またまた

$ script/generate twitter_auth

またエラーが出たけど、さらに別のメッセージが出てきました。

Missing these required gems:
ezcrypto

「ezcrypto」ってGemを入れてくれよ、って言ってますね。今度のエラーメッセージはわかりやすい。じゃあ、入れてあげましょうと、

$ gem install ezcrypto

次こそはいけるか?!

$ script/generate twitter_auth

ターミナル — bash — 97×44-1

できた!(実はこのエラーを解決するのに一日かかってます…)

一応これを読んでるかたが確認できるように、Gemsetの中に入ってるGemの一覧を表示しておきたいと思います。もし上手くいかなかった方は見比べてみてください。Gemの一覧を表示するコマンドは、

$ gem list

Gemsetの中のGemは、

actionmailer (2.3.8)
actionpack (2.3.8)
activerecord (2.3.8)
activeresource (2.3.8)
activesupport (2.3.8)
configuration (1.2.0)
ezcrypto (0.7.2)
heroku (2.0.4)
json (1.5.1)
launchy (0.4.0)
mime-types (1.16)
oauth (0.4.4)
rack (1.1.2)
rails (2.3.8)
rake (0.8.7)
rest-client (1.6.1)
term-ansicolor (1.0.5)

ちゃんと「twitter_auth」が動いたかを確認するために、

$ rake routes

と、打ってみましょう。

login        /login                             {:controller=>"sessions", :action=>"new"}
logout        /logout                            {:controller=>"sessions", :action=>"destroy"}
new_session GET    /session/new(.:format)             {:controller=>"sessions", :action=>"new"}
edit_session GET    /session/edit(.:format)            {:controller=>"sessions", :action=>"edit"}
session GET    /session(.:format)                 {:controller=>"sessions", :action=>"show"}
PUT    /session(.:format)                 {:controller=>"sessions", :action=>"update"}
DELETE /session(.:format)                 {:controller=>"sessions", :action=>"destroy"}
POST   /session(.:format)                 {:controller=>"sessions", :action=>"create"}
oauth_callback        /oauth_callback                    {:controller=>"sessions", :action=>"oauth_callback"}
/:controller/:action/:id           
/:controller/:action/:id(.:format) 

と、出ればOKです。これはTwitter認証でログインをしたりなど、面倒なところを「twitter_auth」がやってくれた、っていう証です。

config/twitter_auth.yml というファイルの書き換え

では、次に設定ファイルの書き換えを行います。先ほどのツイッターアプリ登録の内容を設定ファイルに入力する作業です。「config/twitter_auth.yml 」を書き換えます。

config

今回は黒い画面ではなく、Finderからファイルをところまで行ってエディタで編集してしまいました。

twitter_auth.yml - _Users_machida_Sites_kuroigamen_hello_world_config

上の画像の下線部分にツイッターアプリ登録した際に得た「Consumer key」、「Consumer secret」をそれぞれ入力します。

長くなってしまったので今回はここまで。いよいよ次回は最終回です。それにしても、@func09さんの記事をそのままやってるだけのこの記事に結構はてブがついてしまって申し訳ない。KRAYさん、勝手にこんな記事を書いてしまってすいません…。

この記事を書いた人
machida

こんにちは、町田です。

先日のCSS Niteにお越しいただいた皆様、本当にありがとうございました。

CSS Niteの発表とほぼ同じくらいの絶妙なタイミングでAmazonのサーバにトラブルが発生し、このサイトも影響を受けて結構長い時間アクセスが出来ませんでしたが、どうにか無事復旧されてほっとしているところです。KUROIGAMENでよく出てくるホスティングサービス「Heroku(へロク)」ってAmazonのサーバで動いているんですよね。KUROIGAMEN自体もHerokuで動かしてます。

これからも黒い画面で何かやって上手くできたら、その情報を皆様にもシェアできるように頑張って記事を書いていきたいと思ってますので、宜しくお願い致します。

あのすごい数の「はてブ」がついた伝説の記事に挑戦。

今回は以前ここで紹介させていただきましたHappy1000Days!の作者@func09さんが以前在籍していた株式会社クレイさんのサイトのブログに書いた記事、「1時間でツイッターサービスを作ろう!」に挑戦したいと思います。この記事、なんだかものすごい数のはてブ数がついているので、KUROIGAMENもその人気にあやかってやろう、という汚い魂胆。

それにしても、KRAYさんのサイトは見た目は綺麗だし、ブログの内容も充実しているし、本当素敵なサイト。特に僕は「考える」のページがコンパクトに大事なことがまとめられててお気に入りです。

KRAY - みんなで考え、作り、価値を生み出す

今回はGithubからアプリのリポジトリをcloneしてそれをローカルで立ち上げる、それをHerokuに置いて公開する、という流れではなく、ゼロから自分でアプリを作り、それをHerokuに置いて公開する、という初のWebアプリ作成に挑戦です。今回も「言語はRuby」、「サーバはHeroku」、KUROIGAMENではお馴染みの組み合わせ(そろそろPython、GAEなんかにも挑戦したいところ…誰か教えて!)。

今回つくるアプリ「偉大なるHello World」

この記事では1時間で「偉大なるHello World」というWebアプリをつくる手順が説明されています。まずは今回挑戦するそのアプリの説明を。

アプリのページに行くとログインへのリンクが表示されます。

偉大なるツイッターアプリ

ログインはTwitterのOAuthという機能を使って、Twitterアカウントでログインします。

Twitter

ログインをすると、「偉大なるHelloWorldをツイートする」というボタンが出現。

偉大なるツイッターアプリ-1

ボタンをクリックすると、「おめでとう!偉大なるHelloWorldは成功した。」というメッセージ。

偉大なるツイッターアプリ-2

Twitterを見てみると…「偉大なるHelloWorld」とツイートされてる!

Twitter _ @machida_ 偉大なるHelloWorld ...

という、これだけのシンプルなWebアプリ。

開発環境を準備。

「1時間でツイッターサービスを作ろう!」の記事が公開されたのは2010年07月23日。まだ一年も経っていないのですが、Railsが当時のバージョンと今のバージョンとで違っています。Railsはバージョンが変わると結構仕様が変わるという場合によっては厄介なフレームワーク(古いものは切り捨て、新しい要素を柔軟に吸収するため、現在でも素敵で便利なフレームワークの座を守り続けています)。Railsのバージョンが原因でうまくいかない、ってことがないように、RVMを使って、この記事と同じ環境をつくるところからスタートしたいと思います。

以前KUROIGAMENで説明したRVMのセッティングはこちら

今回つくる「偉大なるHello World」の環境について書いてあるサイトはないものかとググってみたところ、ちょうどその情報をまとめて書いてくれてる記事を発見!さすが人気記事。

偉大なるハローワールドをローカルで動かす。

この記事を書いていてくれた@zonoiseさん、ありがとうございます!

この記事の「偉大なるハローワールドを作成する際にRails初めての人がハマりそうなところ。」の部分に注目。

偉大なるハローワールドを作成する際にRails初めての人がハマりそうなところ。

Rails入っていなかったら、バージョン指定してインストールする。

gem install rails -v 2.3.8

railsのバージョンを指定して、アプリケーションを作成するには

rails _2.3.8_ app_name

それと、Rubyのバージョンもチェック。

Ruby version              1.8.7 (i686-linux)

開発環境にまとめると、

  • Rubyのバージョンは1.8.7なので、RVMを使ってRuby1.8.7を使うように設定。
  • Railsのバージョンは2.3.8なので、「偉大なるHelloWorld」用にGem set をつくる。

では、早速やってみたいと思います。

RVMでRuby1.8.7を使う設定

先日のCSS Niteで黒い画面の説明があったところなので、今回は丁寧にコマンド一個一個から説明していきたいと思います。

RVMを使ってRuby1.8.7を使う設定。まずは「rvm」コマンドに引数「use」と「バージョン」を渡します。

$ rvm use 1.8.7

もし、1.8.7が入っていない場合は、

$ rvm install 1.8.7

コマンドを打ってインストールをしてから。

「rvm use」に成功すると、

Using /Users/machida/.rvm/gems/ruby-1.8.7-p334

というメッセージが表示されます(※-p334の数字は異なる場合があります)。いつも成功しても何も言ってくれない黒い画面ですが、RVMのときはちょっと優しいですね。

これでRVMを使ってRuby1.8.7を使う設定は完了。

「kuroigamen_hello_world」用のGemsetを作成

続いて、RVMを使って、「kuroigamen_hello_world」用のGemsetを作成します。今回は「kuroigamen_hello_world」用に「kuroigamen_hello_world」という名前のGemsetを作成。

$ rvm gemset create kuroigamen_hello_world

成功すると、

'kuroigamen_hello_world' gemset created (/Users/machida/.rvm/gems/ruby-1.8.7-p334@kuroigamen_hello_world).

というメッセージが表示されます(※こちらも-p334の数字は異なる場合があります)

作成したGemsetを使う設定をします。さっきのコマンドの「create」を「use」に変えるだけ。

$ rvm gemset use kuroigamen_hello_world

成功すると、

Now using gemset 'kuroigamen_hello_world'

というメッセージが表示されます。

これで「kuroigamen_hello_world」用のGemsetを作成は完了。

Gemset「kuroigamen_hello_world」にRailsのバージョン2.3.8をインストール

続いて、作成したGemset「kuroigamen_hello_world」にRailsのバージョン2.3.8をインストール。依存する色んなGemが入るので結構時間がかかります。

gem install rails -v 2.3.8

Railsのバージョン2.3.8をインストール完了。

プロジェクト「kuroigamen_hello_world」をRailsで作成

Railsのバージョン2.3.8のインストールが完了したら「/Sites」に移動します。なんで「/Sites」に移動かと言うと、僕の場合、アプリをつくる場所はMacの「/Sites」、Finderで見ると「サイト」というフォルダ名で表示されてるディレクトリの中を指定しているからです。今回もそのディレクトリに「kuroigamen_hello_world」プロジェクトを置いて開発を進めます。移動は「cd」コマンド。

$ cd Sites/

続いて、このディレクトリに「kuroigamen_hello_world」というRailsのプロジェクトをつくります。コマンドは「rails」で、引数にプロジェクト名「kuroigamen_hello_world」という文字列を渡します。ここで念のため、使うRailsのバージョンも指定しておきたいので、「_2.3.8_」というバージョンの文字列をrailsコマンドとプロジェクト名の間にはさみます(GemsetにはRailsバージョン2.3.8しか入っていないので必要はないのですが、念のため)。

$ rails _2.3.8_ kuroigamen_hello_world

ちゃんとRailsプロジェクトのディレクトリ「kuroigamen_hello_worl」が出来ているかの確認。「ls」コマンドを使って、「/Sites」の中身をリストで黒い画面に表示してみましょう。

$ ls

「kuroigamen_hello_world」出ました(※「/Sites」ディレクトリは色々お仕事関係のリポジトリが入ってるのでぼかしを入れさせていただきました)。

ターミナル-—-bash-—-80×24-1

「kuroigamen_hello_world」ディレクトリに移動。使うコマンドは「cd」。

$ cd kuroigamen_hello_world

以上で準備は完了。とりあえず今回はここまで。

ここまで出来たら、あとは元記事の手順通りに進めれば出来ますので、気の早いかたは是非挑戦してみてください。

この記事を書いた人
machida

以前RVMのお話をさせていただいたときは、使うRubyによってGemsetが切り替わる、というところまででしたが、今回は開発するプロジェクトごとにGemsetを切り替える方法の説明です。

※前にやったRVMの説明はこちら

今回やろとしていることを図にすると、

RVMを使って複数のRubyをローカルで共存させると、使うRubyによって使うGemsetが切り替わる。

RVMとGemset

今回は使うRubyでGemsetを使い分けるのではなく、開発するプロジェクトごとにGemsetを使い分ける方法。

RVMとGemset

…ということをやってみよう、というお話です。

手順

では、早速実践。今回は「lokka-company-site-kit」という、Lokkaで会社サイトを構築するためのテーマをつくろうかなぁと思っていて、それの開発のためのGemsetを作って、それを使ってローカルで構築してHerokuにデプロイする、という作業を例に説明していきます。

まずはcdコマンドで「lokka-company-site-kit」のディレクトリに移動。そうそう、この「lokka-company-site-kit」というプロジェクトはLokkaのテーマを作成するためのプロジェクトなので、「lokka-company-site-kit」の中身はLokkaをクローンしたものです。

$ cd Site/lokka-company-site-kit

ターミナル — bash — 80×24-6

続いて、「lokka-company-site-kit」という名前のGemsetを作るコマンドを入力。

$ rvm gemset create lokka-company-site-kit

ターミナル — bash — 80×24-7

次に、「lokka-company-site-kit」という名前のGemsetを使うコマンドを入力。

$ rvm gemset use lokka-company-site-kit

「create」を「use」にするだけ!

ターミナル — bash — 80×24-8

これで完了。

作ったばかりのGemset「lokka-company-site-kit」の中身は空っぽなので、「lokka-company-site-kit」はローカルでは立ち上がりません。せっかくなので、Lokkaを立ち上げる作業もおさらいしてみたいと思います。

Lokkaをローカルで立ち上げる手順のおさらい

まずはプロジェクトに必要なgemをまとめてインストールするためのgem、「bundler」をインストール。

$ gem install bundler

ターミナル — bash — 80×24-9

続いて、ローカルでLokkaを立ち上げるためのgemを先ほど入れたbundlerを使ってまとめてインストール。

$ bundle install --path vendor/bundle --without production

ガーっと色んなgemがインストールされました。

ターミナル — bash — 80×24-10

では、Lokkaを立ち上げてみましょう。

※Lokkaを立ち上げるコマンドは以前にKUROIGAMENで紹介したものとは変わっているので注意。

$ bundle exec ruby lokka.rb

http://localhost:9646/

Test Site

立ち上がったLokkaを終了させるときは、黒い画面上で「control + c」キーを押します。

↑※この部分「command + c」って間違えて書いてしまってました。

ついでにHerokuにデプロイもおさらい

せっかくなので、Herokuにデプロイする方法もおさらいしてしまいたいと思います。

Herokuにデプロイするには、Herokuにユーザー登録する必要があります。登録方法はこちら

新しく作ったGemsetを使っているのでHerokuコマンドもまたインストールする必要があります。

$ gem install heroku

RVMのGemsetのディレクトリは「sudo」を打つ必要はないので、今回は「sudo」無しで。

ターミナル — bash — 80×24-12

次に、Heroku上に今回のプロジェクト「lokka-company-site-kit」のリポジトリ置き場を登録します。HerokuはWebのGUIがあるのに、リポジトリ置き場の登録も黒い画面でやるっていうところがなんか格好いいなぁって、エンジニアではないデザイナーの僕は思ってしまいます。

$ heroku create lokka-company-site-kit

heroku createの後にプロジェクト名を入れてください。今回僕が作った「lokka-company-site-kit」という名前はHeroku上で一つしか作れないので、まだ誰も使っていない別の名前で登録をする必要があります。

ターミナル — bash — 80×24-13

はい、できました。では、Herokuに行ってちゃんと反映されているか確認してみます。

確認はこちらから

Heroku

ちゃんと反映されてました。

最後にHerokuにデプロイ。

$ git push heroku master

ターミナル — bash — 80×24-14

Herokuから割り当てられたURLにアクセスしてみると…

Heroku | lokka-company-site-kit | General Info

Test Site-1

はい、ちゃんとHeroku上でLokkaで作ったプロジェクト「lokka-company-site-kit」が公開されました!

この記事を書いた人
machida

こんにちは、町田です。

今まではローカルでゴニョゴニョやって、自分のマシン内で立ち上がって完了、ってところまでをゴールしてやってましたが、今回は自分で公開するところがゴールです。こそこそ連載を続けてるKUROIGAMENもやっとここまで進みました。

もう静的ページを作るのに金は払わない

はい、すごいのはここです。もうこれからは静的ページを作るのにお金を払う必要はなくなります。なぜなら、Hreroku(ヘロク)というサービスを使うからです。Herokuを使えば無料で静的ページが作れてしまいます。

Herokuとは?

PaaS(Platform as a Serviceの略、パースまたはパーズ)と呼ばれてるクラウドのジャンルの一つで、アプリケーションを動かす場所を提供するクラウドです(よく聞くSaaSはサービスを提供するクラウド、PaaSはプラットフォームを提供するクラウド)。Google App EngineもPaaSです。

Google App Engineはjava、Pythonで出来たアプリを動かすためのPaaSなのですが、今回使うHerokuはRubyで出来たアプリを動かすためのPaaSです。PaaSと言ってもそのアプリが何の言語で出来てるのかによって、どれを使うのかが変わってきます。

Herokuを使えばRuby製のアプリを無料で公開することができます。今回やるのは静的ページですが、前に紹介したRuby製のCMS LokkaとHerokuの組み合わせを使えば無料で自分のブログを持てちゃいます。Wordpressとさくらの500円サーバでも十分安いと思ってたのに、Lokkaは無料なんて、すごい!このKUROIGAMENもLokkaとHerokuの組み合わせなので無料で運営しちゃってます。

Lokkaの他にもHappy1000Days!もそうだし、僕がやってる会社、合同会社フィヨルドのサービスもOSSとしてgithubに公開しているんですが、全部Rubyで出来てるので、それらもHerokuを使って無料で公開できちゃいます。

無料とは言っても、PaaSは重量課金です。転送量や使う容量、DBの容量が多い場合はお金を請求されます。まぁ、今回作るのは単なる静的ページなので、DBも必要ないし、そこまでPVもないと思うので「無料」と言ってしまいましたが、Herokuを使うのは一応自己責任で。

なんで静的ページなのにわざわざPaaSを使うの?

別に静的ページだったら広告やSEOのためのリンクが出る無料サーバーでいいじゃん、って思う方もたくさんいるかと思います。確かにそうです。ただ、自分の静的ページ置き場がPaaSって格好良くね?ってだけです。あと、広告も出ないし。

それと、Gitばっかり使ってるとFTPを使うのが面倒になってくるんですよね。バージョン管理されてないから怖いし。黒い画面をやってると、そっちの方が安心するんですよ。FTPってミスしそうで怖い。

あとは、これからKUROIGAMENでRubyで出来たアプリを公開するのにHerokuを使うことが多くなってくると思うので、その練習として静的ページをHerokuで公開するってのはちょうどいい課題かなぁ、と思って選んだってところです。

Herokuに登録

まずはHerokuに行ってユーザー登録をします。なんだかダークでアングラ臭のするサイトかもしれませんが、よく見ると色んなところでデザインが凝っててなかなか参考になります。「Sign Up」ボタンをクリック。

入力するのはメールアドレスだけ。Herokuから届いたメールを開くとURLが載ってるのでそれをクリック。移動したページでPasswordを二回入力するだけで登録完了!なんて楽ちん。この手軽さは自分でサービスを作るときも見習いたいですね。

herokuコマンドをインストール

続いて、Herokuを使うにはherokuっていうコマンドを使えるようにherokuコマンドをインストールする必要があります。黒い画面で「heroku XXXXX」って感じでコマンドを打って、ローカルで作ったLokkaやHappy1000Days!や今回の静的ページをHerokuサーバーに送ります。FTPの代わりにHerokuコマンドを黒い画面で使う、って感じです。

herokuコマンドのインストール方法は簡単。HerokuのトップページのCreateのところに書いてありますが、「sudo gem install heroku」っていうコマンドを打つだけ。HerokuはRubyのアプリ置く専用のサーバなので、herokuコマンドもRubyのGemなんですね。では、早速。

$ sudo gem install heroku

はい、出来ました。GemのインストールもHmebrewでやる「brew install XXXX」と同じで依存しているGemも一緒にインストールしてくれます。今回はherokuっていうGemをインストールした訳ですが、それが依存する色々なGemも一緒にインストールされました。

静的ページを動かすためのアプリをgit clone

一旦ここでHerokuの作業は中断。Herokuで公開する静的ページの作成に入ります。

@komagataさんが作ってくれたHerokuで静的ページを公開できるアプリ(と言ってもファイル数の少ないシンプルなものです)を毎度おなじみ、Githubからgit cloneします。今回Herokuにアップする静的ページを公開するアプリの名前を「kuroigamen-sandbox」と名付けました。

ちなみにこの「kuroigamen-sandbox」はSinatraっていうRubyのフレームワークで出来てます。Railsよりもお手軽なフレームワークで、ちょっとしたものを作るのに便利ってことをよくRubyをやってるエンジニアさんから聞きます。そうそう、LokkaもSinatraで出来てます。

ちょっと、cloneする前に。

僕はいつもアプリやサイト開発は「/Users/ユーザー名/Sites」(Finderで見ると「ユーザ/ユーザー名/サイト」とカタカナ表示されてる)のディレクトリで作業をしていますので、これからKUROIGAMENでもそうしていこうと思います。なので、

$ cd Sites/

と、「Sites」ディレクトリに移動。

今回のアプリのページはここです。今回の取ってくるリポジトリは「git@github.com:machida/kuroigamen-sandbox.git」。

$ git clone git@github.com:machida/kuroigamen-sandbox.git XXXXXX

「XXXXXX」に入れた名前がフォルダ名になって、その中にkuroigamen-sandboxの中身が入ります。僕の場合は「machida-sandbox」っていう名前で作りました。

はい、出来ました。

公開する静的ファイルをアプリに入れる

では、cloneしたアプリの中身を見てみましょう。

このpublicフォルダ以下に公開したい静的ファイルを入れます。

こんな感じで「index.html」と、フォルダ「stylesheets」を作って、その中に「style.css」を入れて、

こんな静的ページを作りました。これで公開する準備はOK。

Herokuにリポジトリ置き場を登録

ではでは、またHerokuに戻ります。

先程herokuコマンドをインストールしてherokuコマンドが使えるようになったので、それを使って今回作る「sandbox」を公開する場所を登録します。

ここで一旦、HerokuとGithubは似てるので、両方の似たところと違うところを並べてHerokuを説明してみたいと思います。

  • HerokuもGithubもgitのリモートリポジトリを作るサービス。
  • ローカルリポジトリをリモートリポジトリであるHerokuまたはGithubにpushすることで、自分のマシンでゴニョゴニョやってたことを外に出すことができる。
  • どちらもリモートリポジトリなんだけど、Githubの方はそこにpushすることでソースが公開される。
  • 一方、Herokuの方はそこにpushすることでアプリが公開される。つまり、URLを持ったサービスとしてアプリが立ち上がる。

という感じで、外のリポジトリにpushするのは一緒なんですが、目的が違うんですよね。

では、早速Herokuにリモートリポジトリ置き場を作りましょう。

まずは黒い画面でローカルの「machida-sandbox」へ移動します。僕の「machida-sandbox」は「Sites」の中にあるので、

$ Sites/machida-sandbox

で、移動完了。

いよいよherokuコマンドの登場です。トップページ左上のCreateってところにあるコマンド、「heroku create XXXX」と打つだけ。このXXXXには好きな名前をつけることができ、それが公開されるときのURLにもなります。例えば、「heroku create shimuraken」と打ったなら、そのHeroku内のリポジトリに置かれたアプリは、http://shimuraken.heroku.comというURLで公開されます(その後で自分で取得したドメインに切り替えることも可能です)。今回僕は「machida-sandbox」という名前のリポジトリ置き場をHerokuに作ります(※Heroku上では同じ名前のものは作れないので、これを読んでる皆さんは別の名前で登録してください)。

$ heroku create machida-sandbox

すると、

Git remote heroku added

って表示が出ました。これでHeroku上のリモートリポジトリに「git push」が出来るようになった、ということです。

もしかしたら、最初の一回目はメールアドレスとパスワードを聞かれるかもです。ちょっと前のことなので忘れてしまいました…。聞かれたら、入力してください。あと、これでいい?みたいなことも聞かれるかもです。

ブラウザでHerokuのページの右上にあるMy Appsをクリック(もし表示されてなかったらHerokuにログインしてから)。ここにHeroku上の自分のリモートリポジトリの一覧が表示されます。先ほど作った「machida-sandbox」が表示されました。

「machida-sandbox」をHerokuにデプロイ。

さて、作った静的ページをHerokuにアップします。人が見れるところにアップすることをエンジニアはデプロイって呼びます。デプロイ、なんか格好いいですね。「やっとバグが直ったし、テストもOKでした。ではでは、本番にデプロイしまーす。」みたいな感じで使います。

ファイルを一気に追加してみましょう。

$ git add *

強引ですが、これで一気にディレクトリ「machida-sandbox」以下のファイルを追加できます。追加の作業が終わったらコミット。

$ git commit -a -m"added files"

トップページの左上に「deploy」っていうのがありますね。ここにデプロイの方法が書いてあります。書いてある通りにやってみましょう。

$ git push heroku master

これだけ。コミットしてこのコマンドを打つだけでOKなんですよね。FTPより全然楽チンだし、安全。

これを打ったら、

The authenticity of host 'heroku.com (75.101.145.87)' can't be established.
RSA key fingerprint is 8b:48:5e:67:0e:c9:16:47:32:f2:87:0c:1f:c8:60:ad.
Are you sure you want to continue connecting (yes/no)? 

って聞かれるかもです(すいません、ちょっとこの辺は環境によって変わるかもで、そこは未確認)。もし聞かれたら、「ここ信用できるの?ここに繋いじゃっていいの?」って言う感じですね。答えは「yes」ですので、yesと打ってEnterキー。僕の場合、ちょっとその画面のままかなり長時間放ったらかしにしてしまったので、エラーが出てしまいました。もう一回、「$ git push heroku maste」を打ったらうまくいきました。

では、ちゃんと公開されてるか確認してみます。

URLはHerokuのサイトの右上、「My Apps」をクリックして、「machida-sandbox(自分で付けたアプリ名)」をクリック。そこで表示されたページにある、Heroku URLってところに書いてあります。

早速見てみると…

出来たー。

この記事を書いた人
machida

今までデザインテロを行う準備のための情報をずっと書いてきましたが、今回はいよいよ実践です。ターゲットとして狙うのはRubyで出来たCMS「Lokka」。「Lokka」の作者は「Webデザイナーの為の「本当は怖くない」”黒い画面”入門でもお馴染みのkomagataさんです(すっごい身内ですが…)。今回はLokka本体を攻めるのではなく、 「Lokkaのテーマの作成をしてgithubにそれを公開する」、というのに挑戦したいと思います。今回のデザインテロが僕も含めてデザイナーの方々のお手並み拝見って感じで、みんなの作ったテーマを見せ合う機会になれば、と思います。そうそう、このKUROIGAMENもLokkaで作られてます。

「テーマ」という言葉が出てきましたが、Lokkaはwordpressと同じで、見た目の部分に関わるファイルは別になってて、それをテーマと呼びます。テーマを格納するフォルダに自作のテーマを入れて、Lokkaの管理画面からそのテーマを使って表示るように設定をします。

githubからgitを使ってLokkaをローカルにclone

では、まずはローカルでLokkaを動かすところから。Lokkaはgihubにリポジトリがあるのでそこからローカルにcloneします。

Lokkaのリポジトリ

今回は開発中のLokkaに手を入れるという訳ではなく、いじったら作者にpull requestを送ったりや、別の進化を遂げたLokkaを公開する、ということはしません。Lokkaのテーマだけを公開するので、今回はLokkaのリポジトリを自分のリポジトリにforkをする必要はありません。では、早速自分のマシンにLokkaのローカルリポジトリを構築しましょう。

$ git clone git@github.com:komagata/lokka.git

はい、このコマンドを打つだけです。あと、ちなみになんですが、僕の場合は、サイトのローカルリポジトリを作るディレクトリを「Users/macida(それぞれのユーザー名)/Sites/」の中に指定しています。この辺は人によってやり方が違いますが、自分のユーザーのhome直下でサイトを開発するより、こっちのディレクトリの方が余計なものがないのですっきりしてておすすめです。

黒い画面を立ち上げたら、

$ cd Sites

…と、ディレクトリを移動した後に、git cloneをやると、そのディレクトリにローカルリポジトリが出来ます。

ついでに、今回はLokkaのローカルリポジトリを作りましたが、今後Lokkaをいくつもローカルに作っても大丈夫なように、

$ git clone git@github.com:komagata/lokka.git my_first_lokka

…と、cloneするリポジトリのあとの変数に、Lokkaのリポジトリを収めるフォルダ名を付けると便利です。上記のコマンドでは「my_first_lokka」というディレクトリに、Lokkaのリポジトリが収められます。

このコマンドを打ってみたらいきなりエラー!

cloneしたLokkkaをローカルで立ち上げる。

さて、次は先程cloneしたLokkaをローカルで立ち上げる作業です。便利なことにその手順はLokkaのREADMEに書いてあります。ここにもコピペしておきましょう。

INSTALLATION

$ gem install bundler
$ git clone git://github.com/komagata/lokka.git
$ cd lokka
$ bundle install --path bundle --without production test
$ bundle exec rake db:set
$ bundle exec rackup

コマンドがまんま書いてありますね。これをそのままやるだけでOKという。簡単、簡単。

POINT!

プログラマーの方に是非聞いていただきたいのですが、githubでリポジトリを公開する際はREADMEの内容を充実させるのがおすすめです。ここにローカルで立ち上げる手順やこのリポジトリの内容などを書いておいていただけると、我々デザイナーもデザインテロがやりやすくなります。

では、まずは最初のコマンドに挑戦。

$ gem install bundler

Lokkaはrubyで出来たCMSなのですが、rubyで作られたアプリには「RubyGems」というプラグインみたいな機能が使えて、そのプラグイン一つ一つを「gem」と呼びます。

その「gem」の一つである、「bundler」というgemを今回インストールしますよ、というコマンドです。bundlerがまた便利でgemで、そのアプリを立ち上げるのに必要なgemを一つのセットとしてパッケージにしてくれるgemです。今回はLokkaを立ち上げるので、Lokkaを立ち上げるのに必要なgemのセットを作者であるkomagataさんがbundlerでセットにしておいたので、その機能を使うためのgem、bundlerを使えるように自分のマシンにinstallする、というのが今回の手順です。

デザイナー的にわかりやすく説明すると、例えば自分でwordpressのテーマを作成したとします。そのとき、そのテーマのパンくずを表示する部分には「Breadcrumb Nav XT」っていうプラグインをよく使いますよね。それが入ってないと自分が作ったテーマを第三者が使うときにちゃんと表示されないですよね。そんな感じで、これを使うときはこのプラグインが必要、ってものをまとめてインストールできる機能が「bundler」です。wordpressにもそういった機能があったらいいなぁ…と、常々思っています。

んじゃ早速、と、このコマンドを打ってみたらいきなりエラー!

このコマンドを打ってみたらいきなりエラー!

WARNING:  Installing to ~/.gem since /Library/Ruby/Gems/1.8 and
/usr/bin aren't both writable.
WARNING: You don't have /Users/machida/.gem/ruby/1.8/bin in your PATH,
gem executables will not run.
ERROR: Error installing bundler:
bundler requires RubyGems version >= 1.3.6

こんなメッセージが表示されました。ちゃんとこのエラーメッセージを読んでみると、二つの原因でエラーが起きてることがわかります。黒い画面が英語がバーっと出てくることがちょくちょくありますが、結構ここにハマった状況を抜け出すヒントが隠されてるんですよね。なので、英語でもちゃんと読む必要があったりして、黒い画面って面倒。

  1. 「/Library/Ruby/Gems/1.8」と、「/usr/bin」に書きこむ権限がないよ。
  2. 「/ Users/machida/.gem/ruby/1.8/bin」にPATHが通ってないのでgem が実行できないよ。
  3. 「RubyGems」のバージョンは1.3.6以上じゃないとbundlerは使えないよ。

…と、黒い画面は言ってます。

まず、「3」のバージョンの問題から。バージョンがちゃんと対応してないと始まらないので、「RubyGems」のアップデートからやってみたいと思います。Xcodeをインストールしたときに「RubyGems」も一緒に入ったんだと思うのですが、それが古かったんですね。

update方法はここにありました。

$ gem update --system

上記のエラーの原因「1」にある書き込み権限のせいでupdateも行えないみたいです。

これでいけるそうなんですが、やってみたらエラー。上記のエラーの原因「1」にある書き込み権限のせいでupdateも行えないみたいです。

じゃあ「sudo」を足せばいけるかも。

$ sudo gem update --system

じゃあ「sudo」を足せばいけるかも。

いけた!めでたく1.4.2にupdateされました。File not found: READMEなんて出てるけど、まぁいいや。

もう一度bundlerのインストールに挑戦。

$ gem install bundler

またエラー

またエラーが出たけどエラーメッセージが短くなりました。

ERROR:  While executing gem ... (Gem::FilePermissionError)
You don't have write permissions into the /usr/bin directory.

ほほう、「/usr/bin」の書き込み権限がないよ、って言ってますね。他のエラーの原因は先程の作業でクリアしたみたい。権限のことなら「sudo」で解決か!?

$ sudo gem install bundler

じゃあ「sudo」を足せばいけるかも。

出来た!無事にbundlerのインストールが完了しました。

さて、続いてのコマンド、

$ git clone git://github.com/komagata/lokka.git

リポジトリのcloneですね。これは先程やってしまったので飛ばしてOKですね。今回僕は、

$ cd Sites$ git clone git@github.com:komagata/lokka.git my_first_lokka

と、Sitesの中に「my_first_lokka」という名前でcloneしました、

続いては「cd」。Lokkaのローカルリポジトリのディレクトリに移動します。

$ cd lokka

僕は「my_first_lokka」というディレクトリをLokkaのディレクトリにしたので、

$ cd my_first_lokka

に、なります。ここまでは問題ないですね。次のコマンドは、

$ bundle install --path bundle --without production test

さっきまでハマってた、bundlerを使って、Lokkaを立ち上げるために必要なgemのセットをインストールする、っていうコマンドです。やってみましょう。

Lokkaを立ち上げるために必要なgemのセットをインストールする

何だかちょっと時間がかかって色んなものが入ってきました。無事完了です。これでLokkaを立ち上げるために必要なgemのセットが自分のローカルのLokkaの中にインストールされました。次のコマンドは、

$ bundle exec rake db:set

bundlerでインストールしたgemの中に入ってる「rake」ってやつを使ってdbをLokkaで使うように初期化するってコマンドですね。Lokkaが便利なのは、wordpressと違って、あらかじめmySQLやapacheなんてものをこっちで用意しなくても、「bundler」にパッケージングされた「gem」の中に必要なものが全て入ってるから、それをインストールしたら、あとは手順に従ってコマンドを打つだけでいい、ってところです。現在、komagataさんはさらに黒い画面を使わなくてもMacのローカルでLokkaを立ち上げるアプリを開発して、さらに敷居を下げようとしてますが、まぁ、僕らオープンソースにデザインテロをしようとしてる攻めるデザイナーは黒い画面でやっちゃいましょう。

DB初期化

Upgrading Database...
Initializing Database...

こんなメッセージが出ましたね。データベースをアップグレートして、初期化したみたいです。これも成功。では、最後のコマンドへ。

$ bundle exec rackup

これは、ローカルのLokkaを立ち上げるっていうコマンドです。これからローカルのLokkaを立ち上げるときはまずこのコマンドを打ってから始めるので、今後もしょっちゅう使うことになります。

まずこのコマンドを打ってから始める

うまくいったっぽい!では、ローカルのLokkaへブラウザでアクセスしてみましょう!http://localhost:9292/(ローカルのLokkaはこのURLになります)。

やった!Lokkaが立ち上がりました!

やった!Lokkaが立ち上がりました!

これも重要なんですが、立ち上がったLokkaを閉じる際には、「control + C」を押します。これで、Lokkaは閉じます。

これからLokkaのテーマカスタマイズ方法や、Lokkaで作ったブログを公開する方法もここで書いていきますが、とりあえずは「public/themes」の中を覗いて、今あるテーマのファイルの構造を見たり、/admin/にアクセスして管理画面を覗いたりしてみてください。結構wordperessに似てるので、鋭い方はガシガシカスタマイズ出来ると思います。

komagataさん、Lokkaのデザインテロリストに向けたLokkaのカスタマイズ方法の記事お願いしますー!

最新の実績

  • Remember The Wordpress
  • happy1000days
  • happy1000days
  • happy1000days

こちらも合わせてどうぞ

  • webデザイナーの為の「本当は怖くない」“黒い画面”入門

アフィリエイト