#えむけーろぐ

間違った事を書いていたらやさしく教えてください

『みんなのコンピュータサイエンス』を読んだ

みんなのコンピュータサイエンスという本を読んだのでメモ。

みんなのコンピュータサイエンス

みんなのコンピュータサイエンス

 

動機

「未経験からフリーランス!」だとか「文系出身Webエンジニア!」なんて人たちがたくさんいて大活躍しているこの業界において、僕の強みは「高専5年間でコンピューターサイエンスの基礎的な訓練を(一応)受けたこと」にあると思う。そのはずが、趣味や業務でコードを書く中でそれらの知識をうまく使えている気がしないなーという問題意識があった。

5年間で学んだはずの知識をもう一度思い出しながら学び直したいなぁという気持ちがあり、良い本はないかなぁと探していたら、ちょうど最近(2019年1月)に発売されたこの本を見つけた、というわけだ。

読み進めるにあたって、高専時代に学んだことを思い出し脳内にインデックスを作りつつ、「あぁ自分はこの分野が特に抜けているなぁ」というのを知る、知ったあとはまた別の本なりWebなりで学び直す、という自分なりの方向性を決めた。

紹介

出版元の翔泳社のWebサイトには以下のような事が書いている。

本書はコンピュータサイエンスが扱う「基礎」「効率」「戦略」「データ」「アルゴリズム」「データベース」「コンピュータ」「プログラミング」という8つのジャンルにしぼり、そのエッセンスと背景となる考え方を紹介します。

みんなのコンピュータサイエンス | SEshop.com

コンピューターサイエンスの全体像を俯瞰するために、いい感じにジャンルを選び出してくれている。このジャンルがそのまま章立てに対応している。

各章の序文では、各ジャンルを学ぶ動機づけとこの章で学ぶことを絵文字と海外サイトやTwitterでよく見るインターネットミーム*1とともに紹介してくれている。本文も図と絵文字が多く、また他の書籍に比べて堅苦しくない印象を受けるので、楽しみながら読むことが出来ると思う。まさに、「みんなの」コンピュータサイエンスというわけだ。

所感

当初の狙い通り、コンピューターサイエンスの全体像を俯瞰しなおす事ができた。特に計算量とアルゴリズムの部分は自分が弱かったという事を再認識できたし、その他の章についても思い出しつつ新しいことも知る、という楽しい読書体験を得ることが出来た。

1章の基礎の部分で、2章以降で扱う問題を解決するためのツールの紹介と題して、フローチャートや擬似コード、モデルといった概念から、論理、順列と組み合わせそして確率などわりと数学の基礎の部分から軽い説明を入れてくれている。お恥ずかしながら忘れていた部分もあったので助かった。

一部の人々は数学が苦手だと思い、自分はプログラマの適正がないと思ってます。しかし、私は高等学校の算数で落第した程度ですが、でもまだコンピュータ業界で働いています。優れたプログラマを育てる算数は、学校で学ぶ数学の通常の試験で必要とされているそれとは違います。

WladstonFerreiraFilho. みんなのコンピュータサイエンス

その他の章でも、例えばDBの章では「インデックスを張ると早くて便利(なことが多い)だけど、なんで全部のカラムに張っちゃダメなんだっけ、何となく分かるけど他人に説明は出来るかなぁ」という疑問の答えが載っている。プログラミングの章では「式と文の違いってパッと見てなんとなくでわかるけどちゃんとした定義ってなんだっけ」という疑問の答えが載っている。「時間的局所性と空間的局所性の話」は久々に聞いた。

これらの「たぶん学生時代に習ったはずなんだけど、僕が普段あんまり気にしなくて忘れていた知識」がこの本に詰まっているわけだ。 

おわりに

 

「高専1〜2年生くらいのときにこの本に出会ってたら良かったなぁ」なんて思いながら読んでいた。学校で数学と情報工学の基礎を学びつつ、個人の趣味でプログラミングを学び始めたのがそのくらいだからだ。学校で各分野を詳細に学ぶ前に、全体を俯瞰できたらどんなに良かったことか。

とはいえ、一旦学生を終えてフルタイムのプログラマとして働き始めたこのタイミングで出会ったのも悪い話では無いと思う。なんとなく知っていて使っていた事柄をコンピュータサイエンスの用語を使って説明できるようになるきっかけとなったし、高専時代の良い復習となった。

プログラミング始めたての学生から、それなりにコードを書く経験を積んできた初〜中級者くらいまで幅広い人にオススメ出来る良い本だった。

f:id:mktakuyax:20190622152255j:plain

*1:xkcd.comとかgeek-and-poke.comとかで見るやつ

どんな改善もまずは計測から

うちの会社には目標管理制度(Management by Objectives: MBO)という仕組みがある。年度目標の設定とそれを達成するための四半期ごとの目標をリーダーと個人とで設定し、四半期ごとに結果の振り返りと評価、そして次の期間に向けた目標のすり合わせを行うというものだ。MBOで目標を設定する際に重要な基本原則をSMART*1と呼ぶが、その一つにMeasurable(計測可能)にするというのがある。ただ単に「たくさん仕事をこなす!」だけじゃなくて、「1日2つ以上のPull Requestをこなす。」という目標の方が良いとかそういう感じだと思う。そうしないと、期末のレビューの時に振り返ろうにも結局目標を達成できたのかどうなのかが曖昧になってしまうからだ。

僕はひとまずは自身の生産性を改善したいな、と思っているから、それを目標にしたいのだが、上にも書いたとおり目標はSMARTでなければいけない。とはいえ現状の自分の状態をあんまり知らないのに測定可能でかつ達成可能な目標を設定することなんて出来ない。まずは、今の自分の状態を計測する必要がある。どんな改善もまずは計測から、というわけだ。

というわけで、ポモドーロ・テクニックを導入してみた。ポモドーロ・テクニックとは生産性向上のためのメソッドのひとつで、25分の集中作業と5分の休憩からなる30分を1ポモドーロとして、あるタスクが何ポモドーロかかるかを見積もり、実際そのタスクを完了するのにかかったポモドーロ数も記録するというものだ。25分の作業時間中は他のことをしてはいけないし、5分間の休憩中には作業をしてはならない。詳しい説明はこのあたりとか、最近出たこの本を参照してほしい。

どんな仕事も「25分+5分」で結果が出る ポモドーロ・テクニック入門

どんな仕事も「25分+5分」で結果が出る ポモドーロ・テクニック入門

  • 作者: フランチェスコ・シリロ,斉藤裕一
  • 出版社/メーカー: CCCメディアハウス
  • 発売日: 2019/03/23
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログを見る
 

朝出社したら、今日やるべきタスクをチームのカンバンから洗い出し、それを1〜5ポモドーロ以内で達成できる小タスクに分割する。僕はこのタスクの見積もり作業に1ポモドーロを使っている。見積もりを終えたあとは、そのリストに書いてあるタスクをポモドーロ・テクニックを利用してこなしていくだけ。僕はFocusListというアプリを愛用している。シンプルなタスクのリストとタイマーがついていて、今日やったタスクとそのタスクへの見積もりと実際に掛かった時間を閲覧できる。何よりも素晴らしいのは、iOSアプリとMacアプリとでリストやタイマーの状態がリアルタイムに同期されていくことだ。公式サイトにはApple Watch対応っぽいことが書いてあるが、そんな設定は見当たらない。

f:id:mktakuyax:20190514010009p:plain

作業リストと各タスクの見積もり時間

f:id:mktakuyax:20190514011049p:plain

作業中のタイマーの様子。このタイマーはiOSアプリとリアルタイムに同期されている。

f:id:mktakuyax:20190514010035p:plain

stats機能。今日やったタスクと見積もり/かかった時間が可視化されている。

ポモドーロ中に作業の中断(同僚に話しかけられる、ついついTwitterが気になってみてしまう)があった場合はそのポモドーロは中断(ポモドーロの完了として数えない)し、また新たにポモドーロを開始する、というのが元祖ポモドーロのやり方らしい。8時間労働の場合単純計算で1日16ポモドーロクリア出来る計算になるが、実際は10ポモドーロも出来ればすごいとのこと。僕は今の所、調子が良くて6ポモドーロくらい。悪い日は……、、、とまぁそんな感じでポモドーロ・テクニックを導入することによって、自身の生産性を日々計測している、というわけだ。ついでに、タスクの見積もりの能力も身につくと思う。

毎日、退勤前に「今日はこのタスクを3ポモドーロでやる予定だったけど実際には5ポモドーロかかってしまった。原因は〜。」と振り返るようにしている。見積もりよりも時間がかかってしまった原因を特定し、その原因を潰していけば、結果自身の生産性の改善につながるはずだからだ。

今はまだやり始めて2週間くらいだから、見積もりの精度もあまり良くないが、そのうち自分にあった見積もりをすることが出来るようになってくると思う。そうしたら、同じようなタスクをより少ないポモドーロでこなせるようになってくるはず。

 

こういった話はrebuild.fmのhigeponさんがよく話している。また過去回を聞き直してみようかな。

rebuild.fm

令和初出社

普段元号なんて気にしてないし、役所以外の日常生活で唯一と言っていいほど元号表記を強制される母校の実験レポートの表紙を書くときなんかは毎回「平成何年」って検索してからあぁはいはい、今は2017年で平成29年ね、あぁしかも全角数字で入れるのかよ、アホくさっなんて言いながら生きていた僕でも、改元のおかげで大型連休が生えてきたということを考えると、記事タイトルに「令和」の文字列を入れてやってもいいだろうという気持ちになった。Happy New Era "REIWA".

前の記事でも書いたとおり、僕は有給2日をくっつけて12連休を生成したわけだが、これはちょうど高専の冬休みと同じくらいの長さだ。そのくらいの長さ休んでしまえば、連休前の業務内容など覚えているはずがない。土日明けに先週何をしていたか覚えていない僕ならなおさらだ。しかしそこは流石僕という感じで、なんと連休前で仕事の区切りを一通りつけてしまっていたのだ。というか、連休前最後の日はどうせ大きめのタスクをやっても連休後に記憶喪失になるからとか言ってゴミみたいな小さめのタスクだけを片付けていた気がする。というわけで、スッキリした頭で連休明け最初の仕事に取り掛かる事ができた。実装はあんまりスッキリしてなかったけどな。平成も終わったのにCSVと文字コードでこんなに悩むとは思わなかった。修行が足りない。

1ヶ月社会人やってみて出勤・退勤にもなれたところで12連休なんて挟んでしまったら二度と会社に行けなくなるのではないかと思っていたのだが、その心配は無用であった。何時の電車に乗れば会社に何時に着くみたいな記憶はすっぽり抜け落ちてしまっていたが、適当に電車に乗って適当に歩けば定時の5分前くらいには着く。定時を数分くらい過ぎてしれっと着席したことがこれまでに3回くらいあるけど特に何も言われていないので、別にいいってことなんだろう。30分とか遅れるならSlackの勤怠チャンネルに投げれば良い話だし。

12連休

今日で12連休が終わった。カレンダー通りの10連休の後ろに、有給を2日ぶんくっつけた感じだ。うちの会社は1年目から有給が20日付与される上に、試用期間中でも5日まで使えるというのだから驚きだ。ちょうど10連休は恋人がまるまる東京に来てくれていたから、GWは一緒に過ごして、残りの2日で溜まっていた部屋の片付けなんかをやろうという気持ちでいた。

f:id:mktakuyax:20190508234837j:plain

令和元年は、R-1と共に迎えた。一緒にアイスも食べようと事だったので写真左のやつを買ったんだけど、あんまり美味しくなかった。素直にハーゲンダッツにしておけばよかった。どうでもいいけど、黒のテーブルはホコリが目立って駄目だな。ニトリの安物だからというのもあるか。

f:id:mktakuyax:20190501000036j:plain

荻窪や西荻、隣町の吉祥寺を散策しつつ映画に行ったり、会社の近くにあるはずなのに行ったことのなかった皇居に行ったりして、美味しいものをたくさん食べた。

f:id:mktakuyax:20190508235254j:plain

f:id:mktakuyax:20190508235310j:plain

f:id:mktakuyax:20190503171340j:plain

その他、荻窪.rbという勉強会を開催してみたり、プログラミングLTというイベントで発表したり、友人たちと鍋したりと、充実した12連休だった。

明日からもやっていきたい。この記事はさっき届いたMacBook Proで書いています。13インチ軽くて小さい。手のひらサイズ。

f:id:mktakuyax:20190508235942j:plain

 

近況

グロービスに入社して4週間が経った。故郷を離れてからは1ヶ月半経つらしい。ゴールデンウィークに入ったことだし、このあたりで近況でも書いておこうと思う。

仕事

所属は、Globis Digital Platformという部署だ。職種はITエンジニアで、グロービス・ラーニング・プラットフォームというものを作っている。技術的には、今までやってきたRailsでサーバサイドのタスクをやりつつ、TypeScriptとReactでフロントエンドも書く人をやっている。今のところ、すごく良い会社だと思うし、良いチームに所属できたと思っている。

特に所属を明かしたりあれこれ公開しちゃダメだと言われているわけでは無く、自己責任のもと自由に情報発信して良いと言われているものの、その判断の軸がまだ僕の中には無いので、今ここで多くは書かないでおく。試用期間の3ヶ月が終わったら別途入社エントリでも書こうと思っている。

f:id:mktakuyax:20190427171412j:plain

会社の近くの桜。東京の桜は北海道と比べて色が薄い気がする。

生活

自炊はまだ続いている。土曜日に1週間分のおかずを作り、ジップロックコンテナに入れて冷凍したものを毎日の夕食として食べている。揚げ物と生野菜は作り置きできないので、近所のコンビニで購入して作り置きのおかずと組み合わせて食べている。最近の夕食の様子はこんな感じ。

f:id:mktakuyax:20190420192459j:plain

f:id:mktakuyax:20190421104542j:plain

朝は最初はシリアルにしていたが、シリアルだと昼前にお腹が空いてしまうということで、最近は冷凍ご飯とごはんですよと作りおきのちょっとしたおかず、たまに味噌汁を組み合わせることにしている。

会社のある麹町はランチの単価が高い気がするので、弁当を作って持ってくるようにしている。とはいえ、冷凍のご飯を突っ込んで、冷凍の弁当おかずシリーズを使っているだけなので、そんなに手間ではない。寝坊して弁当を作る時間すらも無い時は、会社の向かいにあるゆで太郎というそば屋のカレーを食べている。

f:id:mktakuyax:20190405120909j:plain

料理の際は、相変わらずつくおきというWebサイトにお世話になっている。また、野菜不足対策に関しては、先日はてブで流れてきたこの記事が大変参考になった。

goldhead.hatenablog.com

f:id:mktakuyax:20190413212836j:plain

 

まとめ

徐々に仕事にも生活にも慣れてきた。慣れない電車通勤や一人暮らしのストレスは相当のものだったようで、入社1〜2週間はどんよりとしていたけれど、今はとても元気だ。少しずつ物事を前向きに考える事ができるようになってきている。

7年間ずっと高専にしがみついていた僕から高専生という肩書を取ってしまったら、その後にはいったい何が残るんだろう、という不安があったけど、なんとかやっていけている。


Radical Face - Always Gold [Official Video]

23歳になった

今日で23歳になった。

上京してから3週間くらいが経っただろうか。新居での生活にやっと慣れてきたと思ったら、朝起きて通勤して、退勤後に帰宅して家事をしたらもうこんな時間、という驚きがある。早く自分の中での生活リズムを作って、新しい技術と触れたり好きなことをする時間を捻出していきたい。

Twitterのタイムラインを見ると母校の高専生達がワイワイしている。つい最近まで僕もここにいたのに、もうハッシュタグをつけて始業式を実況することもなければ、本科生に怯えながら休み時間をずらしてトイレに行く必要もないし、目撃情報を勝手にツイートされることもない。

僕はもう高専生では無いのだ。 


23 sai no natsuyasumi (2015 remaster)

引越しした

はじめに

試される大地HOKKAIDOから多様性の街TOKYOに引越した。入居から約2週間が経ち、いろいろ落ち着いてきた*1ところなのでここに記録していきたい。

新居は荻窪にあるアパートで、間取りは1K 8畳だ。最上階角部屋で、すべての部屋に窓があるのが良い。

部屋

部屋はこんな感じだ。8畳の正方形の部屋なので、家具が置きやすい。

f:id:mktakuyax:20190330142627j:plain

とりあえず机とベッド、テーブルを揃えた。手前にあるのは布団干しだ。洗濯物も干すことができる。

後輩に「中東の安宿みたい」と言われたベッドがこれ。何がどう中東なのか意味はよくわからなかったけど、今度中東に行く機会があったら確認してみようと思う。

f:id:mktakuyax:20190330142255j:plain

机まわりはとりあえずこんな感じにした。写真で見ると結構散らかって見える。助けてくれ。無印良品週間が今日(4月1日)までなので、収納系揃えるか。まぁ、2週間後くらいにインターネットの工事が来たらまたイチから配線など整える予定だからとりあえず今はこれで良いのだ。

f:id:mktakuyax:20190330142247j:plain

キッチン

自炊頑張ろうという気持ちなのでコンロ2口の物件にした。キッチンというスペース自体は広いのに、調理スペースやシンクが小さい気がするけど、東京だとこれでも大きい方らしい。帰りたい。

f:id:mktakuyax:20190330142330j:plain

調理スペースが全然無かったので、Amazonで調理台を買った。

やっぱり食品を扱うところだから清潔なもののほうが良いかなと思ってステンレスの調理台を買った。

まだ仕事が始まってないので自炊に関してはどうなるかわからないけど、今の所いろいろ作って食べている。まだこのルーチンがうまく回っているわけではないが、週2回ある燃えるゴミの前の日に3日、4日分をまとめて作り置きしておく、という方法でやっていきたい。

レシピはだいたい「つくおき」というWebサイトを参考にしている。

cookien.com

何を作るか迷った時は冷蔵庫の中身で検索してみたり、それでも迷う時は、つくおきの公式Twitterアカウントがあって、毎日レシピをツイートしてたりエゴサーチのツイートをRTしていたりするので、それを見て適当に決めている。

twitter.com

お弁当男子になるかどうか迷うけどどうしよう。就職先は、就業時間後にダラダラやる飲み会が無い代わりに、突然のランチ*2が生えてくる印象があり、そういう時にお弁当を持ってきていると悔しい思いをする気がする。これについては1ヶ月ほど様子見する予定だ。夏場にお弁当なんか持ってきても衛生面で心配だなぁという気もする。

 

周辺

徒歩圏内で日常の生活は完結すると思う。ちょっと大きな買い物をするのにも、吉祥寺に行けばすべてがある。

通勤は1本で行けるけど、勉強会行くとか、友達と遊びに行くとかなった時困るかもしれない。新宿に出てさえしまえばあとはなんとでもなるからまぁ良いのだけど。

通勤

小中学校は当然徒歩だし、高専は専用の高速通学バスか自家用車で通っていたので、はじめての電車通勤だ。

中央線と丸の内線どっちもいける。四ツ谷まで行って、5分くらい歩いたら会社に着く。近所にはオーマイパスタの本拠地僕のMac mini代の支払い先などがある。

今後

家具家電

とりあえず絶対必用なものは揃ったと思う。今めちゃくちゃ欲しいのは、食洗機、ロボット掃除機、ソファだ。初任給でどれか買おうと思うけど、何にしようかな。たぶん食洗機を買うと思う。一人暮らしサイズのやつなら調理台の上に置ける気がする。

なんだかんだでテレビほしいかもしれない。テレビいらないとか言ってたけど、友達呼んでゲームする時とか、ただ世間で起こっている事を受け身で知りたいときとか、なんだかんだ実家でもテレビを使っていた気がする。たぶんソファ買ったあとかな。

他にも細かいところでいろいろ必要なものが出てくるだろうから、適宜買い揃えていくことにする。

PC・インターネットまわり

リモートワークや趣味のゲーム実況のために、高品質なインターネット回線が必要だったので仲間内で評判の良いNURO光を導入することにした。ただでさえ遅いNURO光の工事もこの時期はさらに混み合っているらしく、結局インターネットを使えるようになるのは4月16日なようだ。2ヶ月くらい前に申し込んだのに。まぁ、仕方がないので待つしか無い。

PCまわりについては、ほぼ自宅の環境をそのまま持ってきたという感じ。Mac miniを常に動かしつつ、持ち歩きにはMacBook Proを利用している。ただ会社からMacBook Proを貸してもらえるので、私物のMacBook Proいらない気もする。車使えるならともかく、東京の街を15インチのラップトップを背負って歩きたくない。マインクラフトやJenkinsが動いているサーバは実家に置いてきた。親の金で動かすサーバはうまい。

東京に来て気づいたこと

あとは、北海道千歳市で生まれ育った自分が東京 杉並区に来て気づいたことを適当に書いていこう。

  • 市の指定ゴミ袋が無い。
  • 「ゴミステーション」という概念が無い。
  • 道が狭いくせにスピードは一丁前に出す。
  • 川が汚い。
  • 人と車との距離が近い。
  • バイクや原付きが多い。
  • お店や病院等、人が多くて混んでいると思ったらその人口に見合った数だけ選択肢があるのでそんなに混むわけでもない。
  • 「おささる」が通じない。
  • 3月でもちゃんと寒い。
  • Suicaに10円単位でチャージできる。(JR北海道は1000円単位なのでつらい)

まとめ

そんなわけで都民になった。住む場所も肩書も何もかも変わって、楽しかったりめんどくさかったりするけど、良い感じにやっていこうと思う。

2019年度もよろしくお願いします!!!

ほしいものリスト

就職先の上司に「ほしいものリストはよ」って言われたのでここに置いておきます。皆様からの暖かいご支援お待ちしております。

mktakuyaのほしい物リスト

*1:人に見せられるレベルになってきた

*2:任意参加