みんからきりまで

きりみんです。

フリーランスなので4ヶ月仕事をせず学習と趣味に全力投球しようとしたけどそんなに強くなかった

去年の12月まで1年数ヶ月お世話になった業務委託先を離任して、1月から休暇を取っていました。 5月から新しい案件に入ったので今はまたお仕事の日々です。

さて、4ヶ月も休暇を取った理由は、毎回案件が終わる度に休暇を取っているというのもあるのですが、学習や趣味の活動でやりたいことが多すぎて、一度がっつり時間を取ってそちらに全力投球したいと思ったというのがありました。
1月の時点ではどのくらい休暇を取るのかは決めていなかったのですが、最低でも3ヶ月、案件のタイミングによっては半年くらい休暇をとってもいいと思っていました。
結果的には4ヶ月丸々休暇を取った感じになりました。

休暇中にやりたかったこと

kirimin.hatenablog.com

以前こういうエントリを書きました。
内容を要約すると30歳になる2020年の9月までに

  • ソフトウェアエンジニアとしてCSや数学の知識をもっと高めて、Androidだけでなくサーバーサイドの仕事も出来るようになる
  • もっとイラストが上手くなる
  • 英語での会話や読書に全く抵抗がないくらい英語が出来るようなる

を達成したいというような事が書かれています。
それに加え、競技プログラミングの学習やプロデュースしているVTuberのきりみんちゃん関連の活動にももっとリソースを割きたいと考えていました。

どうなったか

結果から先に書くと、堕落してしまい想定していた生産性の20%くらいしか活動出来ませんでした。
元々連休などで時間が増えてもその時間の密度は水に溶かしたように薄まって結局大して出来ることは変わらないというのは理解しているつもりでした。
そのため、短期と長期の目標を立てたり日々のやることを整理したりと生産性が上がるように出来るだけ頑張ったはずでした。
しかし、仕事のように決められた時間と求められたアウトプット以外でなにかに取り組むというのがいかにむずかしいかということを改めて痛感しました。

休暇を振り返る

1月

この頃はまだやる気にあふれていたので、休暇前からやっている毎日の始めにその日やることをTODOとして列挙していくという習慣を続け、仕事がなくても出来るだけ規則正しい生活をするように心がけていました。
また、2ヶ月単位の目標を設定したり、1年単位のやりたいことを整理したりもしました。

※日次TODOが正しく機能してる様子
f:id:kirimin:20200511181421p:plain

実際1月が一番いろいろなことがやれていて、不眠に悩んだり、「理論上は1日8時間も作業すればやりたいことが全て出来るはずなのに集中力が続かないので日課をこなしただけで夜になってしまう」と悩みながらも、毎日英語や競プロの勉強をしながらイラストを描いたりVTuber関連の作業をしたりしていました。

2月

2月に入って歯車が狂いはじめました。
この頃からコロナが話題になり始め、DroidKaigiや技術書典が中止になるなか、Switchでドラクエビルダーズ2というゲームをやり始めたところ、あまりにも面白く寝る間も惜しんで1日15時間くらいプレイする日々を1週間くらい続けてしまいました。この1週間で完全にそれまでの「規則正しい生活を保とう」という感覚が崩れてしまい、このことがずっと尾を引くことになります。
ドラクエビルダーズ2をクリアしたあとも、アークナイツを始めてしまったりPlague Incにハマったりしてゲーム欲が抑えられなくなってしまいました。
それでもなんとか技術書典で出す予定だった同人誌の執筆を終わらせ、きりみんちゃんのLive2Dモデルのフルリニューアルをしたり、いくつかのスクリプトを書いたりと後半はやや持ち直しました。

3月

3月に入りコロナの影響が本格的になり自営業の自分も次の仕事のことなどで不安なことが多くなり精神的に不安定になります。
しかしこれ以上貴重な休暇を無駄にしてはいけないと思い、次の仕事を探しつつ生活の立て直しをはかりN予備校のプログラミングコースをやったり、自分でもWebアプリの開発を始めてみたり、いろいろやり始めました。しかし、3月の半ばにどうぶつの森が発売されたことにより、またゲーム廃人状態になってしまい、全然作業が進まなくなってしまいました。

4月

4月に入り次の案件が決まると、その案件のことが気になってますます何も手につかなくなっていきます。どうぶつの森への熱は冷めず、何故かブレスオブザワイルドのマスターモードをやり始めたらドハマリしてしまい、更に何故かシャニマスまで始めてしまい一日中ゲームばっかりやっていました。
外出自粛要請があり気分転換に出かけることもできなくなり、結局4月はほとんど何も活動をせずダラダラとゲームとネットばかりして過ごしてしまいました。

4ヶ月の休暇を通して感じたこと、学んだこと

長期休暇をとっても思っているほど何も出来ない

というのはまあ分かっていたことなんですが、改めて理解しました。
なにかに取り組むには習慣化されていることが大事なので、平日に出来ないことは休日もなかなか出来ないし、休日に出来ないことは連休でもなかなか出来ない、連休に出来ないことは長期休暇をとっても出来ないという傾向があると思う。
まずは30分でも10分でも毎日やるように習慣付けしていないと、いざ時間が出来てもなかなか取り組めないし、そして習慣はすぐに堕落によって崩壊してしまうので、長く休みを取れば取るほど生産性を維持するのは難しくなると感じました。

個人的には1,2ヶ月くらいの休暇を半年か1年に1度取れるくらいが一番理想的な気がするけど、その働き方を実現するのは正社員、フリーランス問わずなかなか難しいですよね...。

しばらく自由な日が続くとすぐに時間の大切さを忘れてしまう

休暇の始めのころは「本当だったら仕事で1日終わるはずの日を自分の為に使える!」という気持ちがあり、いかに有効に時間を使うかを強く意識出来ていたのですが、月日が経つにつれてどんどん「今日やらなくても明日もあるからいいや」という考えになり怠け癖がついてしまう。

ずっと自由な時間が続くと頭を整理する時間がなくなる

変な話ですが、毎日ずっと休みだと時間の感覚も曖昧になっていくし、今日は何がしたいのか優先順位をつけるのが難しくなっていくように感じました。
逆に仕事をしていると仕事以外のことは出来ないので、「仕事が終わったらこれをやりたい」という気持ちがどんどん湧いてきて、頭が整理されるような気がします。

休暇を取るなら冬じゃない方がいい

これは個人的な好みの問題ですが、自分は夏が好きで冬が苦手なので、冬に休んでいてもどんよりとした気分になってあまり楽しめなくてもったいなかった。逆に夏は働いていると「どうしてこんな最高の気候なのにオフィスで仕事しているんだろう」という気持ちになり働いていると病みがちなので夏に休暇を取ると丁度いい。

ゴロゴロしながら据え置きクオリティのゲームが快適に出来るSwitchはやばい

Switchは最高のハードでぼくがずっと望んでいたものだけど、それだけにSwitchは布団の中で永遠に出来てしまうため、運用を間違えると大変なことになることが分かった。

自分の心の弱さを知った

とはいえ、在宅で請負いなどの仕事をしている知り合いなどをみていると、「この作業が終わるまで新作ゲームは買わない」とか言ってる人が結構いて、もしかすると自分の心が弱すぎるだけなのかもしれないと思った。

仕事を再開して

休暇中から薄々気付いていたことですが、仕事をしていた方が強制的に生活リズムを正され、メリハリのある生活をする必要があるので、自由な時間は少なくてもかえって出来ることは多いのではないかという気がしています。

特に今はフルリモートで働いていますが、フルリモートであれば昼休みにちょっとした学習や家事などをしたり、業後に仕事モードからシームレスに自分の作業に移行することが出来ます。
さらに人間は働かず何もしていないと罪悪感があり焦りなどで悪循環に陥りがちですが、仕事をしていると少なくとも対価を得られるだけの貢献はしているという承認と自尊心が得られるため、精神的にも安定しやすくやる気も出やすいです。
もしかすると個人でいろいろな活動がしたい人にとって理想の生活というのは週3,4のリモートワークで働き続けるスタイルなのかもしれない...と思いました。
どうかコロナが収まってもこのままWeb業界でリモートワークが普及してほしい...。

#技術書典 8で配布予定だった新刊「AtCoderの歩き方」の電子版が販売中なので既刊を含め紹介する【20%OFF】

こんにちは、きりみんです。
2/29に開催予定の技術書典8にサークル参加予定だったのですが、残念ながらコロナの影響によりイベントが中止になってしまいました。
それ自体はやむを得ない事だし特に異論もないというかむしろ運営のみなさんにはこの苦難をなんとか乗り越えてほしいという気持ちです。

さてそれはそれとして、サークル「きりみんちゃんねる」では新刊として「AtCoderの歩き方」という本を出す予定で、すでに300冊の入稿をしてしまった後だったのですが、電子版をBOOTHにて販売することにしました。
この判断は若干迷って、電子版を売ってしまうと紙の在庫を消化する難易度が上がってしまうので次のイベントまで温めておくという選択肢もあったのですが、今回の本は特に完全な趣味で書いた側面が強くAtCoderを布教したいというモチベが強いので、次のイベントを待たずに電子版を販売という形で公開してしまうことにしました。

というわけで、技術書典8で配布予定だった本を既刊も含めて紹介することにしました。
ちなみに期間限定で全ての本を20%OFFにしているので、この機会にぜひ購入してくれると嬉しいです。

新刊 AtCoderの歩き方 -数学が得意じゃないエンジニアにこそ競技プログラミングを布教したい!-

kirimin-chan.booth.pm

https://booth.pximg.net/c/620x620/023c5dec-c356-48b7-a126-d3fab8cc10ba/i/1844204/920d01ff-a969-498c-afd6-989452503f3f_base_resized.jpg

この本は、著者がハマっている競技プログラミングサービスの AtCoder の魅力を もっとたくさんの人に知ってもらいたくて書いたものです。 みなさんは競技プログラミング/プログラミングコンテストというものをご存知で しょうか。 かなり昔から行われているものではあるので、存在は知っているという方が 多いかもしれません。 一方で、実際にやったことがあるという人はプログラマーでも少 数なのではないかなと思います。 競技プログラミングはプログラミングを使用して数学的な問題を解く速度や正確さを競い合う遊びです。 実は競技プログラミングは近年ブームの兆しを見せています。特に数学が好きな理系の学生など、かなり若い層を中心に広まっています。 しかし、著者は競技プログラミングを数学やアルゴリズムに苦手意識がある社会人エンジニアにこそもっと布教したいと考えています。 競技プログラミングに取り組むことで、楽しみながら数学や複雑なアルゴリズムに対する思考や実装のスキルを身につけることができます。 実際、筆者も Android エンジニアとしては何年もガッツリ開発を経験してきました が、数学や高度なアルゴリズムが要求されるような分野にはとても苦手意識があり、全 く手が出せていませんでした。
しかし、近年では機械学習や XR などより高度な計算な どが求められる分野が増えてきています。 そんな時代に対応しコンプレックスを解消す るためにも、一緒にゆるーく AtCoder を始めてみませんか?
【まえがきより】

競技プログラミングサービスのAtCoderをもっと流行らせたくて書いた本です。
内容としては、競プロに興味があるけど何から始めていいかよく分からないという人や、プログラマーをやっているけど数学やアルゴリズム周りに苦手意識があって学習してみたいという人向けに、AtCoderとはどういうものか、始め方、過去問の探し方や勉強方法など知っておくと便利な知識などを紹介したガイドブックのような内容になっています。
AtCoderは勉強になるだけではなく趣味としてもとても楽しいので、興味があればぜひ読んで始めてほしいです。

具体的なコードや技法について解説した本ではないのでご注意ください。

https://booth.pximg.net/c/620x620/023c5dec-c356-48b7-a126-d3fab8cc10ba/i/1844204/a1de76df-d3b1-4743-bc16-afa7ab5c69d8_base_resized.jpg

https://booth.pximg.net/c/620x620/023c5dec-c356-48b7-a126-d3fab8cc10ba/i/1844204/1e4597f6-572e-41a7-b523-f801f35b916a_base_resized.jpg

https://booth.pximg.net/c/620x620/023c5dec-c356-48b7-a126-d3fab8cc10ba/i/1844204/4a119883-9bdc-441d-81c5-0048e1e7c211_base_resized.jpg

既刊 エンジニアのためのプログラミング以外入門

kirimin-chan.booth.pm

https://booth.pximg.net/c/620x620/023c5dec-c356-48b7-a126-d3fab8cc10ba/i/1575077/f2549b1d-2513-4a36-bec8-9f234804f59b_base_resized.jpg

この本は、著者が10 年ほどエンジニアとしていろいろな会社を渡り歩き仕事をしてきた経験を元に、エンジニアとしてこれから働く人や働き始めた人のためにエンジニアとして働くうえで著者が学んだり心がけていたりする「働き方」についてのTips を雑多に紹介する本です。

日本には優秀なWeb プログラマーがとてもたくさんいると感じています。あまり知られていない小さなベンチャーや零細企業などでも会社を引っ張っているハッカー精神を持った優秀なプログラマーが大抵一人はいたりします。
一方で、多くの開発現場でプログラマーのプログラミング以外のスキル、いわゆるビジネススキルやソフトスキルといわれるようなスキルはあまり高くないと感じることがあります。
せっかく優秀なプログラマーが開発に携わっていても、マネジメントや進捗管理などが出来ていなかったり、適切なコミュニケーションや情報共有が出来ていないために開発がうまく進んでいなかったり生産性が低かったりしている現場を多くみてきました。
本書ではエンジニアが働く上での「プログラミング以外」の部分に焦点を当て、筆者のちょっとしたTips を紹介してみようと思い書いた本です。中には「そんなことは当たり前だ」と思う内容や「自分はそう思わない」と感じる内容もあるかもしれません。
あくまでいろいろな開発現場をみてきた筆者のポエム集として、一つの参考として受け取ってもらえれば幸いです。
【まえがきより】

■対象読者
• これからWeb 業界で働く予定の人
• エンジニアとして働き始めたばかりの人
• プログラミングには自信があるのに開発がうまく行っていない、残業が多い、組織からの評価があまり高くないと感じている人

■本書で得られること
• エンジニアとしてWeb 業界で働く上で知っておくと役に立つ「プログラミング以外」の業務スキル
• 筆者が様々な技術系のビジネス書を読んで学んだり実践したりして学んだ知見のサマリ

https://booth.pximg.net/c/620x620/023c5dec-c356-48b7-a126-d3fab8cc10ba/i/1575077/669f57b2-5506-4c9b-ba92-2e7d0795f37a_base_resized.jpg

https://booth.pximg.net/c/620x620/023c5dec-c356-48b7-a126-d3fab8cc10ba/i/1575077/23e000f3-07ac-4c1b-b130-2e30cd42f85b_base_resized.jpg

フリーランスを完全に理解できる本 エンジニアがフリーランスで働くための情報と知見

kirimin-chan.booth.pm

https://booth.pximg.net/c/620x620/023c5dec-c356-48b7-a126-d3fab8cc10ba/i/1313813/14f4414d-b20b-448d-90c3-fd07767065f0_base_resized.jpg

この本は、7 年ほどフリーランスのエンジニアをやっている著者が、フリーランスについて身をもって知った情報や知見などを共有するものです。フリーランス(個人事業主)の基礎知識から、様々な知見などを惜しみなく解説しています。

■主な内容
フリーランスの基礎知識
業務委託契約や請負契約、エージェントの解説
・エンジニアの単価や相場について
・税金や経費について
・確定申告について
フリーランスキャリアプランについて

■本書の対象読者と前提 筆者が Android アプリ開発者ということもあり、本書は主にエンジニア、特に都内の Web 系業界で働くプログラマを対象にしています。
しかし、各章の内容はエンジニア以 外の職種 (デザイナーやイラストレーターなど) の人でも多いに参考にしていただけるの ではと思っています。
また、フリーランス以外の方でも、副業で収入がある方や業務委託 契約の仕事をしてみたい方にも役立つ内容だと思います。
エンジニアのフリーランスという働き方については、あまりその情報が共有されておら ず、一部の行動力がある人のみがメリットを享受している現状があります。また、最近で は「フリーランス」という言葉を使った耳障りのよい詐欺のような情報や、「全ての人は 就職せずにフリーランスになった方がよい」といった無責任な情報を発信している人もお り、うさんくさいというイメージが付いてしまっている側面があると思います。
一方で、 その反動からか最近のインターネット上などではフリーランスという働き方を極端に否定 したり、リスクを過大評価してあたかも社会的弱者かのように煽るような言説も見られる ようになりました。
本書で扱うフリーランスの情報は、そのようなメリットやデメリット だけを盲目的に列挙するような内容ではなく、現実的なフリーランスという働き方につい ての情報を共有したいという想いで書きました。
【まえがきより】

https://booth.pximg.net/c/620x620/023c5dec-c356-48b7-a126-d3fab8cc10ba/i/1313813/cfc137f4-962c-4206-956c-d5eee2f44d65_base_resized.jpg

https://booth.pximg.net/c/620x620/023c5dec-c356-48b7-a126-d3fab8cc10ba/i/1313813/5022e96b-f68f-482f-82ee-9a177386c123_base_resized.jpg

既刊 Great Little girl Programmer kirimin-chan

kirimin-chan.booth.pm

https://booth.pximg.net/c/620x620/023c5dec-c356-48b7-a126-d3fab8cc10ba/i/1767214/5b93cc74-947b-4c56-9c7e-abed376886c9_base_resized.jpg

幼女のきりみんちゃんが雪が降った早朝の町を散策したりするだけのフルカラーまんがです。
きりみんちゃんを知らない人でもオリジナル漫画としてたのしめます。

https://booth.pximg.net/c/620x620/023c5dec-c356-48b7-a126-d3fab8cc10ba/i/1767214/95fb704d-1f68-45ca-8b2a-1e2798cf98bf_base_resized.jpg

https://booth.pximg.net/c/620x620/023c5dec-c356-48b7-a126-d3fab8cc10ba/i/1767214/dbe1298a-ae53-46e7-97bf-28772183d5bd_base_resized.jpg

https://booth.pximg.net/c/620x620/023c5dec-c356-48b7-a126-d3fab8cc10ba/i/1767214/724401cc-e5eb-40af-9ba6-4f9a980bfab0_base_resized.jpg

https://booth.pximg.net/c/620x620/023c5dec-c356-48b7-a126-d3fab8cc10ba/i/1767214/9b488ae3-7d45-4307-8c9e-6f8aa2e83737_base_resized.jpg

その他

きりみんちゃんが各本について紹介してる配信のアーカイブもあるのでよかったらみてください。

www.youtube.com

N予備校に入学してプログラミング入門コースを少しやってみたけどかなり良さそうだった

このエントリはバーチャル幼女プログラマーのきりみんちゃんが書いています。

N予備校に入学してみたよ

www.nnn.ed.nico

少し前にも話題になっていたけど、Webプログラミングなどの勉強がしたいと思ってN予備校というサービスに登録してみました。
N予備校ドワンゴが運営してるネット学習サービスで、大学受験コースの他にプログラミングコースなどもあり、月額1000円ですべてのコースが自由に履修できるようです。

プログラミングコースではプログラミングの完全な初学者向け教材から、かなり本格的なソフトウェア開発のコースまで用意されているようです。

https://pbs.twimg.com/media/EPYB6S4U8AIQV7V?format=png&name=large

「プログラミング入門」コースではnode.jsを使った簡単なWebアプリの作成まで、「大規模Webアプリ」コースでは次のように本格的なWeb開発が学べるようです。

プログラミング言語ScalaとWebアプリケーションフレームワークであるPlay Frameworkを利用して、 大規模Webアプリケーションの開発を学ぶ講座です。 並行処理プログラミングコースの終了が前提となっています。 大規模なチーム開発に必要なアジャイルソフトウェア開発やドメイン駆動設計についての概略を学び、 UMLを使ったソフトウェア設計を学びます。 最終的に、Dockerを用いてMySQL、Redis、ImageMagickを利用した画像変換サービスを完成させます。

実践的な大規模サービスの開発が包括的に学べる教材というのは結構めずらしい気がします。

やってみたよ

さっそくまずはプログラミング入門コースを履修してみました。
きりみんちゃんは現役エンジニアなのでサクサクっと終わらせようと思ったのですが、想像していたよりも内容が丁寧かつ本格的でびっくりしました。

第一章では、PCにそれほど詳しくない一般的なWindowsユーザーの中高生でも理解出来るくらい丁寧にたくさんのスクリーンショットなどを使って0からプログラミングのはじめ方を解説しています。
そしてHTML、CSSの基礎を解説したあと、JavaScriptの基本構文までやるのですが、この部分も簡潔なのにとても丁寧に書かれていて、ES6の解説などしっかりモダンな内容になっていて安心感があります。

さらに驚いたのは、次の第二章ではいきなり開発準備としてLinuxやviの解説、Ubuntuのインストール、GitとGitHubの使い方、ネットワークの基礎などかなりガチな内容になっています。
軽い気持ちでプログラミングをやってみようと思った人は挫折してしまうのでは?という心配もややありますが、最初からモダンで実践的な環境や知識についてしっかり教えてくれるのは良いですね。

この辺りはネット検索の断片的な学習では身につけにくかったり、書籍だとボリュームの問題であまり解説されない部分だと思うし、専門学校でもあまり教材がアップデートされずにGitやDockerなどまできちんと教えてもらえることは少ない気がします。
実践的なスキルを身に付けさせたいという想いを感じますね。

https://pbs.twimg.com/media/EPa9NbxU8AEzf-V?format=png&name=large

https://pbs.twimg.com/media/EPa9N3GUcAEDDbI?format=png&name=largehttps://pbs.twimg.com/media/EPa9OSMUYAAbDye?format=png&name=large

個人的には使用する言語/フレームワークはnode.js&ScalaよりもRails&Goとかの方が嬉しさはありますが、考え方までしっかりと教えてくれる教材であれば別言語への応用はしやすいだろうと思います。

最近はプログラミングスクールというのが流行っていて、中には学生やほとんど実務経験のないエンジニアの作った自称プログラミングスクールサロンのようなものが結構高額で行われているのも観測したりしますが、そういうものに手を出すくらいなら、月額1000円のN予備校のプログラミングコースを履修した方が安くしっかりとしたスキルが身につくんじゃないかなという気がします。

ちなみにN予備校に登録すると大学受験コースや中学復習コースなどもすべて受けられるので、中学数学復習コースなども履修してみようかなと思っています。

https://pbs.twimg.com/media/EPYB53XUcAI47k9?format=png&name=large

またしばらく学習を進めたら改めて感想を書きたいなと思います。

俺的2010年代を象徴するゲームベスト10

流行りに乗ってみる。
象徴するといってもぼくの10年代はそんなにゲームに費やしたわけではないので、あくまで自分の中で印象的だったものという感じです。
あとどうしても記憶の問題で最近のものが多くなる。ゆるくいこう。

mizchi.hatenablog.com

jp.ign.com

10位:WATCH DOGS 2 (2016年)

store.steampowered.com

2010年代はオープンワールドが本格的に普及した時代だと思うが、WATCH DOGS 2は自分がプレイしたオープンワールドゲームの中では非常に完成度が高く、現実のサンフランシスコをリアルに再現している見事さ、その中でシームレスかつアクロバティックに繰り広げられるアクションとシナリオはオープンワールドゲームとして一つの完成形に思えた。
しかしそれ以上にこのゲームが10年代を象徴していると感じるのは、やはりその世界観とシナリオだろう。
黒人の若いハッカーが主人公で、対する敵はGoogleFacebookなどを模した巨大IT企業による個人情報の悪用や汚職犯罪など。
主人公は(フィクション特有の魔法のような)ハッキングスキルによってあらゆる電子機器を操り、ドローンやソーシャルネットワークなどを駆使し戦う。
社会問題や最新のIT技術などを取り入れた皮肉たっぷりのシナリオも面白かった。

9位:Cities Skylines (2015年)

store.steampowered.com

10年代のシムシティ
現代の技術とマシンスペック、最高のセンスによって実現された理想のまちづくりゲーム。
ゲーム性は高くないがシミュレーションとしての完成度は異常なほど高い。
そして何故かシミュレーションされている情報量から考えるとありえないほどに軽く、それを開発しているのが大手ゲーム会社ではなくフィンランドの小規模開発会社だというのだからすごい。
そんなゲームをSteamで誰でもプレイ出来るというのが10年代を象徴しているような気がする。

8位:Euro Truck Simulator 2 (2012年)

store.steampowered.com

レースをするわけでもなく黙々と広大なマップをトラックで安全運転して貨物を運ぶ労働をするというよく分からないゲーム。
しかしその運転するだけというのがとても楽しく癒やされるのだからすごい。
Steamで日々量産されている「○○Simulator」系ゲームの先駆けであり代表作と言ってもいいだろう。
これも広義にはオープンワールドゲームといえるかもしれない。

こういうゲームがSteamというプラットフォームのおかげで評価され発売から10年近く経った今も愛され未だにプレイされているというのも10年代らしさがある。

7位:Factorio (2016年)

store.steampowered.com

生産自動化ゲーのFactorioはエンジニアなら一度はやってみてほしい神ゲーだ。
マインクラフトを始めとしたランダム生成マップ上で自由にクラフトを楽しむというゲームジャンルの中で、生産ラインの自動化という部分に極限までフォーカスして作業ゲーとしての快感をこれでもかというほど詰め込んでいる恐ろしく中毒性の高いゲーム。
Factorioにインスパイアされたと思われるインディーズゲームが多く制作されていることと、Factorio自体がインディーズゲームでありながら異常なほどの情熱でアップデートをし続け、最近ようやく「このままでは永遠に完成させられない」という理由で作者が正式版のリリースを決心したというこれまたSteam時代ならではの開発スタイルも10年代を象徴してるように思える。

6位:リングフィットアドベンチャー (2019年)

www.nintendo.co.jp

いまだに品薄が続いているという、Switchの最高傑作と言っても過言ではない一本。
フィットネスゲームという万人受けを狙い薄味になりやすいジャンルでありながら、実際にはガチガチの筋トレゲーでありつつ更にゲームととしても非常によく出来ていて夢中でプレイさせてくれる。
Switch付属のコントローラー+フラフープのような軽量なリングとふとももに付けるベルトだけで、多種多様なアクションをかなり正確にトラッキングしてくれる謎の技術。
10年代はVRゲームが流行ったが、重いヘッドマウントディスプレイやトラッキングカメラといった重厚な機材を使ったVRゲームよりもよっぽどトラッキングの精度がよく感じられ没入感が得られるというのも衝撃的だった。

5位:スプラトゥーン ( 2015年)

www.nintendo.co.jp

TPS/FPS型の対戦ゲームというゲーマー向けジャンルを老若男女に楽しめるゲームデザインに完璧に昇華し、オンライン環境の成熟と相まってネット対戦というもののハードルを大きく下げたのではないだろうか。
その一方でガチのPvPとしても楽しめる出来で、Sランクを目指して廃人化するゲーマーが続出した。 発売当初Twitterを中心としたネット界隈でも大流行し社会現象となったのも印象深い。

4位:Skyrim (2011年)

store.steampowered.com

10年代初頭に現れオープンワールドゲームというものの知名度を一気に広めたゲーム。
ゲーム業界に与えたインパクトは計り知れない。 荒削りでありながら万人が楽しめるレベルまで完成度があがったことによってオープンワールドゲームをニッチなジャンルから10年代の流行へと変えた。

3位:PUBG (2017年)

store.steampowered.com

オープンワールドと並んで10年代に流行したバトルロイヤルFPSというジャンルを確立させた革新的な作品。
それまでCoDシリーズやBattle Fieldシリーズのような最高のグラフィックを追求した作品が主流だったFPS界で、当初は個人の卒業制作かと思うほど雑なクオリティでありながら、それでも革新的なゲームシステムにより大流行したというのが印象深い。

2位:ゼルダの伝説 ブレス オブ ザ ワイルド

www.nintendo.co.jp

Skyrimの登場後に誰もがSkyrimを超えるようなオープンワールドゲームを作りたいと思っただろうが、それを成し遂げたのは任天堂だった。
Skyrimを始めたとしたベゼスタゲーや洋ゲーにはない丁寧なゲームシステムやゲームバランスでオープンワールドゲームというのを再開発して見せてくれた。
10年代のRPGSkyrimに始まりブレスオブザワイルドに終わったと言っても過言ではないと思う。

1位:マインクラフト (2011年)

www.minecraft.net

しかしやはり10年代にもっとも衝撃的でもっとも素晴らしくもっとも時代を象徴するゲームは何かと問われればマインクラフトだと思う。
あらゆるものをブロック化することにより世界のすべてを自由に破壊し作り直すことが出来るという子供の頃に「こんなゲームがあったらいいな」と夢見たようなゲーム。
それまでもゲーム内のオブジェクトが破壊出来るというのは技術力の表現としてアクションゲームやFPSなどで取り入れられていたが、全てが破壊可能オブジェクトで出来た世界で自由に冒険するというのは本当にすごい。
おそらく自分が子供の頃にマインクラフトがあったら何千時間でもプレイしていたかもしれない。
マインクラフトをプレイ出来る今の子供が羨ましいとすら思う。

おまけ:ハード編

Steam

2010年代のゲームの多様性を支えたのは間違いなくSteamというプラットフォームだったと思う。
SteamのおかげでPCゲームを入手するハードルも大きく下がり、おそらく違法ダウンロードをする人も減っただろうし、インディーズゲームがフリーゲームとしてではなく有料ゲームとして評価され商業的に成功出来るようになった。

ニンテンドースイッチ

自分にとってニンテンドースイッチは、PS2一強時代が終わって以降ゲームハードがPS系とニンテンドー系に分断され、更に据え置きゲーム機と携帯ゲーム機にも分散され、コンシューマーゲームをプレイするハードルが上がってしまっていた中、とうとう待ち望んだ大統一ゲームハードだ。
最近のコンシューマーゲームはほぼすべてSwitchで発売されることになり、Switchさえ持っていればすべてが解決する時代が訪れた。
この時代が末永く続いて欲しいと思う今日このごろ。

プログラミングを学ぶにあたって詰まったことと、その後どうなったか

mizchi.hatenablog.com

みんなも何に詰まったか、書いてみてください

とのことなのでぼくも書いてみたいと思います。

プログラミング歴

  • 13~15歳:RPGツクールをやり込む
  • 15歳:はじめてのCプログラミングという本を買って少し遊ぶ
  • 19~20歳:情報系専門学校に入り基本情報を取得したりJavaを学んだりする
  • 21歳:1社目、Androidアプリを一人で作らされる
  • 22歳:2社目、Unityでフラッシュゲーのスマホ移植みたいな仕事
  • 23歳~:フリーランスAndroidエンジニアとしてひたすらAndroidアプリ開発

学習過程で詰まったこと

プログラミング言語を学ぶことが何に繋がるのかが分からなかった

たしかこの本。当時はゲームクリエイターに憧れていてプログラミングに興味を持ったけど、素人向けの技術書が今のように豊富じゃなかったし田舎だったので本屋で見つけられたプログラミングに関する本がこれだけだった。

内容はC言語の基本文法についての解説と、付属のCDにコンパイラが付いていてコマンドプロンプト上で実行出来るようになっていた。
変数の概念や四則演算などはなんとなく理解できたけど、コマンドプロンプト上で足し算をすることがどうゲームクリエイターに繋がるのかが全く分からずすぐに飽きてしまった。

その後どうなったか

この時の疑問は本質的には専門学校に行っていた頃も残っていて、ようやくちゃんと理解できたのは学校の後期にWebアプリを作り始めたり、就職してAndroidアプリを作ったりし始めてからだった。
多分今はプログラミングを実用的に使う方法を解説した本や記事が大量にあるので同じような経験をする人は少ないかもしれない。

条件判定やループなどが直感的に書けなかった

専門学校でプログラミングの授業をやって最初に躓いたのは、自分が条件判定などを上手く書くのがむずかしいという事だった。
学校では簡単なアルゴリズム問題みたいなのを大量に課題として解かされたんだけど、ぼくは条件が>なのか>=なのか<なのかというのがすぐに混乱してしまって苦戦した。
for文もi < nなのかi <= nなのかがなかなか覚えられなかった。
while文が終了条件なのか継続条件なのかもすぐに忘れ、自分は根本的にプログラミングの才能がないのではと悩んだ。

その後どうなったか

今でも競技プログラミングなどをやっていると自分はこれが苦手だなぁと感じるけど、普通の業務で書くようなコードであればほとんど"型"が決まっているので、数え切れないほど似たようなコードを書いているうちに慣れて迷わなくなった。
今ではそれが特にエンジニアとして仕事をする上で問題だと思うことはない。

予約語や関数名などが覚えられない

同じく専門学校でプログラミングをやり始めて思い悩んだのは、とにかく予約語や関数名などが覚えられないということだ。
特に当時の自分は英語がとても苦手だったということもあり、関数名は全て謎のヨコモジというようにしか見えなかったし、特にJava予約語も多くimplementedだのpublic static voidだのという文字列を覚えることに苦戦した。
なお当時学校では最初の1年はあえてIDEを使わずテキストエディタでコードを書かされていた。

その後どうなったか

これもよく使うものは意外に自然と覚えていった。
Androidを始めた頃もたくさんのボイラーテンプレート構文をとても覚えられる気がしなかったが、2年もやっている頃には素で書けるようになっていた。
まあそれよりもそもそも初心者は全てを暗記しないと行けないと思いがちだが、別に関数名や予約語なんてなんとなく憶えていれば十分である。
現代のプログラミング環境にはコード補完があり予約語や関数はサジェストしてくれるし、ど忘れしたらググればすぐに出てくる。
「そういう機能がある」という概念さえ理解できていれば十分である。

余談だが英語を学習するとこの辺はだいぶ楽になる。

オブジェクト指向が分からなかった

突然Javaの授業が始まりクラスは「たこ焼き器の型でインスタンスはできたたこ焼き」だの「AnimalクラスがあってCatクラスとDogクラスはどちらもbow()を実装しているが実行結果は違う」だの説明されたが何も分からなかった。
コードを書いていてもnewというのが何をやっているのかがいまいちよく分からず混乱していたし、根本的にオブジェクト指向が何の役に立つのかも分からなかった。

その後どうなったか

今でも何もわからない
文法面で言えばこれもやはりたくさんコードを書くことで自然に理解出来るようになっていった気がする。
オブジェクト指向の活用方法のようなものはAndroid開発を始めてだいたい分かるようになった。

正しいコーディングスタイルや設計が分からなかった

新卒で入った会社では自分よりもプログラミングが出来る人間が誰もいなかったため、ひたすらネットでググりながら見様見真似でAndroidアプリの開発をしていた。
当時はモバイルの設計論の情報などはほとんどなく、多くのサンプルコードがスタイルが統一されておらずC言語のようなコーディングスタイルで書かれていたりしたので、何が正しいのか全然分からなかった。

その後どうなったか

ちょうどその頃にリーダブルコードという本に出会い、初めてコードの良し悪しという概念を理解した。
ただその影響で必要以上に強引なコードの共通化をしようとしたり無邪気にリファクタリングをしたりしてバグを出して怒られたりした。
趣味でも小さいアプリをいくつも作ったりして同じような失敗を繰り返し、次第に「短いコード」や「共通化」といった良しとされているものが必ずしも優れているとは限らないということを学んだ。

その後より良いコードの書き方やコード設計などに興味が強くなり、その関連のブログエントリを書いたり発表をしたりするようになっていった。

伝えたいこと

生存バイアスというコメントが付くのが目に浮かぶようだが、正直自分はもともとプログラミングの素養がある方だとは思っていない。
学校の筆記試験で何も分からず0点を取ったこともある。
専門学校時代は自分よりも地頭がよく成績がよく課題を早く進めるクラスメイトはたくさんいた。

でもそんな同級生達の多くがSIerに就職していき、今でもプログラミングを続けているのかは分からない。
ぼくはとにかくどんなに苦戦してもプログラミングが嫌いではなかった。
だから就職してからも勉強を続けたしもっと強くなりたいとずっと思い続けてきた。

今のぼくはフリーランスのエンジニアとしてそれなりに高給を得て上手く仕事が出来ているし、競技プログラミングをやったりもしている。
プログラミングを始めたばかりの頃は地頭の良さやそれまでの人生で培ってきたこと(数学力や英語力)の影響が大きく出るし、簡単にマスターしてしまう他人と比べ自分は向いていないと感じることも多いかもしれない。
でも多くの「分からない」は学習と反復によって補っていけるし、もしあなたがプログラミングが嫌いではないのであれば、ぜひ"才能"を理由に諦めずに続けてみて欲しいと思う。
全く出来なかったのが何か小さなきっかけでスッと理解出来るようなことも世の中にはたくさんあるので。