seri::diary

日常

興味

自分自身は好きでエンジニアをやっている。

SIerを飛び出したのもプログラミングが好きだったからだ。

毎日誰かの技術ブログやTechcrunchを読んでいるのも好きだからだ。

家にいても気になることがアレばすぐにエディタを立ち上げてコードを書き始めるのも好きだからだ。

 

好きでやっているもので、好きでないのにエンジニアの仕事をしている人の気持ちが理解出来ない。正直な所。

正直な感想であれど、それでは済まないことも世の中多々あって、どうしても会社に所属していればそういう「好きでない人達」と仕事をしなければならず、それがまぁ辛い。正直な所。

 

「自分の担当は○○だから××は知らない」とか「これは習ってないからわかりません」とか、そういう感覚が分からなくて、それを注意する正当な理由もないから、「そうですか」とだけ言って、チケットの内容だけを説明して、チケットの担当者をその人に変える。今の会社でに入社してまもない頃、仕様を理解するために始業1時間半前に出社してソースを読んでテーブル定義書を読んで、EffectiveJavaを読み続けた俺には分からない。誰よりも出来ることを多くしようとして、当時1人の担当者がやってたインフラ周りの構成まで覚えて、自社のサービスで使ってるミドルウェアは全部触れるようになった俺には分からない。

 

何かおかしい。そう思っても何も言えないし、もしかしたらおかしいのは俺の方なんじゃないか?って思う。なんでこんなに技術に興味があるのか、なんでこんなに少しでも「分からないこと」があると許せなくて自分で調べてしまうのか。周りと違いすぎてついて行けない。

 

かつて自分の周りはそういう人達だけだった。そういう人達に、この会社で今の俺は育ててもらって、色んなことを教えてもらった。

今はそういう人達はもういない。同じ会社にはいる。でもどんどん違う事業に行ってしまった。今は「理解できない」人達だけと仕事をしている。

 

そういう人達に仕事を振るのが今の俺の仕事。

矛盾

とあるタスクに対して

「ここは○○使って☓☓にした方が将来的に拡張できるし機能的にイケてるからそうしたい」

という思考と

「ここを直してもKPI改善効果は低い他のタスク優先すべきだ」

という思考とがよくぶつかり合うようになった。

それがとてもつらい。

 

仕事としてコードを書いている以上、後者の視点を常に持ってタスクの優先度を決定していくべきなのだが、それってエンジニアじゃなくても掃除のおばちゃんでも出来るじゃん?っていうケースが多々あって、例えばとあるフォームのtextareaのrowを10から5にすることで、ユーザーが「沢山入力しなきゃいけないの?めんどくせー、ニコ動でも見よ」→"離脱"になるケースを減らして離脱率を上げるとか、デザイナの修正したhtmlをjspやvmに書き換えるお仕事とか、大量のレビューとテストとか、まぁそんなお仕事に毎日忙殺されてて、正直エンジニアとしての自分を持て余してる。(レビューとテストは重要だけども)

自分以外のエンジニアもこの問題に直面するケースってあると思うんだけど、そういう場合は業務外でOSSの開発をしたり、自分のサービスを作ったりして解消するんだろうけど、なんかそういう所で発散されるパワーって世の中をより良く出来る可能性の損失と考えれば勿体無いなと思ったり。

そのパワーを仕事にすることは出来ないのだろうか。つまり、自分が一番パフォーマンスを発揮できることを仕事に出来ないのだろうか。最近そんなことをずっと考えてて、というのも自分の人生、特に脳みそが元気で大量にインプットできる若い時期なんて時間が限られてるわけで、「やりたくねぇことやってる暇はねぇ」な訳。

自分の場合、20代の時間はもうあと3年もなく、30にもなればどういう価値を出せるかがもっとシビアに問われるようになる。正直まだ何もできていないので焦っている。

とりあえずは今自分が作ってるslidesearch.jpSEO含めた実験とかGAを使うノウハウをためてみたり、railsの不便だと思うところでgemを書いてみたりと、とにかく手を動かす時間を確保しつつ、どうすれば矛盾を解消できるかを考えたい。空き時間をとにかくエンジニアとしての価値を磨くことにコミットする。

そんなことを思った2013年度下期のスタート

YAPC::Asia 2013に参加してきた

http://instagram.com/p/ed3McqQ3bo/

会社より与えられし夏休みの最後の1日分を使ってYAPC::Asia2013に参加してきた。

↓写真とかはここにまとまってる

 gihyo.jpのレポート

普段perl書かないし書く予定無いけど何故参加したか

別言語のコミュニティでどういう事が話題になっているか知りたかったというのが主な動機。perlについては過去に某歌い手が使ってたニコ生で曲リクエストに使うCGIの機能追加を依頼されて直したことがあるぐらいで、全然詳しくないし仕事でも書いてない。仕事は相変わらずjavaとjsしか書いてない。

けどなんかperlって昔から勉強会やらカンファレンスやが盛んな印象があったので、どういうコミュニティでどういう活動をしているのかについてはずっと興味があった。

ただ、やっぱりperlの深いところは全然わからないのであんまりperl絡まないセッションに絞って聞きに行くことにした。

 

初日(9/20)

会場の5分ぐらい前の良い時間に会場到着。

オープニングに続いて午前中は3つのセッションを聞く。

Postcards from the Edge: The State of Perl 5 Development

memcachedプロキシサーバの開発と運用

OpenID Connect ~ これが最新のOpenID仕様だッ!~

perl5言語仕様の話以外はタイトルだけ見るとperlと関係ない。というかまぁ内容的にも殆んどperl絡まなかったんだけど、普通にweb屋として興味深かった。

memcachedプロキシサーバの話は今の仕事でも悩みどころになっていたkvsが単一障害点になって止まったらどうしよう問題についての話。ソース自体はgithubで公開されているので割りとクリティカルな所にmemcachedプロキシ使ってるkvs使う機会あったら使いたい。

neoagent

 

ランチセッションでご飯食べながらSix ApartとMicrosoftのセッションを聞く。

Azureでもperl使えるようになったとか。ほほー

http://instagram.com/p/ed3sUUw3cP/

午後も引き続きセッションを聞いて回った。

大規模Perl初心者研修を支える技術

ぼくがかんがえたさいきょうのMVC

個人で出来る!PerlによるWebアプリケーションの作り方

CPAN Testers Reportの情報を上手に使おう!

Perlは他言語(から|に)何を(学んだ|教えた)か

 

大規模Perl~はDeNAの2013年新卒71人のエンジニアをどのように教育したかについてのセッション。

今自分も2013新卒のOJTを担当してるので色々と考えるところがあった。今年のDeNAの新卒研修の目標は「自走できるエンジニアを育てる」だったらしく、内容もそれに見合ったかなり厳しいものだったなぁという印象。

あとGithubの使い方をしっかり教えたのが現場で好評だったというのを聞いて、ツールの使い方って以外と漏れやすいけど現場で教えるのが割りと大変な部分だし、そういう所を最初の集合研修でしっかりやることは価値があることだと思った。

今現場で新卒に対してgitやredmineeclipseプラグイン系の使い方のフォローをしていることが実際に多い。来年はこの辺のツールの使い方をしっかり研修内容に入れなければと思った。

 

MVCの話は会場が満員で立ち見出まくりだった。やっぱり皆色々と思うところがあるのだろうか。セッションの内容的には「MVCと言っても適用するアプリケーションによって最適な設計は異なるから、適用するアプリケーションの形態に併せてカスタマイズすることが大事」というものだった。これは全くその通りだと思うし、Webアプリにしてもシンプルな場合と超絶複雑な場合とで設計思想が異なってくある。

1Controller1Model で完結するようなScafolldingで作ったみたいなシンプルなWebアプリと、1Controllerに5Model(テーブル5個)ぐらい関連してきて複雑なデータモデルを扱うWebアプリとではModelの中でもモジュールの分割レベルが異ってくるし、逆にそこを規模に関わらず同一のアーキテクチャでやろうとすれば当然無理が出る。

複雑すぎてもメンテコストが高くなるだけだし、シンプルにすると例外的なクラスが量産されて結局カオスになる。

だから、MVCはパターンに過ぎないので、自分が作るアプリの内容に合わせた最適なアーキテクチャを自分の頭使って考えようよ、っていう話は凄く納得がいく話だった。アーキテクチャ超大事。

なんてことを考えた。

 

とりあえず初日はこんな感じ

あともらったノベルティ

http://instagram.com/p/ee4B84Q3TZ/
YAPC でもらったノベルティ一式。Tシャツの裏側にはpixivのロゴがでかでかと書いてあるので着てたらpixiv社員と間違われそうな感じ(笑)

 

2日目(9/21)

洗濯とかしてたら遅れたので午前中は2セッションしか聞けなかった。

というか2日目はperlにフォーカスした内容が多いので聞いても分かりそうなのが少なかった。

Perlで書く結合テスト

Perl 6 オブジェクト指向プログラミング

 

結合テストの話はPerlに限らず他の言語でも使えるお話で良い復習になった。

Perl6でコードを書くことは余程の理由がない限り無いだろうと思った。

 

そしてまたランチセッション

http://instagram.com/p/egb7aFQ3Uu/

YAPC::Asia Tokyo 2013 特別座談会 「Rubyの良いところ語ってください 〜そんなPerlで大丈夫か?〜」

午後はこれだけ聞いて帰った。生伊藤直也さん久々に見た。

PerlRubyの座談会。disり合いの殴り合いにならなくてよかった。

 

 

 個人的には卜部さんのRuby開発にまつわる話が興味深くて、小飼弾さんの「Rubyのバージョンアップ時に旧バージョンとの互換性テストはしてるのか」という質問に対して、卜部さん
「バージョン上げるといろんなものが壊れるのは分かってる。それでもやってくんだぜ、っていう姿勢」
と回答してた。
Webサービス業界でRubyが良く使われ、SI業界でRubyが殆んど使われない理由がわかった気がする。
最近RailsでWebアプリを書いてる関係でRubyを書くようになったが、凄く気持ちが良い言語だと思ってる。最初はその謎ルールに戸惑うが、一度覚えてしまうと自分の思考をそのままスッとコードに落とし込めるので凄く気持ちいい。ジャバやPHPとかの硬い言語をルール通りに書くのとはまた違う快感がある。
その利便性や「気持よさ」を大事にするために後方互換性を捨ててでも新しいことをやり続ける。そういやRailsもそんな感じで、Rails2はもはや別物なのでググってひっかかった情報が殆んど役に立たないが、ちゃんとRails4の情報が山ほどあるからあまり困らない。使う側もそういう文化なのだろう。サポートの体制含めてみんなで作り上げているというか。そういう在り方がOSSっぽくて凄くいい。
自分はRubyのそういう姿勢を支持したい。
 
二日目は残りのセッションにあまり興味がなかったのでここで会場を後にし、自分の初YAPCは終わった。
何でも有りのごった煮カンファレンスであるが故に、興味があるセッションとそうでないものの差が大きいので、興味が無いものだらけになった枠に黙々開発とか自由にLT出来るハッカソンスペースみたいのがあってもいいかなぁとか思った。
とはいえこんだけ色んな界隈の人が集まるカンファレンスもなかなか無いので、これはこれで楽しかったかなと思った。来年も時間があれば参加したいし、こんだけフィードバックがもらえる場であればネタがあればセッションしたいと思った。
 

ロールモデル

もう年も年でアラサーで、なんか小さなチームのリーダーとかやってるせいで社内ではワカモノという感じも薄れつつあり、上司と話をすれば「お前は何がしたいんだ」と問い詰められる次第。そろそろ有象無象のエンジニアではいられなくなってきた訳だ。
しかし、そんなに周りから何がしたいか分からないように見えるのかね。

本音を吐露してしまえば、「何がしたい」も何も、

「やりたいのはwebサービスのネタを考えてコアを作れる伊藤直也みたいな人間になってサービスを成長させまくって沢山作りまくって、少しでもwebで人の役に立つことです。今はそれがが出来ないので、エンジニアとしてスキルを磨く一方で、マーケティングチームと一緒に仕事をする中でweb広告について研究したりGAの活用方法と数値のみかたを必死に勉強している所です」

になるのだが、

「要するになりたいのはマネージャーか?プロデューサーか?スペシャリストか?」

みたいなことを聞かれて、

いやいや分類できません、今の会社にもそういうロールモデルはおりません、目標にしたいエンジニアは伊藤直也です、っていう話になってしまい、「やっぱりこいつは何がしたいか分からない人間」と思われてしまうのではなかろうか。
そもそもweb屋なんてもともと色んなスキルセットが必要なのだから、SIみたいに役割やなりたい像みたいのを括ることが難しい。とりあえず、自分はエンジニアとして働いているのでITスペシャリストとでも言っておけばいいのか?ってなるとなんかもっと抽象的で分かりにくい。

当の本人たる俺だって上手く分類できないし、最近はグロースハッカーなんて言葉まで流行っているのでもっと分からなくなってきた。
例えば、前職の社長は一応営業なのに、フォトショやフラッシュでweb広告のクリエイティブを自分で直しちゃうような人だった。彼は一応営業上がりなのだが、デザンにめちゃくちゃこだわりがあって、丸ごとデザイン外注するよりこの人がワイヤー書いて仕上げだけ外注に出した方がはえぇんだろうなと思うことが多々あったり、なんか趣味でプログラミングしたいとか言ってる人だったり、なんか多彩な人だった。

自分の短いweb屋経験からいくと、そういう人がweb屋には多いし、ベンチャーにおいては人材が多様化してる方が強いと思うんだが、どうだろう。
ひとりひとりの役割が大きい訳で、ぱっと見て「ロールが分かりやすい人」よりは、何でもこなせる人の方が少ない人数でやる中では重要なことだと感じるし、会社としても多芸な人がいる方が面白いと思うんだけど、今自社の社内を見渡すと、大体の人が「俺はこれで飯を食ってるんだ」っていうコアを持ってる。だから、○○については誰それに聞けば詳しい、というぐらいになっている。一方、俺なんてのは特にそういうのはなく、たまにレコメンドの話とかPHPの話を聞かれるぐらいだ。今はGoogle Analyticsをいじりまくってるので数値の取り方とかについては聞かれるようになったけど、やっぱり器用貧乏という感じがしてしまう。

それなりに何をやらせても出来るが、何かに秀でてる訳じゃないのでどういうポジションに付けたら良いか分からない、というのが俺の上司の本音なのではないかと思うようになった。だからコアスキルを育てなければ、と考えているのだが、やはり何か特定のことに興味があるのではなく、最初に書いたように多方面に興味が向きまくってるせいでコアスキルが育ちにくい。良く言えば好奇心旺盛、悪く言えば飽き症。

今は仮設を立てた上でのUIやサイトの速度改善等の修正によるKPI改善(いわゆるグロースハックってやつ)が面白くて、エンジニアよりはマーケの人と話をしてあーだこーだと議論してアイデアを出し合ってる時間が一番充実感を感じるし、自分でその修正を実装して、リリース後にを見て次の施策を考えるのが面白い。自分で直して自分で数値を見て検証する。

これが今のところ一番仕事としてはやりがいを感じてるので、しばらくこっち方面のスキルを伸ばしながら、自分の価値をどこに置いていくか考えていこうかなと思う。なんかまとまりがない文章になったけど、まぁ良い。とにかく一生懸命やろう。webは大好きだし。

祭りを終えて

2ヶ月ぐらいかけてやっていたデカいプロジェクトが終わった。時間もない、人手もない中で気合でみんなで乗り切って先日無事本番公開された。ここ2週間ぐらいはその後始末みたいなことをしていたがそれも落ち着いてきたのでちょっと安心している。
今回は自分が普段担当しているところもそうでないところも片っ端から仕事が振られてきたのでシステム全体像を把握するには良い機会だったが、それ故に色々と苦労した。今まで全く読んでいない部分の修正が突然飛んできて、必死こいてソースを読んで仕様を解釈して直す。終盤はひたすらバグフィックスだったのでその繰り返しだった。この辺のソースリーディングと仕様を整理するスキルがまだ弱い。自分が一行も手を付けてないコードに手をつけなければいけなくなるケースはこれからもあるだろうからこの辺は意識してスピードと品質を上げていかなければならないと思った。

自社サービスをやっている以上、システムを作るのは「手段」に過ぎず、それによって収益を上げているわけではない。めちゃくちゃ苦労して作った機能が何のKPIにも影響を与えなかったり、逆にちょっとした文言修正が会員登録数を激増させたりとか、リリースしてみるまで結果は分からない。今回のプロジェクトでは数字がどうとか、という以前にやることが多すぎてとにかくシステムを安定させることに必死だったが、今あらためて自分たちが作ったものを客観的に見て、これを使って今後サービスを回していくという事実と向き合えるようになった。そうして見えてきたものの中には、これからの展開でこういう風に組み合わせると良い機能になるなァと思えるものや、あまり上手く機能してないなァと思えるものなど、様々である。それらをどうやって売上に繋がるものに変えていくか。それが今後取り組むべき課題である。

結果を出すのは難しい。結果はKPIでしか評価されない環境にいる以上、とにかく売上につながるKPIを追いかける。
売上、数字、施策、優先順位。
最近はそんなことばかり考えてる。

でも俺らのサービスが世の中に対して何をやろうとしてたんだっけ?なんてことも、ふと立ち止まって考える。
そもそも俺ってなんでWeb屋になったんだっけ?

イヤフォンの無い生活

3日前、1年半ぐらい使ってたイヤフォンが断線した。
型番は覚えてないが、オーテクの4000円ぐらいのカナル型イヤホン。通勤で毎日使っている都合上、大体1年ぐらいで死ぬ消耗品だと思っているので断線したらオーテクの4000円〜5000円クラスを買い直す、というのをここ5年ぐらい繰り返している。
すぐに新しいのを買っても良いのだが、せっかくだからと3日ほどイヤフォン無しで過ごしてみたが、非常に辛いことが分かった。満員電車も、休日の街も。外を歩いている時、他の人の存在を否応なく感じさせる「音」、「音」、「音」。辛すぎる。特に電車が辛い。吐きそうなほど四方八方から圧力をかけられる地獄みたいな電車を耐えられるのは「音楽」による恩恵が非常に大きかったということが分かった。あと単純に他人同士の話し声を強制的に聞かされるのが辛い。朝は良い。大体静かなのだが、夜は騒がしい山手線と東海道本線を乗り継いで帰宅しているため、チャラいワカモノとか酔ったオッサンとかのバカでかい声の話を否応無しに聞かされる。ウザ過ぎて吐きそうになる。耳をふさぎたい。せめて耳を手で塞いでしまいたい。どうして東京はこんなに人の存在を強制的に感じさせる環境なのか。街を歩いててもうるさすぎる。音が多すぎる。人が多すぎる。モノが多すぎる。それを全部イヤフォンで塞いで、自分が大好きな音楽を耳に流しこむことでしのいできた。音楽はもはや精神安定剤なんだ。聞くのも弾くのもひっくるめて。だからここまでやってこれたんだ。

そんな訳でさっさとイヤフォンをポチッた。

きのこ話

突然今の会社を辞めたらどうやって生きていくのか

なんてことをたまに考えるようになった。
以前なら「そんなこと考えたくもない。生きていける訳がないから必死で次の職を探す」と思っていた。普通に考えたらそうだ。ある日突然無職になってもすぐに食い扶持を見つけることなんてできやしない。
しかし今は、「今は無理でも、20代のうちに、『ある日会社を辞めてもすぐに次の仕事が見つかる』ぐらい、スキルがあって人脈があって業界で知られているエンジニアになろう」と考えている。目標とリスクヘッジを兼ねて、といったところか。
理由は、自分が良いと感じている今の会社ですら、いつまで続くか分からないということだ。ここで主語は、会社そのものと、その会社に居続ける自分自身の両方。
今の会社で3社目になる。しかし4社目が無い保障はない。寧ろ、これまでの傾向から言えば、4年半社会時生活を送って2回転職している訳だから、2年以内にまた転職する確立は高いと言える。もっとも、そんな転職回数などうちの会社では当たり前レベルだから、今更「コロコロ会社を変える根性なし」などと思ってもいないが、それでも一つの組織に居続けるのはやはり得意な方ではないらしい。大学新卒で入った会社であれば、大半の人は少なくとも5〜6年は続けるように感じる(自分の知り合い調べ)。
話を戻す。とにかくそんな感じの「飽き症」の自分なので、組織はいつでも移ろえるようにしておいた方が自分の精神衛生上良いと思っている。自分と会社の方向性が相容れなくなったらスパっと辞められるように自分を鍛える。得たスキルは今の会社の利益に還元していくつもりだが、会社のためでもあり、自分の為でもある、ということだ。
自分の最終的な人生の目標なんてまだ分からない。
だが、「Webをより上手く使いこなし、より多くの人が幸せになれる社会を作る」という夢は揺るがない。一生Webと関わり続けるだろう。手段はそこまで問題ではない。