Hatena::ブログ(Diary)

ハマナカインターネット RSSフィード Twitter

September 08(Thu), 2011

iPhoneアプリをリリースしました

iPhoneアプリをリリースしました!

海外セレブ ゴシップニュース

f:id:answered:20110908002653p:image

約50の海外セレブのニュースサイトをまとめて閲覧できる無料のリーダーアプリです。

サービスの概要は上記のリンク先に書いてあるので、こっちにはつくろうと思った動機や技術的なことをまとめておきます。

作った理由

最近仕事でスマートフォンの話をする機会が増えてきたのですが、開発経験がなかったので、一度きちんとやっておこうと思って作ってみました。開発だけでなく、広告周りのことやAppleの申請関連のことも、知識としては知っていても、肌感覚がわからなかったので、そろそろやってみなきゃな、と。

Webサービス系の技術はひと通り出来るようにしておきたかったというのも、理由の1つです。システム的にはかなりライトな内容ですが、ずっとサーバーアプリの開発をメインでやってきたので、クライアント側の開発は新鮮でたのしかったです!

サービス内容

  • 前から女性向け(ネットリテラシーが高くない、普通の人向け)サービスが作ってみたいと思っていたので、「女性が電車の中で使うアプリ」というお題で企画してもらいました。
  • アイデアを元にプロトを作り、動きを見てもらいながら細かい機能を詰めていく感じで進めました。

システム構成

  • アプリはTitanium、データ取得バッチがRubyです。
  • TitaniumはiOSandroidの両方の文化を手軽に体感したかったので使ってみました。
  • TItanium簡単!もう少し安定すれば、技術系じゃない人にもオススメできそうです。
  • 次はネイティブ言語でつくろう。ただTitaniumの楽さに慣れてしまうと、もう戻れないかも。。。
  • サーバーははじめGAE使おうと思ったけど、値上げ騒動もあったしやめておいて正解?

その他

  • モチベーションを保つというか、退路を断つためにMBAを買いました。
  • iPhoneandroidの両方対応アプリを作っていると、思想の違いがわかって楽しいです。iPhoneアプリは「iOSの世界の中の1機能」を作っているようなイメージでした。
  • ついでに色々試してみようと、公式サイト?はFacebookページで作ってみました。これはこれで奥の深い分野ですね。色々出来すぎて難しい。。。

http://www.facebook.com/celebNewsApp

そんな感じです。家でのサービス開発は久々だったので楽しく開発しました。

次はandroid版を出すためにがんばります!

July 28(Thu), 2011

MacbookAirを買ってすぐにインストールしたアプリ一覧

MacbookAirを買いました!

4〜5年前の白Macbookからのアップグレードなので何一つ不満はありませんヽ(*´∀`)ノ

嬉しいので備忘録がてらにインストールしたアプリをまとめておきます。

直接アプリダウンロードしてインストール

アプリ用途価格
Google Chrome メインブラウザ 無料
Google 日本語入力 メインIME 無料
Firefox サブブラウザ 無料
Dropbox メインストレージとして利用 無料
Stuffit Expander 解凍ソフト 無料
CotEditor 日本語文章を書く際のメインエディタ 無料
textmate LLプログラミング用のメインエディタ $58
Titanium Studio Titanium用開発環境 無料
eclipse java用開発環境 無料
Cyberduck FTPクライアント 無料
MAMP apache, PHP, MySQLのセット 無料
androidSDK androidアプリ開発用 無料
Growl アプリケーション更新情報通知アプリ 無料

App Storeアプリダウンロードしてインストール

アプリ用途価格
xcode Apple統合開発環境 無料

homebrew

$ ruby -e "$(curl -fsSL https://gist.github.com/raw/323731/install_homebrew.rb)"
git
brew install git
rvm (ruby管理システム)
bash < <(curl -s https://rvm.beginrescueend.com/install/rvm)
echo '[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function' >> ~/.bashrc
rvm install 1.8.7; rvm system; rvm --default 1.8.7

いわゆるクラウドにデータを移行しているおかげでMacの移行もらくらくです。

spacesがなくなってたり、スクロールの向きが逆だったり、いまいち慣れてないですが楽しく使いはじめました!

April 25(Mon), 2011

Watirでブラウザテストを自動化する

仕事で大量のURL(十数万)にブラウザからアクセスして挙動を確かめたい、という要件がありました。(例えば、htmlに不適切なJavascriptコードが含まれてないか、など。例えば。)

最初はmechanizeで適当にすまそうと思ったのですが、今回の案件Javascriptを実行した結果を検証する必要があったので残念ながら却下。さてどうしようかと考えていたのですが、同僚の@くんにWatirを教えてもらったので使ってみました。

Watirとは

Waitr(ウォーター)はRubyからIEを操作して自動テストを実現するライブラリです。

インストール

gemで一発インストール

gem update --system
gem install watir

IEgoogleアクセスする

以下はIEを起動してgoogleアクセスするコード。Watir::IE.newをするとブラウザが起動して、goto(url)を実行すると、該当のURLアクセスします。

require "watir"
ie = Watir::IE.new
ie.goto("http://www.google.com/")

テキストフィールドに文字列を追加

nameがhogeのテキストフィールドにfooという文字列を追加するのはこんな感じ。

ie.text_field(:name => "hoge").set "foo"

IEを操作してhtmlを取得するので、サーバーから返却されたhtmljavascriptが実行された後の状態でオブジェクト化されています。なので当然javascriptが追加した文字列を取得する、ということも出来たりします。

例えばjavascripth1タグをappendしていたら、それもオブジェクトとして取得できました。すばらしい。

困ったこと

ただ、試しに適当なスクリプトを作って10万件ほどのURLを食わせておいて次の日に見たら、1万件くらいで処理が止まっていました。原因はIEのTemporary Internet Filesディレクトリ内のファイル容量が制限を超えていたため。。。ディレクトリを読み込み専用にしてしのぎました。

また、ローカルPCのIEを自動操作するライブラリの特性からか、はたまた公式サイトの情報が古いのか、サンプル通りにコードを書いても動かないこともあるので注意です。

参考情報

January 10(Mon), 2011

Ruby技術者認定試験に受かるまでにやった3つのこと

Ruby技術者認定試験を受けたので、試験までの期間にやったことをまとめました。

はじめに

f:id:answered:20110110195036j:image:left

ある日、会社の同僚のDくんに「Ruby認定インテグレーターになりたいから資格とってきて」と言われました。

Rubyアソシエーションのページにも記載されているように、企業が「Ruby Association Certified System Integrator」として認定されるためには、5名以上が正社員として所属している必要があります。Dくんはなぜかこれが欲しくなったようです。不思議な人ですね。

でも誘われると自分としても欲しくなってきたので、Ruby技術者認定試験を受けてみることにしました。

前提スキル

自分のRubyスキルは以下のような感じです。

  • Ruby歴3~4年くらい。
  • 独学。
  • Railsでの小〜中規模webサービスの開発経験あり(業務/趣味含めて6~7サイトくらい)
  • ここ1〜2年は業務内容が変わって、会社では開発自体をあまりやってないです。

という感じで、そこそこRubyはさわっているのですが、独学なことや、最近プログラミングから遠ざかっていることもあって知識の抜け漏れが心配でした。

基本戦略

あまり時間もかけられなかったので、Ruby技術者認定試験 公式ガイドだけを勉強することにしました。結論から言うと、これだけで十分でした。

その1 : 公式ガイドブックの輪読会に参加

最初にやったのがこれです。Dくん主催の輪読会が週に1度開催されたので、それに参加しました。章ごとに輪読を行い、その後巻末の予想問題から関連する問題を抜き出し、解くスタイル。週に1時間、業務をはなれて他部署のメンバーと勉強するのはなかなか楽しかったです。

これでRubyの基礎知識の抜けはだいぶカバーできました。

その2 : 公式ガイドブックの予想問題を繰り返し解く

体系的に覚えたら、つぎは予想問題です。公式ガイドブックには100問の予想問題が載っているので、試験1週間前からこれを繰り返し解きました。

  1. 50問ずつ試験をとく
  2. わからなかった箇所にポストイットをはる
  3. ポストイットの箇所だけ再度行う
  4. 間違える部分が0になるまで繰り返す

その3 : 間違えやすい文法をまとめる

予想問題を解いていると、試験に出やすいメソッドがわかってきます。

  • String#chompと String#chopの違いについて
  • Array#shift, Array#unshift, Array#pop, Array#pushの違いについて
  • Array#detect, Array#find, Array#select, Array#find_allの区別について

これらの予想問題に出ているメソッドGoogle SpreadSheets にまとめて通勤の電車の中で読むようにしました。

終わりに

自分の結果は100点中86点(合格ラインは75点)。正直あまりぱっとしない結果*1でしたが、勉強に費やした時間から考えるとまあまあといったところでしょうか。

定期的な輪読会以外は1週間前からの勉強でなんとか合格点までもっていくことが出来ました。独学だとなかなか使わないメソッドについて学べたりと試験によって得られるメリットもわりと大きく、かける時間と得られる効果のバランスも悪くないと思います。

新年に新しいことに挑戦したいと思われている方は勉強するきっかけとして試験を利用してみるのもといいと思いますよ!

*1: 同じような勉強法で満点だった人もいます

August 26(Thu), 2010

CentOS on ニフティクラウド(モニター日記3) : ユーザーを追加する

ここから先はニフティクラウドあんまり関係なくなってきますが、空気を読まずに続けます。(3ヶ月後の移行に向けて備忘録代わり)

ユーザを作成する

rootはなんでもできるユーザなので、便利な存在である反面、危険な存在でもあります。なので普通はサーバーへのログインには別のユーザーを利用します。

一般ユーザーを作成する

まず一般ユーザーを作成します(hoge-userの部分は適宜読み替えてください)。

[root@localhost ~]# adduser hoge-user
パスワードを設定する
[root@localhost ~]# passwd hoge-user
Changing password for user hoge-user.
New UNIX password: 
Retype new UNIX password: 
passwd: all authentication tokens updated successfully.
rootになれるユーザーを限定する

次にwheelグループにhoge-userを追加します。

[root@localhost ~]# usermod -a -G wheel hoge-user

今度はvisudoを実行して、wheelグループのみsuコマンドでrootになれるように設定します。

[root@localhost ~]# visudo

コマンド実行後、以下の部分を探し出します。「%wheel」で検索をすれば見つかるでしょう。

## Allows people in group wheel to run all commands
# %wheel  ALL=(ALL)       ALL

#を外します。

## Allows people in group wheel to run all commands
%wheel  ALL=(ALL)       ALL

これでrootになれるhoge-userさんが出来上がりました!