September 08(Thu), 2011
iPhoneアプリをリリースしました
iPhoneアプリをリリースしました!
約50の海外セレブのニュースサイトをまとめて閲覧できる無料のリーダーアプリです。
サービスの概要は上記のリンク先に書いてあるので、こっちにはつくろうと思った動機や技術的なことをまとめておきます。
作った理由
最近仕事でスマートフォンの話をする機会が増えてきたのですが、開発経験がなかったので、一度きちんとやっておこうと思って作ってみました。開発だけでなく、広告周りのことやAppleの申請関連のことも、知識としては知っていても、肌感覚がわからなかったので、そろそろやってみなきゃな、と。
Webサービス系の技術はひと通り出来るようにしておきたかったというのも、理由の1つです。システム的にはかなりライトな内容ですが、ずっとサーバーアプリの開発をメインでやってきたので、クライアント側の開発は新鮮でたのしかったです!
サービス内容
- 前から女性向け(ネットリテラシーが高くない、普通の人向け)サービスが作ってみたいと思っていたので、「女性が電車の中で使うアプリ」というお題で企画してもらいました。
- アイデアを元にプロトを作り、動きを見てもらいながら細かい機能を詰めていく感じで進めました。
システム構成
- アプリはTitanium、データ取得バッチがRubyです。
- TitaniumはiOS、androidの両方の文化を手軽に体感したかったので使ってみました。
- TItanium簡単!もう少し安定すれば、技術系じゃない人にもオススメできそうです。
- 次はネイティブ言語でつくろう。ただTitaniumの楽さに慣れてしまうと、もう戻れないかも。。。
- サーバーははじめGAE使おうと思ったけど、値上げ騒動もあったしやめておいて正解?
その他
- モチベーションを保つというか、退路を断つためにMBAを買いました。
- iPhoneとandroidの両方対応アプリを作っていると、思想の違いがわかって楽しいです。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を実行した結果を検証する必要があったので残念ながら却下。さてどうしようかと考えていたのですが、同僚の@nunaくんにWatirを教えてもらったので使ってみました。
Watirとは
Waitr(ウォーター)はRubyからIEを操作して自動テストを実現するライブラリです。
インストール
gem update --system gem install watir
IEでgoogleにアクセスする
以下は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を取得するので、サーバーから返却されたhtmlもjavascriptが実行された後の状態でオブジェクト化されています。なので当然javascriptが追加した文字列を取得する、ということも出来たりします。
例えばjavascriptでh1タグをappendしていたら、それもオブジェクトとして取得できました。すばらしい。
困ったこと
ただ、試しに適当なスクリプトを作って10万件ほどのURLを食わせておいて次の日に見たら、1万件くらいで処理が止まっていました。原因はIEのTemporary Internet Filesディレクトリ内のファイル容量が制限を超えていたため。。。ディレクトリを読み込み専用にしてしのぎました。
また、ローカルPCのIEを自動操作するライブラリの特性からか、はたまた公式サイトの情報が古いのか、サンプル通りにコードを書いても動かないこともあるので注意です。
参考情報
January 10(Mon), 2011
Ruby技術者認定試験に受かるまでにやった3つのこと
Ruby技術者認定試験を受けたので、試験までの期間にやったことをまとめました。
はじめに
ある日、会社の同僚のDくんに「Ruby認定インテグレーターになりたいから資格とってきて」と言われました。
Rubyアソシエーションのページにも記載されているように、企業が「Ruby Association Certified System Integrator」として認定されるためには、5名以上が正社員として所属している必要があります。Dくんはなぜかこれが欲しくなったようです。不思議な人ですね。
でも誘われると自分としても欲しくなってきたので、Ruby技術者認定試験を受けてみることにしました。
前提スキル
- Ruby歴3~4年くらい。
- 独学。
- Railsでの小〜中規模webサービスの開発経験あり(業務/趣味含めて6~7サイトくらい)
- ここ1〜2年は業務内容が変わって、会社では開発自体をあまりやってないです。
という感じで、そこそこRubyはさわっているのですが、独学なことや、最近プログラミングから遠ざかっていることもあって知識の抜け漏れが心配でした。
基本戦略
あまり時間もかけられなかったので、Ruby技術者認定試験 公式ガイドだけを勉強することにしました。結論から言うと、これだけで十分でした。
その1 : 公式ガイドブックの輪読会に参加
最初にやったのがこれです。Dくん主催の輪読会が週に1度開催されたので、それに参加しました。章ごとに輪読を行い、その後巻末の予想問題から関連する問題を抜き出し、解くスタイル。週に1時間、業務をはなれて他部署のメンバーと勉強するのはなかなか楽しかったです。
これでRubyの基礎知識の抜けはだいぶカバーできました。
その2 : 公式ガイドブックの予想問題を繰り返し解く
体系的に覚えたら、つぎは予想問題です。公式ガイドブックには100問の予想問題が載っているので、試験1週間前からこれを繰り返し解きました。
その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週間前からの勉強でなんとか合格点までもっていくことが出来ました。独学だとなかなか使わないメソッドについて学べたりと試験によって得られるメリットもわりと大きく、かける時間と得られる効果のバランスも悪くないと思います。
新年に新しいことに挑戦したいと思われている方は勉強するきっかけとして試験を利用してみるのもといいと思いますよ!
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




