初挑戦のオンパレードですよ

「なつやすみが来ないなー。もはやちょっぴりせつないとかいうレベルじゃあないのです。」
*1

夏休みが来ないのに夏休みの宿題とは如何。

お題

Twitter の投稿の中から一定のタグ(#メモ など)がついているものを拾い上げ、それを Twitter に投稿して知らせる bot を作る」
もう一つのテーマは未経験者向けに環境構築から説明すること。

使用ツール等
  • 言語:ruby 2.0 選定理由:宗教上の理由で
  • ホスティング:Heroku 選定理由:ruby を無料で hosting できるらしい。あと遊んでみたい。
  • バージョン管理:git 選定理由:heroku を使うので自動的に
  • OS:Ubuntu 14.04LTS 選定理由:Windows はいろいろ辛くなるのが目に見えているので Linux がいい + 使ったことがある
  • 仮想環境:VirtualBox 選定理由:使った事がないので試しに。

あとなんかあったかな

全体構成

heroku のサーバで一日一回、tweet を取得して結果を post するスクリプトを走らせる。
これだけ。

環境構築

VirtualBox のインストール

Oracleの公式Downloadページから落としてインストールしましょう。
以上。

Ubuntu のインストール

さっき上に挙げた「VirtualBoxUbuntu 14.04 LTSをインストールする(準備編)」を参考に、Ubuntu 14.04 をダウンロードしてインストールしましょう。イメージはここからダウンロードできます。
上記ページに従って Guest Additions まで入れましょう。
ホストの Windows とフォルダ共有ができないと面倒なので。
Guest Additions のインストールまでは「VirtualBoxUbuntu 14.04 LTSをインストールする(インストール編)」を見ましょう。その後はUbuntu VirtualBox その20 - ゲストOSで共有フォルダーを利用する - kledgebに従って、共有フォルダを追加+共有フォルダを sudo なしで使えるようにします。
Windows 側から見た共有するフォルダの場所はどこでも構いませんが、
C:\ドライブ直下とかにつくるとよいです(探すのがめんどくさくないので)。
「自動マウント」と「永続化」をチェックしておきましょう。
共有フォルダ設定が反映されるよう、マシンを再起動。

再起動後もターミナルを起動して

ls -l /media/

を実行します。「sf_設定ウィンドウに入力した名前(私の場合は sf_share)」というディレクトリが存在していれば、ひとまずフォルダ共有は成功です。が、そのままでは sudo しないと読み書きできません。

group vsboxsf への参加が「設定」画面からできなかったため、コマンドで。

sudo gpasswd -a [username] vsboxsf #vsboxsf のグループに`username'のユーザを追加

[username]は自分のログインユーザ名で置き換えてください。
設定の反映にはログアウト/ログインが必要。
最後に

mkdir /media/sf_share/hoge #sf_share の部分は自分のつくった共有フォルダ名に置き換える

して怒られなければ、「Windows 上でソースを編集したりしつつ、Linux のツールを使う」準備が出来ました〜

あとで widows 側で設定ファイル弄ったりしてこのフォルダにおいて使います。

UbuntuCUI に切り替える

起動時が GUI だとホストマシンが非力な場合(つまり私が)ツライため、CUI にします。
このへんを参考にしつつ。Ubuntu 14.04 を CUI で起動 -Ubuntu 14.04, 13.10: Boot into Text Mode / Console / Command Line | UbuntuHandbook
↑では vim 入れてるけど、個人的には元から入っている nano がかなり使いやすいので、それをつかう。

まずは Ubuntu 上にマウス/キーボードがキャプチャされている状態で Ctrl+Alt+T を押して端末アプリを起動。その上で

sudo cp /etc/default/grub /etc/default/grub.back #backup の作成。自信があれば不用
sudo nano /etc/default/grub #nano という editor が起動する

するとテキストエディタが開くので、上記サイトにあるように、
grub のモードを"quiet splash"->"quiet splash text"に書き換える。
Ctrl+Oで保存、Ctrl+Xでnanoを終了(「^英字」は「Ctrl+英字」の意)

sudo update-grub #変更した設定の反映

コマンド実行後に「完了」の文字が現れたら再起動。

おおサクサク動く。でもUTF-8がまるで使えないのはちとつらい。
fbtermのインストール・設定及びその他まとめ | ペンギンの道しるべこのへんを参考にしつつ、fbtermを使えるようにしましょう。

sudo apt-get install fbterm #変更した設定の反映

とりあえず fbterm を install します。
途中の文字が◆に文字化けしてますが、
インストールが終ると元のプロンプトに戻ってくるのでその状態で

fbterm

と一回打っておきます。Permission Denied となにやら怒られますが、これで設定ファイル ~/.fbtermrc が作成されました。
(~ は Unix 系で「ログインユーザのホームディレクトリ」を指します。
通常は /home/[username]/ のことです。)

その後は一度 super user で fbterm の起動を試します。

sudo fbterm

…残念ながらフォントが崩れてとても読めませんね…。
試行錯誤の結果、以下の設定でのみマトモに読める状態になりました。トホホ。

  1. フォントは unifont 16pixel 固定
  2. autohint あり
  3. antialias なし

なんでじゃー!

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <match target="font">
    <test name="lang" compare="contains">
      <string>ja</string>
    </test>
    <edit name="hinting" mode="assign">
      <bool>true</bool>
    </edit>
    <edit name="autohint" mode="assign">
      <bool>true</bool>
    </edit>
    <edit name="hintstyle" mode="assign">
      <const>hintslight</const>
    </edit>
    <edit name="embeddedbitmap" mode="assign">
      <bool>false</bool>
    </edit>
    <edit name="antialias" mode="assign">
      <bool>false</bool>
    </edit>
  </match>
</fontconfig>

画面サイズが小さい…ConsoleFramebuffer - Community Help Wikiを参考に大きくします

rbenv / Ruby 2.0 のインストール
git のインストール
bot を作ってみる
Heroku に上げてみる

*1:参照のこと:D