さよなら2015年

あと数時間で2015年も終わるので振り返りを込めてエントリー。

仕事

2012年から新しい事業領域を担当することになり、毎日試行錯誤しながら働いてきたが、15年は多少なりとも自分がやりたいと思っていたことが実現できた年だったと思う。

具体的には、ひとつは海外でのサービス展開、2点目は日本初のサービス提供だ。

海外展開

海外展開は、具体的には日本企業向けの北米リージョンなので、社会人になった時に漠然と思い描いていた「自分が作ったサービスを世界中の人に使ってもらう」は厳密にはまだ実現できていない。とはいえ、日本ではない場所で自分たちが作ったサービスが動いていることは非常に感慨深い出来事だった。

日本初のサービス提供

新サービス開発もいろいろ行ったが、その中でも「IT×災害対策」を安価なサービスとして具現化できたのがよかったと思っている。震災の時に募金サービスを開発した時もそうだったけど、仕事を通じて幾ばくかでも社会に何かを還元できたのなら、Webサービスを作る仕事をするものとして素直にうれしい。

新しい坦務

また、7月からは新しい範囲の仕事をさせていただき、またしても未知の領域との格闘をしながら、自分自身の働き方を模索してきた日々だった。ここに関してはまだ成果はおろか、ステップの踏み方を探っている状態に近い。

焦りもあるが、あまり前例のないことなので、今後も会社として継続的な取り組みにするには自分が結果を出すしかないので、成果にこだわる姿勢は持ちづづけたい。

プライベート

子供と出かけることが増えた1年だった。特に日帰りでの遠出ができるようになったことが大きい。今のところ埼玉の鉄道博物館やスタンプラリーで行った厚木までが最長だが、来年は下の子が生まれることもあり、なかなか家族で出かけることが難しくなるので泊まりでのイベントも考えてみたい(とはいえ、完全なママっ子なので子供が生まれたら赤ちゃん返りしそう)。

f:id:answered:20150531101415j:plain 仕事・プライベートを合わせて4回海外に行った。中国・韓国・アメリカ・台湾。英語は相変わらずイマイチだが、海外に行くということ自体は非日常性は薄れてきたように思う。

自分がいる場所と世界が地続きであるという感覚ができてきたというか。"海外"は自分が働く上での大事なキーワードの一つなので、来年も意識していこうと思う(そういえば1月にアメリカに行く)。

自宅サービスは12年以降、殆どできてない。業務上コードを書いたりインフラを構築したりする時間が極端に減った今、自宅サービス開発は技術的な"血肉"になる経験を得られる場所でもあるので、来年はもう少し意識的に時間を増やしたい。仕事以外の分野のインプットがほぼできていないので、自分自身の枠を広げるためにもいろいろ挑戦したいところだ。

来年に向けて

まず、2月に子供が生まれる前に、ワークライフバランスをどうとるのかを明確にすることが最初のポイントだ。家族と仕事と自分のやりがいのすべてが成り立つ絶妙なバランスの取り方を考えないといけない。

なんとなく漠然と考えているのは仕事とプライベートを明確に分離するのではなく、プライベートの中に仕事を取り混ぜていくスタイル。子育てしながらタブレットスマートフォンを駆使して仕事もする。嫌がる人もいそうだけど、今の自分の働き方や家族の状態を考えるとそれが一番いい気がしている。

また、仕事面では次の次くらいの展開を考えた動き方をしたい。15年の最後にいくつか種まきをした案件があるのでそれらを回収しつつ、今後の計画をまとめて行ければと思う。

今年一年間はいろいろあった気がするけど、結局のところは家族やチームメンバーに支えられてなんとかやってきただけだった気がする。自分一人だと何もできなかったと思うので、周りの人たちには感謝しかない。来年は公私共にさらにメンバーも増えて賑やかになりそうだけど、なんとか周りに対しても良い影響を還元できるように進んでいきたい。

MacのVMware Fusion4でESXiを動かすためのメモ

仕事でvSphereを覚える必要が出てきたので勉強しようと思ったんですが、環境構築が結構めんどくさい。。。安いwindows機でも買うかと思ってたら@さんからVMware Fusionの上でも動かせることを教えてもらいました。

ということでインストール手順をメモ

VMware Fusion4のインストール&ダウンロード

VMware Fusionのver1でライセンスが止まっていたので以下から4の評価版をダウンロードしてインストール。

仮想化を使用して Mac 上で Windows を実行: VMware Fusion の無償評価版 | VMware 日本
screenshot

ESXiのインストール

次にこちらもESXiをダウンロード。

VMware vSphere を使用したサーバの仮想化 | VMware 日本
screenshot

VMware FusionにESXiをインストール

VMware Fusionで[ファイル]->[新規]を選択

オペレーティングシステムのインストールディスクまたはイメージを使用を選択し、ダウンロードしたESXiを選択

オペレーティングシステムの選択では以下のとおり選択

終了!簡単です。

基本的にはこれだけですが、デフォルトの設定だと、別マシンのvSphere Clientからアクセス出来ないです。ESXiの起動後、[設定]->[ネットワークアダプタ]を選択し、物理ネットワークに直接接続(ブリッジ)を選択し再起動。
NATとブリッジについてはこちらを参考させてもらいました。

以上で完了。ただVMware vSphere への対応は試用環境として位置付けられているとのこと。実環境での利用には非対応となっているようです。

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

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

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

約50の海外セレブのニュースサイトをまとめて閲覧できる無料のリーダーアプリです。
サービスの概要は上記のリンク先に書いてあるので、こっちにはつくろうと思った動機や技術的なことをまとめておきます。

作った理由

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

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

サービス内容

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

システム構成

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

その他

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

http://www.facebook.com/celebNewsApp

そんな感じです。家でのサービス開発は久々だったので楽しく開発しました。
次はandroid版を出すためにがんばります!

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がなくなってたり、スクロールの向きが逆だったり、いまいち慣れてないですが楽しく使いはじめました!

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を取得するので、サーバーから返却されたhtmlもjavascriptが実行された後の状態でオブジェクト化されています。なので当然javascriptが追加した文字列を取得する、ということも出来たりします。
例えばjavascriptでh1タグをappendしていたら、それもオブジェクトとして取得できました。すばらしい。

困ったこと

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

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

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

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

はじめに


ある日、会社の同僚の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: 同じような勉強法で満点だった人もいます

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さんが出来上がりました!