読者です 読者をやめる 読者になる 読者になる

PGは電子羊の夢を見るのか?

データとパターンのあいだ

はてブロ用Macアプリ「mocha」

iTea 4.0というブログで紹介されていたので、インストールしてみた。

はてなブロガーに朗報!はてなブログを編集・投稿できるMacアプリ「mocha」登場! | iTea4.0

記事で紹介されているように、これは「はてなブログ」を書くためのMacアプリです。
使い方は簡単で、「App Storeからインストール → アプリを起動 → はてなアカウントでログイン → 自分のはてなブログのURLを追加」という手順で自分のはてなブログに記事を追加することができます。

mochaはシンプルそのもので、今のところ画像の添付や各種関連リンクの作成はできません。
純粋に「記事を書く」という機能のみです。 ただ、今後のアップデートで対応されるようなのでそちらに期待しましょう。
(僕は登録済みカテゴリを一覧表示で確認できる機能がほしいです。)

なぜ「WPのアクセス解析は遅い」と言われるのか?

プログラミング

最近ユーザーのアクセス解析をするお仕事を任された。
そこで、PHPでそれらしいことをしてるものをいろいろ探していた。 すると、とある方の助言でWordPressアクセス解析プラグインにたどり着いた。

すると、プラグインレビューサイトに「このプラグインは詳しくアクセス解析出来ますが、動作が遅いです!!」と書いてあるものが多い。
何故か??
気になったので、各プラグインを落として調べてみた。

これらの遅いと言われるプラグインには共通して「browscap_php」というライブラリが使われていることがわかった。
このライブラリについても調べてみると、「詳しくアクセス情報を取得できますが、動作が遅くなります!!」と書かれている記事が多い。
どうやら、こいつが原因らしい。

というわけで、このライブラリをインストールして動かしてみた。

こいつはまず「browscap.ini」という、UseAgentのパターンとそれにマッチした時のアクセス情報の一覧が収められている。
こいつがでかく、5MBぐらいある。 実装上ではこいつを読み込んでくる。(2回目以降の実行の際はキャッシュが使われる。)

次に、アクセスしたユーザーのUserAgentと各パターンがマッチするかどうかをループを回して正規表現でマッチングするかどうか調べる。
まずは登録されているパターンを100個ずつぐらいつなげてループを回し、この中でヒットするかたまりを探す。
かたまりが見つかったら、その中の一個ずつとUserAgentがマッチするかループを回して確かめる。
ループをひたすら回して正規表現でマッチするか確かめる実装なので、運が悪いとなかなかに時間がかかってしまう。

しかし、登録されているパターンの数が多い分、正確にアクセスを解析することができる。
リアルタイム解析やサーバー負荷を考えなければ、非常に良いライブラリと言える。

今回の実装で使えるかは…

Google Apps Scriptが意外と楽しかった

プログラミング

Qiitaに記事をあげたが、Google Apps Scriptでツールを作ってみた。

JavaScriptで書けて、GmailAPIを使用することで簡単にGmailが取得できた。
定期実行させることもできる。
今回はGmailを使ったけれども、他のGoogle Appsと連携させることもできるみたいです。

ちなみに、これを使ってSlackと連携させて勤怠管理アプリを実装した方もいる。 そこまでするつもりはないが、Googleのアプリは何かと使っているので、もう少しいろいろできるようになりたい。

「世紀の空売り」読了した。

先に映画見たら用語が意味不明すぎて泣きそうになった。
悔しかったので小説も買ってみたら、ものすごくわかりやすかった。
マネーショート見る前に小説読んだほうがいい。

内容は「リーマンショック」の舞台裏とそこで大金を稼いだ投資家たちのお話。
あの手この手で金を作り出そうとする銀行、知らず知らずのうちに巻き込まれていくアメリカ市民、いち早く未来を予測した投資家たち。
金融市場ってスゲェなって思った。

この本を読んでよかったなと思った事は2つ。

1つは金融関係に興味を持てた。
これまでは株とか証券とか全く分からなかったけど、この本を読んだおかげで自分でいろいろ調べてみる気になった。
というよりも、知らないといつの間にかとんでもないことに巻き込まれるので、知っとかないとやばい!って気にさせてくれる。

もう1つは、やっぱり数字に強くていろいろ考えられる人間が良くも悪くも世界を変えるんだな、とわかった。
銀行も投資家もいろいろな債券の組み合わせを調べて起こりそうな未来を予測し、次の一手を打つ。
頭いい人って何考えてるかわからないけど、それって常人には考えられない速度で考えてるってことらしい。

ただ、この本を読んで自分の方向性が間違っていない気がした。
数学と統計学アルゴリズム機械学習
とにかくここに集中してればこれから楽しくなるはず。(ただし、株には手を出さない予定。)

転職してみてわかった「成長している自分」。

雑記

ども。

最近転職しました。
転職エントリーは書いていません。

職種自体は変わっておらずプログラマーなのですが、環境や言語は大きく変わりました。
これまではJavaを使っていましたが、現職ではPHPJavaScriptで開発を進めています。
PHPフレームワークを使用していませんが、JavaScriptはUnderscoreやBackboneなどを取り入れています。

さて、僕はこれまで「エンジニアとして成長できているんだろうか?」というのがとても不安でした。

前職はちょっと変わった会社で、あまり社員の成長やスキルの習熟度などを評価する制度や仕組みがありませんでした。
なので、仕事上では問題なく作業できていたとしても、一体自分がどれぐらいのスキルを持っているのか、どのぐらいのレベルに到達しているのかが全くわかりませんでした。
特に僕は社外案件が多く、関係先の人たちはベテランの方ばかりだったので、業界歴数年の僕はついていくのがやっとという状態でした。

そんな中、縁があって今の会社に4月の半ばからお世話になっています。
特に研修みたいなものはなく、初日から開発環境やローカルでのテスト環境を整え、次の日からは早速タスクにとりかかりました。
すると、以下の2点で自分の成長を実感することができました。

1. 扱ったことのない言語でも、実装を理解することができた。

はじめにも書いたように、僕はこれまでほぼJavaのみで生きてきましたが、現職はPHPJavaScriptがメインです。
ところが、それでもPHPの実装を理解しJavaScriptを使って画面を作ることができました。
事前に少しPHPは勉強していましたが、それでもなかなかに驚きました。

2. 自分の現状を正しく伝えることができた

言語がわかっていたとしても、仕様や問題の起きている部分の理解はなかなか難しく、これができないと実装することができません。
僕はこれまで所謂「コミュニケーション能力」に不安を覚えていたのですが、今のところ自分の現状を正しく伝えて先輩方からアドバイスを引き出し問題解決出来ています。
「どこまで理解できているか?」「何がわかっていないか?」「どこを確認すればよいのか?」など、数年前に比べて遥かに上手く言葉で伝えることができるようになっていました。

色々なタイミングで自分の成長を実感する機会はあると思います。
プロジェクトが変わった時や新人研修の担当になった時、または僕のように転職によって新しい環境で仕事を始めた時など。
その時々で自分の成長を確認しつつ、これからも自己研鑚に励んでいきます。

駆け足で「Underscore.js」を勉強した。

プログラミング

ども。

仕事の関係で「backbone.js」を勉強しなくてはいけなくなった。
んで、これが「Underscore.js」を使って動いている、ということを知った。
とりあえず「Underscore.jsってどんなもんかなー」ということを知りたかったので、ドットインストールの動画を見て写経しながら駆け足で入門してみた。

dotinstall.com

ふむふむなるほど...
実に面白い...

とりあえず「_(アンダースコア)」を使う

名前にもなっている通り、Underscore.jsを使うと「_」を介していろいろな演算を行うことができるようになる。
単純な変数操作から配列の処理、ループの制御、JSやHTMLの生成みたいなこともできる。

他言語のメソッドとよく似ている

_はたくさんのメソッドを持っているが、それらはなんとなくPythonRubyで実装されている同名の関数に似ているような印象を受けた。
例えば、配列を処理するときのmapや繰り返しを制御するtimes、連続した整数を生成するrangeなど、どこかで実装したことあるものとほぼ同じような動作をしてくれる。

ドットインストールに出てきたもの以外にも、多くの関数が_には登録されている。 今回はBackbone.jsのための予備知識として勉強したが、Underscore.jsだけでも十分使えそうな気がしている。(特に、数値とか配列の操作が多くなるデータ解析系で使えるのでは...)

健康のためにプチ断食をやってみた。

雑記

以前から興味があったので、今週時間ができたタイミングでプチ断食をやってみた。
断食と言っても全く飲まず食わずというわけではなく、「1日3回、りんごにんじんジュースを飲んで固形物を口に入れないようにして過ごす」というもの。

僕は今回、食事断ちをするのは1日だけだったけれども、それでも準備と復食を合わせて3日間をかけて行う。

準備日

次の日は固形物を口に入れないようにするので、前日から食事は控えめにしておく。
僕は朝は普通に食べて、昼は少なめ、夜はおかゆにして次の日の断食日に臨んだ。

断食日

固形物を一切口に入れないようにして、3食の代わりにりんごにんじんジュースを作って飲む。
また、カフェインのとりすぎも良くないと書いてあったので、珈琲や紅茶は飲まずに温めたお茶を飲むようにした。

りんごにんじんジュースの作り方

りんご 1 : にんじん 2 の割合ですりおろし、濾布などで濾したもの。
リンゴの方が果汁が多いため案外飲みやすく、糖分を摂取できるせいか飲むと空腹は収まった。

復食日

この日が一番大事!
前日固形物を口に入れていないため、急にカロリーを摂取すると一気に吸収されてリバウンドしてしまう。
今回、朝は10倍がゆを食べ、昼はおにぎり1つとサラダ、夜からは炭水化物を抜いて普通に食事をした。

結果

驚くことに2kgほど体重が落ちていた。

感想

1日だけであれば思ったほど辛くはなかった。
また、最近食べ過ぎ気味だったけれども、何も食べなくても特に辛くはなかったことと復食日に気を使いながら食事をしたことで、それも落ち着いたように思う。

もちろんもっと日数をかければもっと効果が出るのだと思う。
ただ、僕は1日プチ断食を月に1回ぐらい行うペースでちょうど良さそう。