Konbuに最近勉強した科目を選択できる機能を追加した

Konbuに新機能を追加した Konbuという勉強時間を記録するWebアプリを運営している(ちなみにユーザーは自分ひとりだけである)。 このアプリには勉強時間を記録する際に勉強した科目を選択するためのメニューウィンドウが存在する。 上の画像を見ていただければ分かるように、メニューウィンドウ内の科目はこれまでは50音順に並べられていた。 ただKonbuをドッグフーディングする中で、最近勉強した科目5つくらいが上位に表示される方が便利だなと思うようになってきた。 というのも、毎日ほぼ同じ科目を勉強しているだけなのに、毎回その科目をウィンドウ内から探すのが地味に面倒だなと感じ始めていたからだ。 キーワード検索で科目を絞り込む機能は搭載しているので、目当ての科目を探すこと自体は非常に簡単に行える設計になっているが、そんな簡単な作業も毎日のこととなると地味にダルい。 というわけで、直近で勉強した科目上位5つまでをメニューウィンドウ内の上部に表示する機能を追加することにした。 自画自賛だが、結構使いやすくなったと思う。 学生等は勉強する科目数が社会人と比較すると多いので、上位5件ではなく上位10件くらい表示した方がいいのかもしれないが、まあそういうのはユーザー数が増えてから考えればいいかな。 まとめ ドッグフーディング大事。

2026-03-29

デフォルト原理主義

デフォルト原理主義 自分はデフォルト原理主義者である。 デフォルト原理主義とは、PCやアプリの設定を極力いじらず、デフォルトの状態で使うことを至高とする考え方である。 これからデフォルト原理主義の良さを紹介する。 1. 結局デフォルトが最適解であることが多い ソフトウェアの設定について一番時間をかけて考えているのは誰なのか? 答えは当然ソフトウェアを開発している人間だ。 基本的には利用者よりも開発者の方がソフトウェアに対して理解が深いはずだし、悩んでいる時間も長いはずだ。 必然的にデフォルトの設定は洗練されていて最適解である可能性が高い。 新しいソフトウェアを使い始めた時はなんとなく使いにくいと感じる瞬間もあるかもしれないが、それは一時の慣れの問題に過ぎないこともしばしばだ。 個人的な経験則ではどんなソフトウェアも使っていくうちに手に馴染む。 2. 設定をいじるのが面倒 そもそも設定をいじるのが面倒だ。 デバイスを複数台持っている場合には各デバイスごとに設定をいじる必要があるし、ソフトウェアのアップデートで設定がリセットされることもある。 エンジニアになりたての頃は設定をいじることすら楽しかった記憶があるが、今では設定を変更する方法を調べるためにGoogleを開くことでさえ面倒だ。 以前、ある料理人がYouTubeで「休みの日はお湯を沸かすのすら面倒くさい」と言っていたのを見て、どの業界も似たようなもんだなと思った。 3. そもそも設定をいじれない環境がある これは自分がSIerで働いているからかもしれないが、そもそも設定をいじれない環境があったりする。 毎朝のセキュリティチェックでレジストリが変更されていたりすると怒られたりするのだ。 会社のPCと自宅のPCで利用しているソフトウェア自体は一緒なのに設定が違ったりするとコンテキストスイッチが大変だ。 ならば自宅のPCの方を会社のPCと同じ設定にすればいいのだ。すなわちそれがデフォルトだ。 まとめ 今朝起きてVSCodeを開いたら配色が変わっていた。 もちろん元の配色に戻す方法は検索しなかった。 経験でそのうち慣れるだろうと分かっていたからだ。 そして今VSCodeを使ってこのブログを書いているが、正直5分くらいで慣れたな。

2026-03-28

VercelのリージョンはデフォルトだとワシントンDC

概要 NBAMashというサービスをVercelでホスティングしているのだが、最近レスポンスが遅いなと感じていた。 色々と調査したところ、VercelのリージョンがデフォルトだとワシントンDCになっていることが要因の1つであることが分かった。 そこで今回はVercelのリージョンを変更する方法について紹介する。 方法 リージョンを変更したいプロジェクトを開く 上部のバーから「Settings」を選択する 左のサイドバーから「Functions」を選択する Function RegionsのAsia Pacificのアコーディオンメニューを開いてTokyoまたはOsakaにチェックをして、「Save」を押す ちなみにHobbyプランの場合はリージョンを1つしか選択できないのでデフォルトの「North America (Washington, D.C.)」のチェックを外す必要がある。 Saveを押すと右下にダイアログが出るのでそこから再デプロイをおこなう(手動で再デプロイでもOK) 結果 リージョンを変更した結果1リクエストのレスポンス時間が約30~40msに改善した。 ちなみに改善前のスクショを撮り忘れてしまったが1s以上かかっていた。

2026-01-02

2025年の振り返り

概要 2025年ももうすぐ終わりなので、今年1年を振り返ってみる。 仕事 転職をした。 前職は社員数4人の超小さな会社で、良くも悪くもヌルい環境だった。 納期という概念は事実上存在しなかったし、ぶっちゃけ仕事をしなくても怒られない環境だった(学生の頃はそんな企業が存在するとは思いもしなかった)。 ホワイトといえばホワイトなのだが、張り合いはなかった。 そんな中で「このままだとエンジニアとして成長できないんじゃないか?」とか「先輩たち全然仕事していないけど俺だけ頑張っても意味ないよな…」とか色々と考え込んでしまった。 環境を変えられないか自分なりには色々模索した(社長と話したり、先輩社員と話したりした)のだが、変化の兆しが見えなかったので、そこで転職を決意した。 そして10ヶ月ほどのフリーランス期間を挟んだ後に無事に現在の会社に転職することができた。 転職先は前職とは打って変わっての大企業だ。 納期は厳しいし、仕事量も多い。体力的には結構しんどい。 だけど、同時に成長実感もめちゃくちゃある。 技術的にやっていることが前職より高度だし、周囲に優秀なエンジニアがたくさんいる。 今のところめちゃくちゃ楽しい。 自分的にはこちらの方が合っていたんだろうなと思う。 今年リリースしたサービス konbuという学習時間を記録するサービスをリリースした。 詳しいことは勉強時間を記録するWebアプリを開発したという記事に書いたのでそちらを参照してほしい。 ちなみに今DBを叩いてみたらユーザー数は自分一人だけだった。 とても悲しいが自分自身が使いまくっているのでセーフということにしておく。 今年読んだ本 これ以上は特に書くこともないので、今年読んだ本を列挙して終わりにする。 #PR プロになるJava-仕事で必要なプログラミングの知識がゼロから身につく最高の指南書 楽天 【書評】プロになるJava #PR 体系的に学ぶ 安全なWebアプリケーションの作り方 第2版 楽天 【書評】体系的に学ぶ 安全なWebアプリケーションの作り方 第2版 #PR プロになるためのSpring入門 - ゼロからの開発力養成講座 楽天 【書評】プロになるためのSpring入門 #PR Java言語で学ぶデザインパターン入門 第3版 楽天 【書評】Java言語で学ぶデザインパターン入門 第3版 #PR パスキーのすべて ── 導入・UX設計・実装 楽天 【書評】パスキーのすべて #PR ポストモーテム みずほ銀行システム障害 事後検証報告 楽天 【書評】ポストモーテム みずほ銀行システム障害 事後検証報告 まとめ 今年読んだ本は実務に直結するものばかりだな。

2025-12-31

信じる力

信じる力 小学生の時、『金色のガッシュベル!! 友情の電撃 ドリームタッグトーナメント』というゲームにハマっていた。 このゲームにはガッシュコレクションという収集要素があり、特定のミッションをクリアしていくたびにコレクションが解放されていくというシステムになっていた。 コレクションは全部で100個あり、そのうち99個までは簡単に解放できたが、1つだけどうしても解放できないコレクションがあった。 その最後に残ったコレクションの解放条件とは、とあるミニゲームでひたすら連打して50000点を超えろというものだった。 この条件が非常に難しく、ただ連打するだけなのにも関わらず、何度挑戦しても50000点を超えることができなかった。 「もうちょっとで50000点超えれそうだったのに〜」という感じにすらならなかった。全然余裕で50000点に届かないのだ。 工夫を凝らして攻略しようと思っても、なにせ連打するだけなので工夫のしようがない。 爪を立ててゲームボーイアドバンスのABボタンを擦るように連打しては親指の皮膚を無駄に消耗するだけだった。 あまりにもクリアできないので、なにか裏技みたいなものがないとクリアできないんじゃないかと途中から疑心暗鬼になり始めた。 結局、コレクションを全部集めることはできず、しばらくの間そのゲームは投げていた。 ある日、友人が家に遊びに来たので「どうしてもこのミニゲームがクリアできないんだよね」となんとはなしに話しかけてみた。 すると友人は「いや、俺これ行けると思うけどな」と返してきた。 内心、絶対ムリムリと思っていたのが、とりあえず友人に挑戦させてみることにした。 すると、友人はあっさりとそのミニゲームをクリアしてしまった。 友人が一体どうやってこのミニゲームをクリアしたのかというと、なんてことはない、ただただ本気で連打しただけだった。 自分と同じように爪を立てて擦るようにABボタンを連打しているだけだった。 友人が正攻法であっさりとクリアする様子を見て、自分でももう一度そのミニゲームに挑戦してみた。 すると不思議なことに、あれだけ苦しんだミッションをあっさりとクリアできてしまった。 今思い返すと、当時の自分は「裏技があるんじゃないか?」「擦って連打する以外のもっと良いやり方があるんじゃないか?」のような疑念がある状態でミニゲームをプレイしていて、無意識に連打に集中できていなかったのだと思う。 このときは運良く連打に自信のある友人が目の前でクリアしてくれたおかげで、そのような疑念を打ち消すことができ、「ただ純粋に連打すれば良い」という指針を自分の中に立てることができた。 でもこのときはたまたま運が良かっただけで、あらゆる事象において誰かが先人として道を切り開いてくれるとは限らないだろう。 自分達が選んだ方針が正解なのかどうか分からない中でも、「きっとこの方針は正しい」と盲信して全力で取り組むことで開ける突破口というのもこの世には存在しているんだろうな。 まとめ コレクションの「かいほう」って「解放」と「開放」どっちが正しいの?

2025-11-29

フロントエンド技術の流行り廃りが激しい理由って…

フロントエンド技術の流行り廃りが激しい理由ってフロントエンドのほうがバックエンドよりも難しいからだよな。 バックエンドってイベント(リクエスト)とその結果(レスポンス)は一箇所に決まっているから、素直なコードになりやすい。 でもフロントエンドってユーザーの操作という複数種類かつ複数回のアクションがあって、それを正確に矛盾なく画面に反映させないといけない。 根本的にフロントエンドの方が処理がややこしいから、なんとか現状の問題を解決するために新しい技術が次々と生まれては消えていくんだろうな。 SPAを捨てたら複雑さはかなり減ると思うけど、それだとユーザー体験が犠牲になる…。難しい問題ですな…。 学生の時にIT企業でインターンを始めたときは、自分の書いたコードが分かりやすく即座に画面に反映されるフロントエンドの方が開発していて楽しいと思っていたけど、最近は考えること多くてダルいなーって気持ちのほうが強くなりつつある。 どこかの天才がフロントエンドの枯れた技術を作ってくれるまで、ほどほどに流行を追いかける感じでやっていこう。

2025-11-03

【書評】ポストモーテム みずほ銀行システム障害 事後検証報告

概要 仕事で金融系のシステムに関わることになったが金融系の知識などまったくない。でも教科書的な書籍を読んで1から体系的に金融のことを勉強するのはダルい。 そんなおりに本書を発見した。 「これ読んだらシステム開発について理解を深めながら自然と金融の知識も学ぶことが出来て一石二鳥じゃん!」と思い即購入。 #PR ポストモーテム みずほ銀行システム障害 事後検証報告 楽天 感想 正直、途中で飽きた。 基本的には実際にあった出来事を淡々と追っていくスタイルの書籍なので、物語性は薄めで読み物としては面白さに欠ける。まあ、ノンフィクションって普通そういうもんなんだろうけど。 なんとなくシステム障害の裏には人間ドラマのようなものがあるんじゃないかと思いこんでいたが、実際には事前の準備の不足やビジネス層と技術層のコミュニケーション不足といった至って普通の問題が積み重なって起きた障害だった。 しかし、世の中で生じるシステム障害というのは大抵こんなもんなのかもしれない。明日は我が身ですな。 個人的には巻末にあるCIOのインタビュー記事が一番血肉の通った内容で面白かった。 あと「見逃し三振はOKだが、空振り三振はNG」(アラートをあげなくて良い場面でアラートをあげるのはOKだが、アラートをあげるべき場面でアラートをあげないのはNGの意)という標語は分かりやすくて良いなと思った。似たようなことは現場でもよく言われるが、こういう分かりやすい標語で言語化されると実践しやすい。 ちなみに本書は金融の知識とITの知識の両方がないと割と理解が難しいので専門外の方は安易に手を出さないことをおすすめする。

2025-10-26

リモートワーク推進派のポジショントークだなと思う発言2選

概要 まず始めに言っておくが、リモートワークが悪だとは全く思っていない。 子育てや介護といったどうしても出社できない事情がある人にとって、リモートワークは働き方の多様性を広げる素晴らしい制度だと思うし、仮にそういう特殊な理由がなく「満員電車に乗りたくないのでリモートワークをしたい」等の主張も全然ありだと個人的には思っている。 ただ、リモートワークの利便性を享受するならリモートワークによって生じる弊害には全力で対処すべきだと思うし、極論リモートワークによってパフォーマンスが下がったのなら評価にバツがつくことは甘んじて受け入れるべきだと思っている。大いなる力には大いなる責任が伴うというやつだ。 昨今のSNSを見ているとリモートワークの自由さだけを享受して、その自由さの裏にある責任からは逃れようとするポジショントークがあまりに多いと感じる。 こういったポジショントークを目にすると、「ああ、この人はただサボりたいだけなんだな」と正直思ってしまう。 今回はそういった類の発言を2つ紹介したい。 発言1. リモートワークでサボるやつは出社でもサボる 要するにリモートワークでサボるような人間はどうせ出社してもサボっているんだから、リモートワークを推進したところでサボりは増えないという主張だ。 これは本当におかしい主張だと思う。 出社で30%サボる人がリモートワークでは70%サボるなんてこと全然あり得る話で、それはリモートワークによってサボりが増えたと同義だろう。 サボる・サボらないというのは0か100かみたいな話ではなくグラデーションの話なのだ。 アン・ミカも「サボりって200種類あんねん」と言っていた。 すこし考えたら誰でもおかしいと分かる詭弁だと思うのだが、SNSではこういう類の発言をよく見るしかなり支持もされている。 発言2. 出社すると話しかけられて効率が悪い 要するに出社すると人から質問とか相談をされて業務が中断されるから、リモートワークの方が効率が良いという主張だ。 これはマクロな目線で見たら事実だと思う。仕事が中断されないほうが効率が良いに決まっている。 ただ、それによって話しかけた側は仕事を進めるためのしかるべき情報を得られる訳で、全体で見たときには効率が上がっているということがほとんどなんじゃないだろうか。 知りたい情報を得られずにタスクが完全に止まってしまう人間が存在している方がよっぽど効率が悪いだろう。 この発言はあまりにも視点が自分本位すぎるし、部分最適に執着しすぎていると感じる。 仮に雑談が多くて仕事が中断されるとかなら、問題の本質は出社ではなくその会社の文化にあるだろう。 まとめ 普通こういうのって無理やりひねり出してでも3選にするよな。

2025-10-12

【書評】パスキーのすべて

概要 パスキーのことを知りたいと思って購入。 #PR パスキーのすべて ── 導入・UX設計・実装 楽天 感想 良い点 まず、内容がわかりやすい。 難しい説明を極力使わずに内容をかみ砕いて説明してくれている。 ユースケースや実装例も豊富で、巷で見かけるパスキーのユースケースは一通り網羅されていると思う。 ユーザーがパスキーを紛失したときの対処法など、実務で考慮すべきポイントもしっかりと押さえられている。 第8章ではやや専門的な内容も扱っており、パスキーを深堀りしたい読者にも満足できる内容になっている。 全体的に丁寧で自分のような初心者にはおすすめの一冊だと思う。 微妙な点1. 内容が不足している部分がある 自分は実務でパスキーを実装するにあたって本書を購入したのだが、実務ではしばしば本書に書かれていない知識を必要とする場面があった。 例えばapple-app-site-associationやassetlinks.jsonについては本書では触れられていないが、実務でモバイルアプリにパスキーを組み込もうと思ったらほぼ100%知っておかなければならない。 他にもブラウザでパスキーの動作確認をする方法なども本書では解説されていない。 ローカルでパスキーの動作確認をするときにはRP IDをlocalhostにしないといけないとか、デベロッパーツールから仮想認証機を有効化しないといけないとか、意外と罠が多い。 初心者は絶対引っかかるので(自分は引っかかった)、そういう部分の解説がもう少し豊富だったら良かったかなと思う。 微妙な点2. 索引が弱い 例えばclientDataJSONについて索引を引こうとして「C」のページを引いても、なぜか引っかからなかった。 結論から言うと以下のような索引になっていた。 【A】 AuthenticatorAttestationResponse … 129 attestationObject … 130 clientDataJSON … 130 clientDataJSONを引くために、AuthenticatorAttestationResponseを引く人なんているんだろうか? 単純な疑問なのだが、以下のような索引では駄目なんだろうか?行数は変わらない訳だし。 【A】 AuthenticatorAttestationResponse … 129 attestationObject … 130 【C】 clientDataJSON … 130 前者のほうが構造化されていて美しいという感覚は分かるが、別に索引が構造化されている必要は無い気がする。 出版に関する知識が皆無なので、もしかしたらこれは素人の意見なのかもしれない。 でも実際に業務で索引を引こうとして困ったのである。仮に出版業界ではこれが正しいのだとしても、自分は間違っていると思う。 総評 丁寧な内容で分かりやすい。 本書を読んで「全然意味がわからん」みたいになる人はほぼいないと思う。 一方で一部内容が不足している部分もありそうなので、適宜ネットで情報を補完しながら読むのがおすすめかなと思う。

2025-10-05

正直USキーボードの良さが分かっていない

概要 SNSを見ているとエンジニアの世界ではUSキーボードが異様に称賛されているように感じる。 自分自身は大学3年生まではJISキーボードを使っていて、研究室&1社目&2社目では支給されたUSキーボードを使っている。 どちらのキーボードも使った結果、JISキーボードの方が使いやすいと感じている。 この記事ではその理由を述べていく。 よく語られるUSキーボードの長所に対する疑問 まずは世間でよく語られるUSキーボードの長所に対する疑問を述べていく。 1. ショートカットキーが使いやすい 感じたことがない。 むしろ、後述する「かな・英数変換」のショートカットキーはとても使いにくいと感じる。 2. ホームポジションが崩れにくい 感じたことがない。 むしろ、後述する「かな・英数変換」で毎回ホームポジションが崩れる。 3. 表記がシンプルで見やすい キーボードの表記を気にしたことがない。 ただ、初学者にとっては確かに見やすいのかもしれない。 4. キーの配置が論理的で使いやすい キーの配置が論理的というのはその通りだと思う。 例えばJISキーボードでは「」は横並びで{}は縦並びだったりするが、USキーボードではどちらも横並びになっている。 ただ、キーの配置が論理的であることがメリットだとは個人的には思わない。 なぜなら我々は論理的に思考しながらキーを入力しているわけではなく、手癖でキーを入力しているからだ。 キー入力しているときに「{}は横並びだなー」なんて考えているやつはいないだろう。 もし論理的に考えながらキー入力をしているなら、研究室に入って初めてUSキーボードを使ったときにミスタイプしまくった思い出と整合性がつかない。 確かに初学者なら論理的な配置の方が覚えやすいというのはあるのかもしれないが、慣れてしまえばどちらでも同じだと思う。 USキーボードの悪いところ 1. かな入力と英数入力の切り替えが不便 正直この欠点で全ての長所は吹き飛ぶのではないかと思う。 例えばWindowsのUSキーボードだとCtrl + `というショートカットでかな入力モードと英数入力モードの切替ができるのだが、2つのキーの配置が遠すぎてめちゃくちゃ指がスカってしまう。 世間でよく語られている「ショートカットキーが使いやすい」や「ホームポジションが崩れにくい」といったUSキーボードの長所が仮に事実だったとしても、このCtrl + `という使用頻度S級にも関わらず超絶押しにくいショートカットが全てを破壊してしまう。 ちなみに、Macの^ + SpaceはCtrl + `よりはかなり押しやすいが、それでもたまにスカってしまう。 もう一つ大変なのは、Ctrl + `に冪等性がないということだ。 JISキーボードでかな入力をしたいときには、現在がどちらのモードであるかに関わらずかなキーを押しておけば良いのだが、USキーボードだと既にかな入力モードのときにCtrl + `を押してしまうと英数入力モードに切り替わってしまう。 したがってUSキーボードを使う場合は、現在のモードを常に記憶しておくか、モードの切替をする前にタスクバーを確認するという癖をつける必要がある。 これらはJISキーボードを使用しているときには意識する必要がないことだ。 USキーボードのこれらの欠点に対して、「レジストリをイジったり、『⌘英かな』のようなツールを使ってキー配置を新たに割り当てればいいじゃないか」という反論があるかもしれない。 ただ、セキュリティの要件の厳しいプロジェクトだと、レジストリをイジったり承認の無いツールを導入することができなかったりすることも多い。 そもそも、キー配置を割り当て直すことを良しとするなら、JISキーボードをUSキーボードのキー配列に変更することもOKになってしまうわけで、反論として成立しているかは微妙なところだ。 まとめ ぶっちゃけ、カッコつけでUSキーボードが良いと言っているエンジニアも多いんじゃないだろうか? 少しでも日本語を入力する機会がある人にとってはJISキーボードの方が楽なんじゃないだろうか?

2025-06-22