It's okay to be weird

レールの無い道を行くプログラマーのブログ

競技プログラミング、広く言うとコーディングチャレンジとの付き合い方について考えた

最近、僕の所属しているGMOペパボの競技プログラミング部に参加するようになったことをきっかけに競技プログラミングにハマっています。

tech.pepabo.com

毎週お昼のランチの時間を使ってみんなでワイワイ問題を解いたり、時には業務時間後に「P社の放課後」として活動することもあります。
競技とはいってもみんなで競い合う、という雰囲気ではなく、解けなかった問題について議論したり、こういう書き方もあるよーとアドバイスしあったり、本当にいい雰囲気のクラブ活動となっています。

競技プログラミングと自分

自分自身は学生の時から競技プログラミングには興味があって、ブログとしては5年ほど前に以下のような記事を書いたりもしていました。

blog.okweird.net

なぜ競技プログラミングをやるのかというと、やはりデータ構造とアルゴリズムをしっかりやってた方が強いよね、という考えがずっとあるからです。

それに加えて、AtCoderなどのサービスではレーティングがついてランクによって色分けされたりと、上を目指すとまるでネットゲームのような中毒性があります。

そんなこんなで競技プログラミングやっていくぞーとなっていたのですが、入社まだ半年で業務を通してなかなか思ったようにバリューを出せないでいる中、身につけるべきことがたくさんあり、ちょっと優先順位考えねばならぬなと思い始めました。
やりたいことがたくさんあっても時間は有限なので、やることを選択する必要があるなと考えさせられたのです。

ハマり始めた頃はAtCoderの水色コーダーを目指そうかとも考えましたが、下のような記事を読んで覚えることの余りの多さに「ウッ」となってしまうような状況なので、生半可な取り組み方じゃ難しそうだなとも気づかされました。

qiita.com

職業プログラマーな以上、やはり一番は仕事においてバリューを出すことなので、いったん競技プログラミングについてはたしなむ程度にとどめようと思いました。

でも問題解くのは楽しいし役に立つ

ただ、問題を解いて他の人の解答も見ながら言語を覚える*1というのはとても楽しく、かついい体験なので、何かしらコーディングチャレンジは継続していきたいなと思っています。
AtCoder ABCのC、D問題を安定して解く、ぐらいならそこまで時間を投資せずともこなせそうな気がするので、それを第一にやっていこうと考えています。
また、コーディングチャレンジサイトはAtCoderの他にLeetCodeCodewarsExercismなど色々ありますが、迷った結果、LeetCodeの問題は見た感じアルゴリズムとデータ構造をきちんとやることが求められそうなので、そこは将来余裕が生まれた時にしっかりやっていくことにし、当面はカジュアルな知識でも解けていけそうなCodewarsをやっていくことにしました。

まとめ

競技プログラミングについては会社のクラブ活動をメインとし、気が向いた時にAtCoder ABCに参加して茶色コーダーを目指しつつ、Codewarsも余裕がある時にやっていく。
そんな方針でいきたいと思っています。

*1:今はRubyを勉強中です

未来を担うプログラマーになるために―『The Pragmatic Programmer, 20th Anniversary Edition』を読んだ

本『達人プログラマー』の20周年版『The Pragmatic Programmer, 20th Anniversary Edition』(未訳)を読み終えたので読後記事を書いておきます。

本について

本書はソフトウェア開発コミュニティをリードするDavid Thomas, Andrew Huntによる共著で、初版の『The Pragmatic Programmer』(訳書名は『達人プログラマー』)は長くプログラマー必携の書として愛されてきました。本書は1999年に初版が発売されて以来初めてのアップデートとなる20周年記念版です。購入は著者自身が運営するThe Pragmatic Bookshelfにて可能です。

pragprog.com

僕自身も旧版を読んでかなりの影響を受けた本で、技術書を1ヶ月に1冊読む毎年少なくとも一つの言語を学習する、といった習慣はこの本を読んで開始したものです。 DRYといった言葉を広めたのもこの本でした。

53のトピックのうち1/3ものトピックが新しいものとなっており、既存のトピックも含め、かなりの改変が加えられています。ソフトウェア開発の世界で20年といったら相当な期間なため、それだけのアップデートが必要となることもうなずけます。

トピックは哲学から始まり、コーディングに関することや、ツールやプロジェクトの進め方や、並行性に関するものなど、広範囲に渡っています。

感想

Juggling the Real World トピックなど、 有限状態マシンといったコンピュータ・サイエンス的な要素も持ったトピックが増えており、大変楽しく読めました。Transforming Programming トピックではElixirといった著者が得意とする最新の言語も利用しつつ、パイプラインなどのモダンな手法について触れられており興味深かったです。Test to Code トピックの「テストは実行する時ではなく、考えたり書いたりする時に恩恵をもたらす」といった言葉にはハッとさせられました。

また、トピックの始まりの名言の引用など、テクノロジー以外の分野からの参照も多く示唆に富んでおり、説得力を持って響いてきました*1

対象読者

個人的には旧版を読んだのはまだ実務経験が浅かったころだったため理解が追いつかなかったこともありましたが、今回は具体的なイメージをしながら読めたため前回読んだ時より身になった感が強かったです。

そのことから、ある程度経験を積んだ上で読んだほうがいいかもしれないと思いました。Hacker News などのコメントを見ていると自明なことばかり書かれていてあまり得るものがなかった、という人も中にはいるようなので、ベテランというよりは初〜中級者が読むとより効果が高いのかな、と思います。

後書きに身が引き締まった

最後を締める後書きでは、「我々開発者は非常に特権的な立場にあり、文字通り未来を作っており、強力なパワーを持つ。そしてそれはとてつもない責任を伴う」と述べています*2。この言葉に改めて身が引き締まりました。

まとめ

20年ぶりの刷新となりますが、逆に言えばそれだけの間更新されなくても特定の言語やツールに囚われない普遍的な力を持った本だったということだと思います。

今回の20周年版も、広範囲に渡る53のトピックがこれからの20年を良いプログラマーとして過ごすために必要な知識や慣習を支えるものとして手助けしてくれそうです。

未来を担う責任を持つプログラマーの一員として、細部にこだわりながら*3これからも励んでいきたいと思いました。

pragprog.com

リンク

*1:著者のAndrew Huntによる『リファクタリング・ウェットウェア』も考え方を科学的に改める機会となるものとしてお勧めです

*2:"With great power comes great responsibility" ってやつですね

*3:著者は良いプログラマーになるためには実際のところ paranoid になる必要があると述べています

2020年抱負

サクッと。

  • まずは何より仕事で必要とされる技術やドメインについてしっかりやっていきたい。
  • お金周りのことをもっとよく知るために簿記を勉強したい。
  • TypeScriptやっていきたい。
  • 競プロやっていきたい。
  • ギター教室に通いたい。
  • 台湾行きたい。
  • ジム入ったのでやっていく。

2020年はインプットを中心に種をまく年にしたいです。

今年もどうぞよろしくお願いいたします。

2019年振り返り

明日で2019年も終わりですね。皆さんにとってどんな年だったでしょうか。

僕はPerfumeの2018→2019年のカウントダウンライブに参加しており、年初は横浜で迎えました。

今年の抱負でこんなことを書いていました。

Perfumeのカウントダウンライブでこれ以上ない年明けを迎えられたので、最高の年になる気がしています。

結果的には振り返ってみて、本当に最高の年になりました。

というわけで毎年恒例の一年の振り返り記事を書いてみたいと思います。

public

お仕事

お仕事としては、8月までキャッチアップ、9月からはGMOペパボで働かせていただきました。

キャッチアップ

転職という大きな決断をしたのですが、代表を始め、皆さんに快く送っていただくことができました。現職でも前職でやってきたことが活きる場面が多々あり、本当に感謝しています。

何かと自分で決断せず、周りに流されてきた自分が初めて自分で選んだ職場だったのですが、色々なことを経験させていただき、非常に貴重な財産となっています。現職でもプロダクトを通じて関わりがあることもあり、転職したからといって切れた関係ではないので、これからもコミュニティなどを通じていい関係を続けていけたらと思っています。

GMOペパボ

GMOペパボではペパボカクテルというオンボーディングプログラムにのっとり、メンターとは週次で、さらにマネージャーを交えて月次で3ヶ月間振り返りを行いました。振り返りを振り返るというメタな感じがしますが、主観で何事もネガティブに判断しがちな自分に客観的な目線を与えていただいて、非常に助かりました。年末のGitHub EnterpriseのIssues整理では、振り返りの記録を眺めて「4ヶ月けっこう色々やってきたな〜」とエモい気分になりました。

Windows 95でインターネットに出会って以来、インターネットの良い面、悪い面をたくさん見てきましたが、個性的な仲間たちと一緒に、インターネットを使ってもっとおもしろくできる予感がしています。来年はもっともっと頑張っていきたいと思っています。

イベント

イベントとしては、大きく2つのものに携わりました。

baser Meetup vol.2

5/25に開かれたbaser Meetup vol.2で実行委員をさせていただきました。幅広くWebについて語ることのできるとても良いイベントになったと思います。baserCMSのマスコットのべっしーケーキがとても可愛かったです。ヌーラボさん、ありがとう!

basercms.net

PHPカンファレンス福岡2019

6/29にはPHPカンファレンス福岡2019に実行委員として参加しました。大きなカンファレンスの裏側を知ることができ、非常に貴重な体験となりました。コミュニティとの繋がりも一気に広がりました。コミュニティって最高ですね。

blog.okweird.net

private

Perfume

今年は2015年に初参加して以来、カウントダウンの年越しを除外すれば、初めてPerfumeのライブに行かなかった年でした。来年は2月に福岡ドーム公演があるため、はっちゃけたいと思っています。FUSIONを選曲してくるという攻めの姿勢の紅白も楽しみです。

WILD BUNCH FEST. 2019

山口県のWILD BUNCH FEST. 2019に参加しました。雰囲気は平和でいい感じでした。とにかくラインナップが豪華で、どのアーティストを観るかかなり迷いました。色々見ましたがその中でもKing Gnuの常田大希の色気が半端なくて一番印象に残りました。こちらも紅白楽しみです。

Billie Eilish

Perfumeが出演したCoachellaの放送をきっかけにBillie Eilishを知ったのですが、彼女が自分の中で今年一番のニューカマーでした。10代であれだけのことをやれるんだからすごい。

ギター

今年の抱負でギター頑張るぞと宣言していたのですが、転職という大きなイベントがあったこともあり余裕がなく、あまり触ることができませんでした。来年は頑張っていきたいです。

最後に

大掃除をしていたら、長かった引きこもり時代に姉が自分の結婚式前に送ってくれた手紙を見つけて読んでいました。当時はすごく心配をかけてたんだなと今になってひどく感傷的になっていました。

自分で選んで楽ではない人生を歩んできましたが(楽な人生歩んだ人なんていないでしょうけど)、ようやく自分の人生、軌道に乗ってきた感じがしています。
来年もこのままの勢いに、関わってくれた全ての人に感謝しつつ、大きく飛躍していきたいと思っています。

ではPerfumeとKing Gnuを楽しみに紅白を待とうと思います。

良いお年を!

GMOペパボに入社して3ヶ月経った

ブログでは報告していませんでしたが、2019/09/01付でGMOペパボにホスティング事業部所属で入社していました。

そして11月を終えて3ヶ月経ち、無事試用期間を終えることができました。

34歳にして初めてのフルタイムだったり、ホスティングという幅広い知識が求められる分野だったり、多くのユーザーを抱える責任感だったり、Slackの流れの速さに驚いたり、社員の数多くて人見知りにはつらかったり、環境に慣れるのがまぁ大変でしばらくはSNSをやる余裕とかもなくなってましたが、3ヶ月を無事終えることができ、ひとつ区切りがついて自信と余裕がわいてきました。

まだまだまだまだ足りない部分はたくさんあるので、いい環境を与えていただいている以上、もっと貢献できる人間になれるよう頑張っていこうと思います。

インプット欲が高まってきたので色々やっていくぞ 💪

本『リファクタリング・ウェットウェア』で考え方と学び方を見直す

『達人プログラマー』の共著者として有名なAndy Huntによる『リファクタリング・ウェットウェア』を読みました。認知科学、神経科学、学習・行動理論に基づいた、学習や思考スキルに関する本です。

なお、この本を読み始めたのは達人プログラマーの20年ぶりの改訂版がベータとして発売されたタイミングで、そちらはベータが取れるのを待ち、こちらをまずは読んでみようと思ったことがきっかけです。
また、Courseraの『Learning How to Learn』『エンジニアの知的生産術』などもそうですが、こういったメタスキルに関するものは、流れが速いIT業界の中で、早く身につけておくことで、流行りに惑わされない不変の力をつけておくことができるとも考えました。

リファクタリング・ウェットウェア ―達人プログラマーの思考法と学習法

リファクタリング・ウェットウェア ―達人プログラマーの思考法と学習法

  • 作者: Andy Hunt,武舎広幸,武舎るみ
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2009/04/27
  • メディア: 単行本(ソフトカバー)
  • 購入: 25人 クリック: 475回
  • この商品を含むブログ (151件) を見る

内容

読者としてプログラマーを想定して書かれている部分が多く、多くの場所でコンピューターと脳の比較の話がでてきます。この2つは類似する点も多いものの、相違する点も多く、どうやったらフルに活かすことができるかといったことが本を通して書かれています。

右脳、右脳と単純に分けられがちな、脳の異なるモードについて本書ではL(inear)-modeとR(ich)-modeと区別し、直感を提供するR-modeの重要さを説いており、どう意識すればL-modeに抑えられがちなR-modeを協調させて活用できるかについて特に分量を割いて書かれています。

学んだことの実践のために、各区切りに「Next Actions」として、学んだトピックについて実際に行動するチェックリストがついており、今までの習慣から抜け出してリファクターされた考え方を実践する手助けをしてくれます。
また、付箋にして壁に貼っておきたいような言葉がTipsとして48つにまとめられており、あとからも参照しやすいようになっています。

良いなと思った点として、プログラマー向けに書かれた本ではあるものの、紙とペンを常に持ち歩いたり、本書で勧めているマインドマップもアプリではなく手で描くことを勧めています。プログラマーとしては全てデジタルで管理したくなりがちですが、アナログの良さも活用していきたいと思いました。

有名な、スキルの習熟度を5段階に分けるドレイファスモデル、目標設定のフレームワークであるSMARTといったものも目安として参考になりました。

感想

最後まで読んで、脳というものについて、自分の体の一部でありながら、いかに働きを理解していないか、認知バイアスがかかってしまっているかを思い知らされました。

この本が出版されたのは2008年であり、発展が目まぐるしい科学の中で、今では通用しないこともあるかもしれませんが、なるべく固定観念に囚われず、常に子供のようなまっさらな気持ちで何事にも取り組んでいきたいと思いました。まずは前から気になっていたマインドマップを実践してみようと思います。

最後にこの本の中で特に刺さったマルセル・プルーストの言葉を引用します。

The real voyage of discovery consists not in seeking new landscapes, but in having new eyes.

真の発見の旅は、新しい景色を探すことではなく、新しい目を持つことにある。

リファクタリング・ウェットウェア ―達人プログラマーの思考法と学習法

リファクタリング・ウェットウェア ―達人プログラマーの思考法と学習法

  • 作者: Andy Hunt,武舎広幸,武舎るみ
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2009/04/27
  • メディア: 単行本(ソフトカバー)
  • 購入: 25人 クリック: 475回
  • この商品を含むブログ (151件) を見る

リンク

PHPカンファレンス福岡2019 #phpconfuk に実行委員として参加しました!

PHPカンファレンス福岡2019に実行委員として参加しました。

今年の実行委員長 (@tsubakimoto_s さん)、来年の実行委員長 *1 (@seike460 さん) がブログを既に書かれているので、それに続こうと思います。

tsubalog.hatenablog.com

blog.seike460.com

完全に運営視点の話になりますので、参加者目線のブログは公式サイトにこれから掲載されていくものをご覧いただければと思います。

目次

きっかけと役割

去年のPHPカンファレンス福岡2018では人生初となるLT登壇をさせていただきましたが、今年は実行委員として参加したいと思っていました。そんな折、OSS Gate Fukuokaにサポーターとして参加した際、実行委員長の@tsubakimoto_s さんとご一緒する機会があったため、参加したい旨を伝えたところ快諾していただき、参加することとなりました。

初めての参加なので、当日スタッフぐらいで軽く関わるようなイメージでしたが、結果的にはグッズの発注、当日の司会(スポンサー読み上げ、HASIGOホール)まで任せていただき、かなり深く関わらせていただきました。 何度かイベントの運営には関わらせていただきましたが、200人を超える規模の運営は初めてで、とても貴重な経験となりました。

ここがすごいよ、PHPカンファレンス福岡運営

実行委員として関わって、ここがすごいと思った点をいくつか書いていきます。

ボランティアベース

実行委員ですが、基本的に全てボランティアでの参加です。日々の業務もある中、この規模のイベントの運営を自分の時間を削って行っている皆さんの姿に、自分も頑張らなくてはと刺激を受けながら関わりました。

当日までのやりとりはほぼオンラインで

デザインや発注、決めごとなどのやりとりはBacklogの課題ベースで行いました。Facebookのグループもそれを補助するように利用しました。

顔合わせは最初のキックオフとセッション採択会議、最後の詰め、前日準備の4回程度で、当日が初顔合わせという方もいました。オンラインだけでのコミュニケーションってどうしても難しさがあるので、これはすごいことだと思います。

当日もチームワーク抜群

当日はもっとピリピリするものと思っていましたが、そんなことはなく、和やかな雰囲気の中、進行しました。途中予期せぬ出来事がいくつか起こった時も、当日用Slackで共有して迅速に対応していました。チームワークは抜群でした。

嬉しかったこと

個人的に嬉しかったことを書いていきます。

スポンサー読み上げ

間違えがあってはならないとかなり緊張して迎えたスポンサー読み上げですが、ご好評だったようで何よりでした。

終わったあとハッシュタグを眺めてにやにやしていました。

(なお、僕のしゃべりがゆっくりだったのも原因か、開会式のあとの午前のスケジュールが5分押してしまったのは内緒です。ご迷惑おかけしました。)

みんなで練り上げたものが評価されると嬉しい

議論を重ねた結果、こうした方がいいのではないかと決まったことが、参加者の方の生の声で評価されると実行委員としては本当に嬉しかったです。

僕が関わったものの一例としては、ネームカードを去年の表面だけからタイムテーブルなどを印刷した裏面も加えた、というのがあったのですが、ご好評だったようです。

みんなで練り上げた甲斐があったなぁと思いました。

どんどんツイートしてね!

参加者の皆様、こういう「いいね」と思ったことがあったらどんどんツイートしてください。実行委員は泣いて喜びます(笑)。

大変だったこと

大変だったこととしては、普段デジタル製品ばかり扱っているせいで、グッズの発注作業はなかなか慣れないことで苦労しました。

デザイナーの @torchright さんに仕上げてもらったデザインを元に発注したのですが、業務であまり関わらないaiファイルなどを扱う必要があり、割と大変でした。金額が大きなものもやらせてもらったので責任も大きかったです。

あとは、袋詰め作業をしている時に、「あれ、エコバッグ足りない?」という声が上がった時は発注を担当していたので心臓が縮み上がりました(結局足りてました 笑)。届いてみないと分からないアナログ製品の難しさを感じました。

謝意

改めて、このイベントを成功に導いてくださった、スポンサーの皆様、登壇者の皆様、参加者の皆様、誠にありがとうございます。そして実行委員の皆様、半年間、本当にお疲れ様でした。

また、一人として欠けては成り立たなかったことですが、この場を借りて、以下の方々に特に感謝の意を表したいと思います。心よりありがとうございます。

  • 初めての参加にも関わらず快く受け入れてタスクを任せてくださった実行委員長の @tsubakimoto_s さん
  • 「ここまで目が届くか!」というところまで気配りしていただいた @akase244さん
  • HASIGOホールの司会で柔軟にサポートしてくださった @youukkari さん

青春謳歌

余談ですが、僕は高校中退して引きこもり生活が長かったこともあり、青春と言える時代を過ごさずに30過ぎまで生きてきました。今回このようなイベントに関わることができ、いくつになっても青春って送れるものだなぁと思いました。大きな文化祭をやってる感覚というか。

30歳を迎えたPerfumeの3人が2018年カウントダウンライブで肩を組み合って「青春謳歌!」と叫んだのが僕は大好きなんですが、まさに自分は青春謳歌できてると感じました。まだまだ青春謳歌していきます!

最後に

さて、最後に。

去年も言いましたが、今年も言います。

PHPカンファレンス福岡最高!

*1:PHPカンファレンス福岡では懇親会で来年の実行委員長が決まるという恒例行事があります