give IT a try

プログラミング、リモートワーク、田舎暮らし、音楽、etc.

約20年ぶりの初対面

このブログを以前から読まれている方はご存じかもしれませんが、僕はもともと音楽大好き人間で、学生の頃は本気でミュージシャンになりたいと思っていました。
(今は株式会社ソニックガーデンでRubyプログラマとして働いています)

学生時代はプログラミングとはまったく無縁の生活を送っていたのですが、パソコンを触るのは大好きで、

  • ネットサーフィンを楽しむ
  • バンドのホームページを作成する
  • DTMでバンドのデモ音源を作る
  • レコーディングした音源をCD-Rに焼いてデモCDを作る

といった用途でパソコンを使っていました。

そんなころ(今から17〜18年ぐらい前の話です)、きっかけは何だったか忘れましたが、僕は当時、ネットで知り合った音楽好きの男性と、ときどき音楽談義をしていました。

「ネットで知り合った」といっても、今みたいにTwitterのようなSNSがあった時代ではありません。
おそらく「音楽好きが集まる掲示板(当時はみんなBBSと呼んでいた)」か何かで、たまたま意気投合したんじゃないかと予想しています。

また、音楽談義をするのも、ただのテキストメールです。
あの頃やっていたのは「メールを使った文通」と言った方が適切かもしれません。

当時の記憶をたどると、相手の男性の年齢は僕とそんなに違わなかったと思います。
顔はわかりません。
そのときはお互いに好きなギタリストの話をしたり、自作曲を聴いてもらったりしていました。
(どうやって音源を交換していたのかは記憶にありません。あの当時だとReal Playerか何かを使っていたのかなあ?)

ですが、何度かメールのやりとりをしたあと、文通関係は自然とフェードアウトしていきました。
期間としては数ヶ月あったか、なかったかぐらいだと思います。

いや、自然とフェードアウトと書きましたが、本当は嫌気が差したんだと思います。
僕が「いい曲ができた!」と思って自作曲を聴いてもらったのに、その男性からは「このコード進行、クリシェ(ヒネリのないお決まりパターン)ですね」と言われて、ムッとしたのを覚えています。

しかし、僕は僕で、「B'zの松本が大好き」って言っているその人に向かって、「でもB'zの松本って、ペンタトニックスケール(ロックギターの基本音階)しか弾かないですよね(苦笑)」と言い放っていたりしました。
そのあと、その男性から「ペンタの何が悪い!ペンタトニックスケールというのは〜」と長文の反論メールをもらった記憶があります。

こんなやりとりがあったので、きっとお互いに「こいつ、なんかムカつく」と思って、自然に離れていったんだと思います。


まあ、こんな話は今思えば「若気の至り」みたいなもので、「当時は僕も生意気なことばっかり言ってたなあ」と思うぐらいの、ささいなエピソードです。
「だからなんだ」ということもないですし、それから現在に至るまで、当時のやりとりをわざわざ思い出すことも滅多にありませんでした。

そんなある日。

僕が普段通りTwitterのタイムラインを何気なく見ていると、あるツイートがリツイートされてきたのを目にしました。
そのツイートの発言者はEiji Kitamura(えーじ)さんです。

えーじさんはGoogle社でデベロッパーアドボケイト(Developer Advocate)として働いておられる方です。
僕は過去にGoogle公式ブログの執筆者としてお名前を何度か見かけたことがあるので、僕にとってえーじさんは「会ったことはないけど、名前だけは一方的に知っている人」になります。

が、そのときはたまたま "@agektmr" というTwitter IDに目が行きました。

「"きたむらえいじ" だから "Eiji" で "age" か・・・。ん?そういえば、むかし音楽談義をしてたあの人も "えいじ" さんで、自分のことを "age" って名乗ってたな」

ということを、ふと思い出しました。
「Eiji = age」というハンドルネームは、なぜか僕の中で強く印象に残っていたからです。

「いやー、まさかねぇw」

と思いながら、「agektmr ギター」みたいなキーワードでTwitterを検索してみると、こちらの "ageさん" も結構音楽好きかつ、ギター好きな方である様子。

「・・・うーむ、これはもしかして、もしかするのか?そういえば、あの人も名字が "北村" だったような気がする。いや、違ったかな・・・まあ、いいや、とりあえず!!」

と思って、僕はえーじさんにDMを書きました。

どうも初めまして。株式会社ソニックガーデンという会社でRubyプログラマをやっている伊藤淳一といいます。
突然のメッセージすいません。

ところで、いきなり変なことを質問しますが、もしかしてEijiさんは昔僕がギターや音楽の話で一時期やりとりしていたageさんではないでしょうか?


(以下、当時の記憶や、前述のエピソード等を伝える)

こんな内容を一通り書いたあと、もし人違いだったらそのときは「すいません、この話は忘れてください」と言えばいいや、と思って送信ボタンをクリックしました。

しばらくすると、えーじさんから返信が返ってきました。

伊藤さん、こんにちは。それは多分僕ですね。当時は大分ひねくれてたので、あまり良い印象がないのも無理もない気がします(笑)

おお〜っ、マジか〜!!

20年近く前にメールで何度かやりとりしただけの人と、再びネット上で再会できた!
すごいぞインターネット!すごいぞSNS!!

ちなみに、えーじさんは弊社ソニックガーデン代表の倉貫ともお知り合いでした。
いやあ、世の中は狭いなあ。

お互いに「いやー、これは一度会わないといけませんね」という話になり、ちょうどその頃、僕がTokyoGirls.rbの運営スタッフとして東京に行く用事があったので、そのついでに六本木ヒルズにあるGoogleのカフェで一緒にランチを食べることになりました。


というわけで、約20年ぶりに再会?初対面?した2人の写真がこちらです。

えーじさんとは当時の思い出(といっても、メールも残っておらず、お互いに記憶が薄いのですが)や、音楽好きだった人間がなんでIT系の仕事を選んだのか、最近の仕事や生活はどんな感じなのか、といったことについておしゃべりさせてもらいました。

また、Googleのオフィスに行くのは初めてだったので、簡単なオフィス見学もさせてもらいました。

社内にはこんなふうに、コントローラを使ってグリグリと地球上を飛び回れる装置(?)もありました。
(すごい!けど、乗り物酔いしちゃうw)

それにしても、若い頃は本気で音楽に熱中していて生意気なことを言い合っていた2人が、その後どちらもIT関係の道に進み、20年近く経ってから、ふとしたきっかけでSNS上で再会するというストーリーには、我ながらビックリしました。


ちなみに、Googleのカフェでは出会ってすぐに、

「あのときは本当にすいませんでした」

「いやいやいや!こちらこそごめんなさい!!」

みたいなをやりとりをしていましたw

お互い、昔は生意気だったのに、いい歳になってすっかり丸くなりましたね(当たり前か)。


えーじさん、このたびはどうもありがとうございました。
そして、今後ともよろしくお願いします!😄

Ask me anything! 伊藤さんに聞きたい12個の質問に本人が答えてみた(動画&テキストバージョン) #yochiyochirb

はじめに

2019年3月3日、よちよち.rbのみなさんに呼ばれて、「jnchito さんと!Ruby・Rails での『困った』を解消しよう会」を開催してもらいました。

yochiyochirb.doorkeeper.jp

これは、よちよち.rbのみなさんからいただいた質問に、僭越ながら僕が答えさせていただく、という勉強会です。
当日は約40人もの参加者が集まってくれました。みなさん、どうもありがとうございました🙏

f:id:JunichiIto:20190320052954j:plain:w350
「先生席」に座る伊藤さん(それにしてもホワイトボードの文字よ・・・)

勉強会では1時間半ぐらいかけてじっくりとみなさんの質問に回答したのですが、僕の回答をそこだけでクローズさせてしまうともったいないので、「ざっくりとまとめたショートバージョン」を動画とテキストで紹介します。

【もくじ】

動画バージョン

こちらは勉強会の開催後に自宅で収録したスクリーンキャスト(ほぼポッドキャスト?)です。
勉強会当日もだいたいこんな話をしゃべってたと思います。

時間は約29分で、再生速度を1.5倍から2.0倍ぐらいにしてさくっと聞くのがお勧めです。


jnchito さんと!Ruby・Rails での『困った』を解消しよう会(ショートバージョン) #yochiyochirb

ここから下はこの動画の内容をざっくりとテキストに変換したものです。

1. 毎日チェックしている情報はありますか?

  • Twitter(面白い情報を発信してくれる技術者を中心にフォロー)
  • はてなブックマーク(テクノロジーのカテゴリを中心にチェック)
  • Ruby Weekly(海外のRubyメルマガ)
  • RSS + Feedly(RubyやRailsの公式ブログなど)
あわせて読みたい

qiita.com

2. 60歳になったらどんな生活をしていたいですか?

  • 40歳を過ぎると3年後や5年後に元気に生きているかどうかも怪しいので、老後にやりたいと思ったことは今すぐやろうと考えている
  • プログラミングはそこそこできるようになったので、ギターをもうちょっとうまく弾けるようになりたい
  • お金やモノはあの世へは持って行けないので、「惜しい人を亡くした」「伊藤さん今までありがとう」といろんな人に言われて死にたい

3. Qiitaの記事はどういったときに書いてますか?

  • 困っていた問題が解決したとき
  • かつ、これは他の人も同じように困りそうだと思ったとき
  • かつ、ネット上に同じような記事がないとき
あわせて読みたい

qiita.com

4. メソッド名や変数名のコツはありますか?

  • メソッドの責務は原則としてひとつ。責務が適切に分割されていれば、いい名前が付けやすい
  • 「あれしてこれしてそれして・・・」といろんなタスクを束ねるメソッドは、その処理をうまく要約するスキルが必要
  • ネット記事をTwitterでシェアするとき、記事の要約や自分の感想を制限文字数内で書くようにすると、要約の練習になるかも
  • 英単語の語彙については、OSやSNS(Twitter、Facebook等)の言語設定を英語表示にすると、日常的にシステムでよく使われる英語が目に飛び込んできて、自然と英語が覚えられるのでオススメ
あわせて読みたい

qiita.com

5. Railsは便利機能が多すぎるから初心者にはお勧めしない、という意見についてどう思いますか?

  • どんなフレームワークも一長一短があるので、「初心者向けの完璧なフレームワーク」はない
  • RubyやRailsは情報やコミュニティが多いので、「いろんな人に頼りやすい」という点が大きなメリットだと思う
  • Railsは初心者にお勧めできるか、をYES/NOで答えるならYESだし、「他のフレームワークから始めます」という人がいても、それはそれでOK

6. スキルアップのためにやることをどう決めて、どう管理していますか?

  • 3年後や5年後の自分を想像して「こうなっていたい」「こうなりたくはない」という願望から、逆算で「そのギャップを埋めるために今すべきこと」「これからやっていくこと」を考えることが多い
  • プログラミング歴が浅い人は楽しみながらプログラミングを勉強するのが大事
  • その一方で、スキルアップのためのショートカットやスマートな勉強方法を求めすぎないようにすることも大事。
  • プログラミングの習得には時間がかかる。「数ヶ月、半年で月収○○万」みたいな広告は鵜呑みにしない方が良い
  • 「たったこれだけのことをするのに、なんでこんなに自分は時間がかかるんだ」とか「しょうもないエラーを解決するのに何時間も使ってしまった」みたいな泥臭い努力を延々と繰り返して、ようやくプログラミングのスキルは身に付くもの。僕だってそうだった。
あわせて読みたい


7. コードを書くのは好きですが、インフラ面とかには興味が沸きません。どうしたら意欲がわきますか?

  • もしチーム内にインフラ面を任せられる人がいるなら、そこまで無理に頑張らなくてもよいのでは
  • 苦手なことを伸ばすより、好きなことや得意なことを伸ばす方が良い
  • どうしてもやらなきゃいけない状況になったら、いやでも覚えていくので、それで大丈夫だと思う

8. 人事ですが業務効率化のために楽しくプログラミングを勉強しています。そういう人に対して何か注意点や目標の決め方はありますか?

  • 楽しいなら自分が楽しいと思える限り、プログラミングを続けるのがいいのではないか
  • 楽しくなくなったらそこでやめたらよい。趣味にしろ、仕事にしろ、プログラミングが苦痛になったら続ける意味がない

9. 大企業と少人数の企業では、エンジニアの働き方は変わってきますか?

  • 傾向として大企業の方が自由が利きにくい、ということはあると思うが、一概にそうとも言えない
  • 結局のところ「その企業による」としか言えないので、しっかりと自分が入りたい企業のことを調べるしかない

10. privateメソッドを直接呼び出すテストを書いても問題ありませんか?

  • privateメソッドはテストを書かないのが原則(publicメソッド経由で間接的にテストする)
  • どうしてもテストしたいときは「これはテストのためにpublicにした」というコメント付きでpublicメソッドに昇格させる
あわせて読みたい

highwide.hatenablog.com

11. オブジェクト指向やデザインパターンを今から勉強するにはどうするのが良いでしょうか?

  • Rubyで書かれたオブジェクト指向の本といえば、2019年時点では「オブジェクト指向設計実践ガイド」一択なので、まずはこれを読めばOK

  • デザインパターンは知っていればたまに役立つが、そこまで頻繁には使わないので、必要に応じて都度勉強すれば良いのでは
  • もし質問者の方がオブジェクト指向大好きっ子で、オブジェクト指向プログラミングを徹底追求したい!という強いモチベーションがあるのなら、Javaで書かれた本だって問題なく読めると思う
あわせて読みたい

blog.jnito.com

12. 外部連携APIのテストはどう書くのがベストですか?

  • WebmockやVCRなどを使って、モックでテストを書く
  • 本番環境にデプロイする前には、実際にAPIを叩いて、問題なく動作することを確認する(手動テスト)
  • APIの仕様が変わる際はメール等で通知が来るはずなので、見逃さないようにする
  • IP制限がかかっていて簡単にテストできない、仕様変更の通知も来ない、といった特殊な(というか不親切な)外部APIの場合は、「壊れたらすぐに直す」ぐらいのアプローチしかない

f:id:JunichiIto:20190320205506p:plain:w350
有名どころのAPIであれば、仕様が変わる前にこんなふうに通知が来るはず

勉強会で僕が回答した内容は以上です!

まとめ

というわけで、このエントリではよちよち.rbで開催された勉強会「jnchito さんと!Ruby・Rails での『困った』を解消しよう会」の内容をショートバージョンでお届けしました。

僕の回答なんかが役に立つのかどうかわかりませんが、みなさんの参考になるポイントがひとつでも見つかれば幸いです。

謝辞

素敵な勉強会を企画してくれた、よちよち.rbのゆかおさん(@yucao24hours)と南谷さん(@yuki3738)、どうもありがとうございました!

あわせて読みたい

当日参加してくれた方の参加レポートや感想ツイート(一部)です。みなさん、どうもありがとうございます!
chinatz.hatenablog.com

fuqda.hatenablog.com

haayaaa.hatenablog.com

オンラインツールを使ってSQLを写経!?Software Design 2019年4月号にてSQLの入門記事を監修しました

お知らせ

Software Design 2019年4月号(2019年3月18日発売)にて「プログラマのための速習SQL」という特集記事を監修しました。
ちなみに、この記事の執筆者はソニックガーデンの同僚である西見公宏(@mah_lab)です。

f:id:JunichiIto:20190319075944j:plain

記事の最後にはいちおう僕の名前も載せてもらっています。

f:id:JunichiIto:20190319051030j:plain

どんな記事なの?

O/RマッパーなしではSQLが書けないプログラマが対象読者

弊社ソニックガーデンはRuby on Railsをメインのフレームワークとして採用しています。
そしてRailsといえば、Active Recordと呼ばれるO/Rマッパーがプログラマの代わりにSQLを書いてくれます。

とはいえ、Active Recordを使えばSQLの知識がまったく不要になるのかというと、そうではありません。
むしろ逆に、本格的なWebアプリケーションを開発するためにはSQLの知識はある程度必須になってきます。

ですが、SQLを直接書かずに、Active Recordに代表されるO/Rマッパーをメインで使い続けていると、どうしてもSQLが苦手になってしまいます。
実際、ソニックガーデンの中にも「直接SQLを書くのはちょっと苦手」というメンバーがたまにいます。

というわけで、この記事ではそんな「多少の読み書きはできるけど、O/Rマッパーに慣れきって直接SQLを書くのは苦手なプログラマ」を対象読者としています。
記事の構成を考える際も「これを弊社のプログラマに読ませて勉強してもらうこと」をイメージしていました。

記事の構成や実行環境など

特集記事は以下のように3つの章に分かれています。

  • 第1章 SQLに再入門しよう
  • 第2章 実践問題で練習しよう
  • 第3章 SQLコーディングスタイルガイド

なお、この記事で扱うSQLはSQLの中でも「SELECT文」に限定しています。

対象となる実行環境はPostgreSQLですが、ポスグレ特有の構文や関数の使用は必要最小限にしています。
そのため、大半の知識はMySQLやOracleといった他のDB環境でも同じように活用できます。

オリジナルのオンラインツールでSQLの写経ができる

面白いのは第2章の「実践問題で練習しよう」かもしれません。
この章では西見が自作したオンラインツール(Webアプリケーション)を使って、SQLの実行結果を確認できます。

f:id:JunichiIto:20190319052810p:plain

SQLの習得は実際に自分の手を動かしながら練習するのが一番ですが、環境構築やテストデータの準備等が面倒です。
このツールを使えば、記事の説明を読んで「ふーん」で終わるのではなく、実際に自分で書いたSQLをブラウザ上で動かしながらSQLを学ぶことができます。

つまり、写経をしながらSQLを習得できるというわけですね。これは画期的かも!!

SQLを書く際の考え方や道筋を学べる

また、この特集記事は「構文や解答例を教えておしまい」ではなく、全体を通して「SQLを書く際の考え方や道筋」を重視して説明するようにしています。
つまり、魚を与えるのではなく、魚の釣り方を教える方式ですね。

僕もSQLを書くときは「まずこのテーブルを起点にして、そこからのこっちのテーブルをJOINして・・・」というような手順が頭の中にできています。
SQLが苦手な人はおそらくこの手順もはっきりと決まっていないのではないでしょうか。

この記事を読んで「しっかりと順序立ててSQLを構築するスキル」を身につけましょう!

まとめ

というわけで、このエントリでは執筆・西見公宏、監修・伊藤淳一のコンビでお送りする「プログラマのための速習SQL」という特集記事を紹介しました。
Software Design誌はときどき売り切れてしまうこともあるので、興味を持った人は早めに手に入れることをお勧めします。
お近くの書店やAmazon等でSoftware Design 2019年4月号をぜひゲットしてください😄

ソフトウェアデザイン 2019年4月号

ソフトウェアデザイン 2019年4月号

  • 作者: 職業「戸倉彩」,井上章,@driller,阿佐志保,本間咲来,西見公宏,根本祐介,関塚甲介,遠藤広也,増田翔子,竹端尚人,安藤幸央,結城浩,武内覚,宮原徹,平林純,森國泰平,樽石将人,上田隆一,田代勝也,中村壮一,山田泰宏,河本泰孝,mattn,小飼弾,すずきひろのぶ,青田直大,やまねひでき,くつなりょうすけ,水野源,中島雅弘,法林浩之,佐藤大,後藤大地,杉山貴章,Software Design編集部
  • 出版社/メーカー: 技術評論社
  • 発売日: 2019/03/18
  • メディア: 雑誌
  • この商品を含むブログを見る

あわせて読みたい

執筆者の西見から見た執筆裏話です。
そうそう、たしかに動画で原稿のレビューしたわーw

blog.mah-lab.com

おまけ

監修ということで、原稿のいろんな部分で「ここはこう書いた方がわかりやすいよ」とか「その説明だと初心者の人がつまづくかも」といったアドバイスを入れてみました。

最後の謝辞の文面も僕自身が添削してたりします(笑)。

f:id:JunichiIto:20190319072709p:plain:w350