JUNのブログ

JUNのブログ

活動記録や技術メモ

2022年4月振り返り

2022年4月を振り返ります。

就活

内定承諾をし、就活が無事終わりました。来年から働くぞい。

結局面接は12,13社くらい受けたと思います。面接回数は20回以上やったかな?結構大変でしたがなんとか就職が決まり良かったです。面接を担当してくれた企業の皆様にはお世話になりました。

バックエンドチューニングコンテンスト

42Tokyoとドリーム・アーツの共催のイベント、バックエンドチューニングコンテンストに参加しました。イメージとしてはISUCONみたいなやつです。

バックエンドのチューニングや、DBやAPIサーバーのパフォーマンス向上について学べました。

twitter.com

読んだ本

ネットワークはなぜつながるのか

いろんなところで勧められている本なのに読んだことなかったので読んでみました。ISPのネットワークやソケット通信の概要などが知れて、ネットワーク全体の概要を掴むのにとても良かったです。

ゼロからはじめるデータベース操作

SQLをしばらく書いてなかったので読んでみました。知ってることも多かったですが良い復習になりました。

その他

就活が終わった勢いのまま4月後半は遊びまくりました。Apex、ドライブ、競馬と色々やってました。たくさん遊びました。ただ、あまりにも毎日遊びすぎたので、5月からはまた気持ちを切り替えて頑張っていきたいと思います。5月はC++でWebサーバーを書く課題があるので、それがある程度終わりましたと5月の振り返り記事で言えるようにしたいですね。では来月も頑張るぞ~えいえいむん!

2022年3月振り返り

2022年3月を振り返ります。

インターンシップ

3月前半は株式会社CyberZにてサーバーサイドエンジニアとして2週間のインターンシップに参加させて頂いてました。

www.cyberagent.co.jp

このインターンシップでは主に新機能の開発と既存機能の修正などを行いました。

自分が担当したOPENREC.tvというプロダクトはクリーンアーキテクチャをしっかりと意識してコードが書かれており、各層の役割が明確に分けられていてとてもきれいなコードでした。

ちょうどインターンシップを行っている最中に「Clean Architecture 達人に学ぶソフトウェアの構造と設計」を読んでいたこともあり、出勤前に本を読んで、業務で実際に Clean Architecture が適用されたコードを見るという最高のサイクルを2週間回してました。ソフトウェアの設計などについてインターンシップ参加前に比べて詳しく具体的なコードをもとに理解できました。

ちなみに OPENREC.tv の Android チームの方がが書かれた以下の記事がとても良いので読んだことない方は読んでみるとよいと思います。

note.com

また、テーブル設計やテーブル設計の変更の管理などはあまり知らなかったので実際の現場ではどのようにそれらを行っているのかが知れてとても勉強になりました。

ランチや交流会などのイベントもあり、大変楽しく学びとやりがいのあるインターンシップでした。

OPENREC.tvチームの皆さんありがとうございました。

ft_containers

C++STLコンテナ群(vector, stack, map, set)を再実装する課題をやっとクリアしました。

2月の時点でほとんど終わってはいたのですが、実装漏れなどもあり、結局3月までかかりました。

この課題についてはそのうち記事を書こうと思っているので、書いたらリンク貼っときます。

読んだ本

Clean Architecture

インターンシップのところでちょっと名前を上げましたが、この本を読みました。

本の内容としては Clean Architecture というソフトウェア設計の考え方みたいなところを説明する本です。基本的には依存関係の方向性と凝縮性をどのような意識のもとで管理すれば変更しやすく運用しやすいソフトウェアが作れるのかということを様々な参考文献や経験をもとに書かれている本でした。

具体的なコードはほとんど出てこないので Clean Architecture を本当の意味で理解するには実際にそれを用いてソフトウエア開発を行うのが必須だと思いました。幸い今回のインターンシップでその実践部分を完璧に行えたのでとても良く理解できました。

雑多なこと

携帯変えた

キャリアでキャンペーンをやっていたので iPhone12 買いました。7000円くらいで iPhone 12 128GB が買えたのでとっても良かったです。

メイン開発機がWindowsになった

2月末に湾曲UWQHDモニターを買ってからというもののメイン開発機がWindowsに移行しました。前までは Thinkpad X1 Carbon 2017 に Ubuntu を入れて使っていたのですが、せっかく性能の良いゲーミングPCがあるのでこっちを使うようにしました。めっちゃ快適です。

自分がプログラミングを始めた2016年くらいってWindowsで開発しようとしたらVirtualBoxUbuntu動かすか、PowerShellで頑張るかって感じだったんですが、今はWSLというすばらしいものがあり、普通にWindowsでコードが書けてとってもいい感じです。

Windows11のアップデートが来てたのでアップデートしたのですが、新旧のUIがごちゃまぜでこれはいまいちですね。Windowsは頑張ってモダンな設定画面やUIを取り入れようとしているんだけれども、ちょっと込み入った設定を行おうとすると昔ながらの設定が出てくるので開発者の苦労が見えますね。後方互換性とかいろいろ気にすることが多そうで大変そうです。

今回メイン開発機となったゲーミングPCは Ryzen 5600X と GeForce 3060Ti、メモリ32GB を積んだ元々VRゲームとかやるために買ったゲーミングPCですが、開発するには十分すぎるスペックなのでとても快適に開発できています。

あとはフォントとか高dpi時の表示とかが綺麗になればパーフェクトなんですけどね。

お出かけ

免許を2021年11月に取ったんですけど、2022年3月になってやっと1週間に1回程度ですが車に乗るようになりました。温泉行ったりホームセンター行ったり、あまり移動範囲は広くないですが安全運転で楽しくドライブできるようになってきたような気もします。

また、インターンシップで2週間東京に行ってたのもあり42Tokyoの校舎に行ったり、渋谷の美味いハンバーグ屋に行ったり、42Tokyoの友達や高専時代の友達に会ったりして楽しかったです。

3月後半に就活関連で東京にもう一度行くことがあり、その際にスーツの動画に影響されて夜行バスのプレミアシートで移動してみました。

www.youtube.com

夜行バスプレミアシートで大阪東京間移動してみた感想ですが、自分は新幹線のほうが好きですね。

夜行バスプレミアシートは普段乗っている4列シートと違い、ほぼ水平までリクライニング倒せるし、アイマスクや耳栓、ブランケットなどのアメニティあるし、カーテンで仕切られていてほぼ個室みたいな感じだしでとても良いのですが、やはりバスなので振動などはありますね。あと致命的だったのは乾燥で、とにかく空気が乾燥していました。寝始めたらとても寝れるんですが、寝るに至るまでに乾燥で口が乾きまくってきついです。

ただ、寝てる間に移動でき、朝起きたら東京に付いているので、朝から用事あるときはいいかも...?

帰りは新幹線で帰りました。

アニメとかゲーム

3月といえば冬クールのアニメが最終回を迎えるということで色々見てました。冬アニメは以下のような感じで見てました。

  • 進撃の巨人: やばい。面白すぎる。記事を書いてる日の前日(2020/04/03)に最終回が放送されましたがあの状態で2023年まで続きを見れないのはなんてこったって感じです。
  • 着せ替え人形は恋をする: 喜多川さんすこだ。俺の考えた最強のオタクにやさしいギャルって感じですばらしい。
  • 86(延期してたやつ): 第一話放送時から待ち焦がれていたシーンがついに放送されてオタクワイ号泣。シン×レーナ 良すぎる... 永遠に幸せでいてくれ...

あと、「タコピーの原罪」を読んでました。なかなかにきつい漫画でしたが最後は幸せそうな感じで終わってよかったです。面白かった。

東京滞在中に書籍を買おうと思ったら売り切れてました。とっても人気なんだっピね!

ゲームは初めてAPEXというのをやってみました。流行ってるらしいのでやってみましたがFPSゲームをあまりやらないので敵を見つけても弾が当たらなくてすぐ死んじゃいます。あとルールがよくわかっていないので多分これ友達と一緒にボイチャつないでやったほうがよいのだろうなと思いました。

完走した感想

前半インターンシップ、後半色々って感じの月でした。2月はマジで一瞬で終わりましたが。3月はとても充実していたように思えます。

前半のインターンシップはソフトウェア設計や継続的に開発ができるプロダクトを作るために意識していることが体験できたとてもいい機会でした。今までも実際のプロダクトに触れるインターンシップなどには参加したことがあるのですが、このような設計などについて学びを得られるのは今回のインターンシップ先が設計をしっかりしていたというのもありますが、自分が設計にまで意識が回るレベルまで成長したのかなぁと思ったりします。

後半は結構遊んでる感じがしますが一応STL再実装の課題終わらしたり、就活したり、別の課題やったりと遊びとコーディング両方できたと思います。

アニメとかゲームについてのセクションが明らかオタクのノリって感じですが、まぁいいでしょう。

3月は東京行ったりドライブしたりとお出かけも色々しました。普段は家に引きこもってコード書いてるんですけど、週1くらいでお出かけすると楽しいし、リフレッシュできてとても良いですね。

3月はとっても楽しかったです。4月は出会いと別れの季節らしいですが、自分は引き続き42Tokyoで学習をしていきます。

ではでは~👋👋

2022年2月振り返り

42Tokyo

先月に引き続きSTL再実装の課題をやってました。赤黒木に必要なメソッドやイテレータの昨日を追加し、 mapset を作りました。

今月で課題が終わればよかったのですが、いくつか抜けていたメソッドやtypedefがあったので再提出しなくちゃいけないことになりました。提出前の確認が甘かったですね。

提出前の確認って面倒くさいなぁって思うけれど、結局提出前にしっかり時間掛けて確認してから出した方が抜けが少なくて一発で課題通せる可能性が高まりそうです。

なんかTDDとかの文脈でよく語られる質とスピードみたいですね。質を落としてスピードを上げても超短期的には早くなったように見えるけど、実際は時間を掛けてしっかりと質を上げた方がスピードが早いみたいな。

Kotlin

インターンシップでKotlinを使うことになったのでKotlinとKotlinのWebフレームワークであるKtorを勉強してました。

Kotlinは昔Androidアプリ開発チュートリアルで触って以来触って無かったですがなかなかに良い言語ですね。綺麗な設計(Clean Architectureとかデザインパターン)ができるように言語が作られているような感じですし、実際のコードを見てもそんな感じでした。

買い物

UWQHDウルトラワイドモニターを買いました。めちゃくちゃ良いです。

自分のThinkpadでも問題なく画面出力でき、文字のサイズもちょうど良い感じで素晴らしいです。

jun-networks.hatenablog.com

1年前4Kモニタ買ったけど、自分のThinkpadでは4Kモニタを上手く使いこなせなかった...

よく4KとUWQHDどっちが良いのという話がありますが、個人的にはUWQHDの方が良いですね。

理由

  • コード書くなら複数ディスプレイより1枚の横長のディスプレイの方がエディタのウィンドウ1つで多くのファイルを編集できる
  • 4Kモニタは字がちっちゃい。どうせスケーリング150%か200%にするので意外と表示できる情報量が少ない。WQHDモニタ2枚とかの方が良いかも。

って感じです。

ただ、少し気になっているところもあって、ゲーミングモニタなので目に優しいモードがイマイチで少し目が疲れやすくなったかも?

ゲームとかアニメ

Inscryption ってゲームをやってました。なかなか今までにない感じのゲームで面白いですね。ただ、ちゃんとしたエンディングにたどり着けて無いっぽいので、クリアしたと思っていたけど実はクリアしていないらしい?

store.steampowered.com

あとウマ娘が1周年記念とか新シナリオとかで色々追加コンテンツが来てたので遊んでました。キタサンブラック来てくれました。可愛い。

完走した感想

2月はっっっっっっっっっや!一瞬で終わったんですけど。バグですか?

2月は単純に日数が少ないのと、2月後半あたりは生活リズムが終わってたので1日の体感時間が短くて余計に短く感じたかな。寝る前のスマホは駄目ですね。生活リズムが狂います。

ここに書いた以外にも就活とかもやってました。面接とか受けました。

STL再実装の課題は2月中に完了する予定だったのですが、実装漏れなどが見つかりもうちょっとだけ掛かりそうです。

3月は前半はインターンシップ、後半はSTL再実装の課題を提出したいと思います。それ以外は何しようかな...GoでWebサーバーでも書こうかな...

って感じで3月も頑張るぞー。えい、えい、むん!

2022年1月振り返り

42Tokyo

STLの再実装

去年の12月くらいからC++STLのコンテナ群を作る課題をやっています。

今は map の内部で使われているデータ構造の赤黒木を実装し終わり、その赤黒木に map で使うメソッドなどを実装しているところです。この課題も終わったら振り返り記事を書くと思います。

Mixi Git Challenge 番外編

2022年1月28日 に 「Mixi Git Challenge 番外編 Git Quiz」 がMixi協力の元42Tokyo向けに開催されたので参加しました。

このイベントでは Mixi が行っている Git Challenge という Git で発生した問題を解決するイベントの番外編として Git Quiz を行いました。Git Quiz では主に Git Challenge 本編で難易度が高くてボツになった問題が四択形式の問題として出題され、それに対してみんなで答えて、最後解説が入るといった内容でした。

クイズの内容としては Git の内部構造の知識を要求する問題が多く、とてもむずかしかったです。ただ、Git の内部構造やコミットなどののデータ構造、そしてそれらに起因して発生する問題や挙動について知れてとても勉強になりました。

具体的には以下のような記事を事前インプットとして読みました。

git-scm.com

また、スライドの方もブログにURLを載せても良いとのことなので以下が今回のイベントで使われたスライドです。

docs.google.com

このイベントでは GBAエミュレータ や Git などを自作されている @shumon_84 さんが講師として説明をしてくれました。大変わかり易く勉強になりました。

また、後半では Mixi の会社紹介と質疑応答のコーナーがあり、いくつか質問もさせていただきました。

以下に聞いた質問と答えを自分用のメモとして貼っておきます(自分が覚えている分)。

Webサービスアーキテクチャの設計(DBやキャッシュ)についてはどのように勉強すれば良いでしょうか」という質問に対しては、「基本的には書籍での勉強がおすすめ。サイトなどでも色々情報があるが、書籍のほうが周辺知識なども含め網羅的にまとめられている」とのことでした。

また、おすすめの書籍を聞いたところ以下のものを紹介していただきました。


GBA自作以外にもおすすめの自作〇〇などはありますか?」という質問の答えとして以下のようなものが上がりました。

私生活

放送大学 単位認定試験

2022年1月14日〜1月21日まで放送大学単位認定試験がありました。

jun-networks.hatenablog.com

放送大学通信制大学ということもあり基本的な科目は全て家から受講出来るんですが、モチベーションの維持が大変でした。(というかあまり上手く行かなかった)

キャンパスなどに行って仲間とかが出来たら良いのでしょうが、某感染症のせいであまりキャンパスでの学習は勧められていないので、この辺りのモチベーション管理に関しては難しい課題でした。

とりあえず受講科目数が多すぎたのと、来期は多分色々ライフイベントやら42Tokyoやらで忙しいと思うので受講はしないか、多くても1,2科目になりそうです。

就活

自分で探した企業とエージェントから紹介された企業を受けました。

42Tokyo でやったことが結構評価されて嬉しかったです。

面接のスケジュール管理とか面接の多さなどが大変ですが今のところなんとかなっています。

ちょっとしたTipsなんですが、たまにエントリーシートを書いている途中でタイムアウトで内容が吹っ飛ぶことがあったので、事前にローカルのテキストファイルに書いてから最後にコピペするようにしました。これで安心ですね。

It Takes Two

It Takes Two という2人用ゲームを弟とプレイしてクリアしました。

www.ea.com

控えめに言って神ゲーでした。美しくて細部まで作り込まれたグラフィック、雰囲気に合ったサウンドとBGM、ロードなどが存在しないかのような滑らかなシーン遷移、飽きが一切来ないほどの多彩なアトラクションとミニゲーム、詰まっても少し考えたり探索すれば先に進める絶妙な難易度、2人プレイという特性を最大限活かしたゲーム構成、と褒めるところしか見当たらないのですが、本当に良かったです。自分はあまりゲームを多くプレイするタイプの人間ではないのですが、このゲームは今までプレイしたゲームの中で最上位に位置するほど素晴らしいゲームでした。

2人プレイ専用という独特なゲームですが、この「2人プレイ専用」という特性を最大限活かした物凄いゲームなので是非機会があればやってみてください。(1人買えばもう1人もプレイできるらしいっすよ?)

アニメ

進撃の巨人 をファイナルシーズンが始まるとのことで今更ながら見始めたら面白すぎてNetflixで全話見てしまいました。いや〜面白い!毎週日曜日の放送が楽しみです。

買い物

HHKB を買いました。現在進行系でこの記事を書くのに使っていますが快適です。

jun-networks.hatenablog.com

他にはあまり買ってないので今月は少なかったですね。(先月 自作PC を組んだり、Steam のセールで買いまくったりしましたが...)

完走した感想

実は今年に入ってから句読点を全角にしました。気づきましたか?

前までは, こんな風に半角のカンマとピリオドを使っていました. しかし、最近他の日本語の記事を読んでいて、「普通に全角の句読点使うの読みやすいかもな」と思って全角にしてみました。しばらくこれで書いてみてようと思います。

また、最近夜に寝て朝に起きる健康的な生活が出来ているような気がします。これは意識的にリベンジ夜ふかしを辞めて、夜にやりたいと思ってもその場ではやらずに翌朝に持ち越すようにしたのが大きいと思います。実際この生活の方がよく集中出来ていると思うので今の所良い感じです。

news.yahoo.co.jp

あとは昼飯後の眠気に対してガッツリ布団で寝ずに軽く机の上で10分くらい寝るのが良いですね。ガッツリ布団で昼寝すると夜寝れないので。

この月末振り返り記事もいつまで続くかわからないですけど、あまり気張らず、続けることを重視して気軽にやっていきたいです。

放送大学2021年2期が終わった

初めに

2022年1月14日〜1月21日まで放送大学単位認定試験がありました。

今期は14科目を受講していましたが、42Tokyoやら就活やら車の免許合宿やらで結局あまりしっかり勉強できず、2022年に入ってから急いでやりました。正直もう少し受講科目数を減らせばよかったと思います。

結局自宅受験ということもあり、教科書を見ながらなんとか期限ギリギリに提出をしました。結果はまだ届いていないのでわからないですが、合格点(60点)を超えていると嬉しいです。

1度落ちても次の学期で再び単位認定試験を受けられますが、その次以降は再履修(1科目2単位 11000円)が必要なので単位を取っておきたいのです。

各科目の感想

受けた科目は以下の通りです。

初歩からの数学

中学〜高校までの基本的な数学を学べてよかったです。順列や組み合わせの説明がわかりやすかったです。三角関数の公式らへんも忘れていたので思い出せました。

演習初歩からの数学

「初歩からの数学」の演習です。

入門微分積分

難しかったです。高専時代に微分積分などはやっていましたが、知らない微積の問題がいくつも出てきてついていくのが大変でした。

演習微分積分

上記の演習です。練習問題に解説が付いているので教科書の章末問題を解くよりもわかりやすい気がします。

入門線型代数

線形代数は相変わらず計算が多かったです。個人的に線形代数はプログラミングと結びつけながら考えるのが好きなので「プログラミングのための線形代数」を読み直そうと思いました。

自然科学はじめの一歩

天文学、生物、物理学、化学、数学 と自然科学の全分野をその分野の担当の先生から大まかな内容を紹介してもらう授業。実験や取材が多くて面白かった。

初歩からの物理

実験が多くて面白かった。ただ、授業動画では実験がメインで計算や導出などはあまり行わないので教科書を見る必要がありそれが大変でした。

初歩からの化学

難しすぎた。自分は高校化学を殆ど習ったことが無いので全然わかりませんでした。履修登録するまえにもっと調べたほうが良いですね。

耳から学ぶ英語

面白い話が多くてよかったです。基本的には会話の内容を聞いてそれを耳だけで聞き取るための解説とかが日本語で入る形でした。日本語と英語が交互に来るで自分の脳が混乱しました。ストーリーの解説は良いのですが、自分は英文法とかは英語で勉強したので日本語の英文法の単語がわからなくて文法解説はよくわかりませんでした。

グローバル化時代の日本国憲法

とても面白かったです。こういう現代社会みたいな授業は中学の時は全くおもしろくなかった記憶があるのですが、今聞くと憲法や法律の成り立ち、海外から受けた影響や与えた影響、そしてそれが現代に繋がっているという感覚が面白かったです。ある程度年齢を重ねてから歴史や現代社会などを勉強すると自分の経験と繋がるのが良いのかもしれませんね。

情報・メディアと法

ラジオ授業で法律の名前が沢山出てきて眠くなりました。日本の情報通信技術に関連する法律、例えば著作権法意匠権、不正電磁的記録に関する罪や高度情報通信ネットワーク社会形成基本法などについて色々説明していました。個人的には Winny事件 や Coinhive事件、アラートループ事件 などの国家権力(警察)の情報通信技術に関する知識不足に起因する不当な身柄校則や取り調べ、逮捕などを知っているので法律が目指した理想と現実のギャップを感じました。

情報理論とデジタル表現

難しかったけど面白かったです。こういうガッツリ理論に寄った情報系の授業は受けたことがなかったので新鮮でした。前半の情報量やエントロピーなんかは全く知らなかったです。こんなんどこで使うねんとか思いながら情報量の講義とかを聞いてましたが中盤のネットワーク上でのデータ伝送でガッツリ出てきてスマンというお気持ちになりました。後半は画像や音声の圧縮と暗号化の話でした。画像や音声の圧縮は拡張子を知ってる程度の知識だったのでおおまかな圧縮手順などが知れて良かったです。個人的には実際にこれらの画像や音声圧縮を実装してみると面白そうだなと思いました。これらの圧縮アルゴリズムなどを考えた人は賢いなぁと思いました(小並感)。

計算の科学と手引き

前半は人間と数や計算の関わりや歴史について、中盤はPythonを用いた簡単なプログラミングとアルゴリズム、最後は論理などについて でした。個人的には知っている内容が多かったです。最後の論理のところは論理的思考というのをちゃんと定義した感じで面白かったです。

情報ネットワーク

TCP/IP について。基本的には TCP/IP とその周辺技術とかについてでした。既知の内容でしたが、うろ覚えだったので今回もう一度学習出来て良かったです。オンライン授業方式で音声付きスライドで講義を受ける形でしたが結構良かったです。

来期について

来期は授業を履修しないか、もしくは履修するとしても1、2科目だと思います。理由としては就活や42Tokyoでの学習など放送大学をやる余裕が恐らく無いからです。

また、現在は 自然と環境コース に属していますが、情報系の授業で面白そうなのが結構あるので 情報コース に変えようと思います。

とりあえず今期は初めての学期で多く授業を取りすぎてあまり楽しんで学習する余裕が無かったので来期以降は調子に乗ってあまり取りすぎないようにしていきたいですね。

HHKB Professional HYBRID Type-S を買った

HHKB Professional HYBRID Type-S 英語配列/墨 を買いました。

1週間くらい使ったので感想的なものを書いておく。

キーボード歴

キーボード歴としては、

色んなノートパソコンのキーボード5年くらい → Thinkpadのキーボード3年くらい → HHKB Professional Type-S 英語配列 2年くらい → HHKB Professional HYBRID Type-S 英語配列

って感じです。

前は会社支給の HHKB Professional Type-S を2年くらい使ってました。ちょうど以下の記事を書いた後くらいから使い始めました。

jun-networks.hatenablog.com

で、そのキーボードを会社に返却したので自分用を買ったという感じです。

1週間使った感想

めっちゃ良いです。HHKBの打ち心地やキー配置が良いのは知っていましたが、相変わらず良いです。

HHKB Professional Type-S との違いですが、個人的には底面のラバーが改善され、入力した際に机に響かなくなっていて打ち心地と静音性が上がった様に思います。あと、今回色は墨を選んだのですが、カッコよくてとても良いです。

また、有線とBluetooth両方対応しているのも嬉しいですね。自分のメインマシンはLinuxBluetoothがあまり安定しないイメージがあるので、有線で繋いでいますが、iPadなどで文字入力作業をする場合なんかにはBluetoothで繋げられるのでとても良いですね。

こんな感じでHHKB, iPad, iSHを使えば開発も出来なくは無さそうです。

iSH Shell

iSH Shell

  • Theodore Dubois
  • Developer Tools
  • Free
apps.apple.com

自分は前HHKBを使っていた時に買ったパームレストがあるのでそれを使っていますが、もし新規にHHKBを買うならパームレストを買った方が良いと思います。HHKB自体にある程度高さがあるのでパームレストが無いと手首が痛くなります。また、個人的にはHHKB公式のパームレストが高さがちょうど良く触り心地も良いのでおすすめです。

www.pfu.fujitsu.com

自分は昔Amazonで買った安い布製のパームレストを使っていましたが、汗とかが染み込んで凄く汚くなって最後らへんは手が痒くなったりしたので公式パームレストじゃないにしても木製のものをおすすめします。

逆にちょっとだけ不満点があるとするならば、HHKB Professional Type-S で使えていた音量上げ下げとかのキーの挙動が不安定になっていることですね。自分はDIPスイッチの設定をMacモードで使っており、これによりUbuntuであればMacと同じ様にFnキーと他のキーを組み合わせて音量調整やマイクのミュートなどが出来ていました。しかし、今回のモデルではこの動作が少し不安定なように思えます。具体的には音量調整は機能したりしなかったりといった感じで、マイクミュートに関してはなぜか別のキーが割り当てられています。前のモデルでは上手く動いていたのですが、今回のモデルは今の所このあたりの機能は安定しないです。もしかしたら何か別途Ubuntu側で設定する必要があるのかも知れません。まぁ、今の所さほど困ってはいないので良いのですが。

てな感じで新しく買ったHHKBが良いというお話でした。自分のように1日の大半をモニター前でキーボックスを叩いているような人ならばキーボードはケチらず自分に合った良いものを使うと良いと思います。

ではでは〜〜👋👋

AtCoder緑になりました

5ヶ月くらい前ですが, 2021年7月31日にAtCoder緑になったのでその振り返り記事を今更ながら書きます.

f:id:JUN_NETWORKS:20211231232320p:plain
レーティング変動

自分のスペック

  • 高校数学は多少やったけど大体忘れてる
  • 42Tokyoでプログラミング勉強してる
  • 数学オリンピックとかとは無縁の人間
  • 言語はPython

やったこと

  • 毎朝典型90の問題を1問解く
  • 新しく知ったアルゴリズムやデータ構造などは手元にメモしてコピペで使えるようにライブラリ化する
  • ABCにはなるべく毎回参加する

毎朝典型90の問題を1問解く

これは書いてある通りで, 毎朝典型90の問題を解きました. ★2から★4の問題までを一日1問ずつやりました. これのおかげでABCで頻出のアルゴリズムや考え方を知ることが出来ました.

自分は競プロの精進をめっちゃやってるような人でも無いので, そもそも手札(選択肢)が無いので, 手札を増やすという意味でも典型90は素晴らしい教材だと思います.

今回緑レートに達成できたのは典型90のおかげだと思います.

新しく知ったアルゴリズムやデータ構造などは手元にメモしてコピペで使えるようにライブラリ化する

これはかなり役に立っています.

UnionFindやセグメント木, BFS, DFS, ダイクストラ など新たに知ったアルゴリズムやデータ構造はある程度汎用的に使えるようにライブラリ化してローカルのマークダウンファイルにアルゴリズムの説明と共に書いています.

ABCにはなるべく毎回参加する

ABCに参加して解けた問題, 解けなかった問題を振り返ると, 「成長したな」と思うこともあれば, 「もっと頑張らねば」と思うこともあり, ちょっと無理してでも毎回出るのはモチベーション的にも大事だと思います.

使ったアルゴリズムやデータ構造

自分の手元にある 競プロメモ.md の目次をコピペします.

- 競プロで使えるコード, テクニック集
    - 計算量
        - Python の処理速度の目安
        - リスト
        - collections.deque
        - set
        - 辞書
    - 設定
        - 入力高速化
        - 再帰呼び出し上限
    - 注意すべき点
        - float('inf') の生成は整数リテラルとは違い生成に時間がかかる
    - プロファイラ
    - データ構造
        - デキュー
        - 辞書型
            - defaultdict
            - Counter
        - UnionFind
        - Priority Queue
            - 使い方
            - 最大値の取り出し
        - セグメント木 (RMQ)
            - 遅延評価セグメント木 (RUQ)
            - 遅延評価セグメント木 (RAQ)
    - グラフ
        - 用語
        - グラフの表しかた
            - 隣接リスト (Adjacency list)
            - 隣接行列 (Adjacency matrix)
        - 探索
            - 幅優先探索 (BFS)
                - 応用
                    - 01BFS
            - 深さ優先探索 (DFS)
        - 最短経路探索 (重み付きグラフ)
            - ダイクストラ法
                - 特徴
                - 実装
            - ワーシャルフロイド法
                - 特徴
                - 実装
            - ベルマンフォード法
                - 特徴
                - アルゴリズム
            - ジョンソン法
        - 強連結成分分解 (SCC)
        - 辺に対する周遊性
            - 用語
            - オイラーグラフの判定
            - オイラー回路の求め方
        - 巡回セールスマン問題 (TSP)
        - 木の直径
        - 最小全域木
            - クラスカルのアルゴリズム
            - プリムのアルゴリズム
        - 最近共通祖先(LCA)
        - 木の表現方法
            - 左子右兄弟表現
            - 二分木
    - ソート
        - 複数のキーでソート
        - 複数のキー(1 つはリバース)
        - 比較関数を基にソート
        - トポロジカルソート
    - 探索
        - 二分探索
            - ライブラリを使う場合
        - bit 全探索
    - 文字
        - 全アルファベットのリスト
    - 数学
        - 素数で割った余りを求めよ
            - 割り算の余り
        - 倍数の性質
        - 総和
        - 順列・組み合わせ
        - 繰り返し二乗法(二分累乗法) (a^b % c を高速に求める)
        - 累積和
        - いもす法 (多次元対応累積和的なやつ)
        - 2 つの数の最大公約数 (GCD)
        - 最小公倍数 (LCM)
        - 素数判定
        - 素数列挙
        - 素因数分解
        - 約数取得
        - 平方数の判定

こんなに無くても緑コーダーになれるかもしれないですが, ある程度典型的な使い方を知っておくだけでもコンテスト中の選択肢が増えるので良いと思います.

その他

言語はPythonを使っています. 最初はC++とかを使おうかとも思ったのですが, 自分が最も慣れている言語がPythonだったのでPythonを使っています. 勿論提出時はPyPy3です.

完走した感想

緑レート達成した時に記事書けばよかったなーとおもってたんですけど, 友人と喋っていたら, 「別に今から書いてもよくね?」と言われ, 確かに〜 って感じだったので書きました.

AtCoder始めて3年経っての緑レートってことでとても嬉しいです. (まぁ1年単位で空白の期間があるわけですが)

自分は競プロ200問解くとか,C問題埋めとかは特にせずに緑コーダーになったわけですが, これは完全に典型90のおかげだと思います.

余談ですが, この記事を2021年中に公開しようと思って書いていたらいつの間にか日付が変わって2022年になっていました. あけましておめでとうございます.

ではでは〜〜👋👋