きままに記録箱

フロントエンドたまに他のはなし

今年買ったり読んで良かったもの in 2021と今後のブログ方向性について

皆さんお久しぶりです。
前回の記事(node-sass記事)から気がついたら、なんと8ヶ月近く経ってしまいました。

仕事の方はというと、外部の仕事なので全然ここには展開できないのですが、Vue(TypeScript/時々バニラJavaScript)をゴリゴリ書きつつフロント全般を任されるようになるくらいには成長できたかなって感じです。ただ仕様の理解をするとき、バックエンドやインフラ周りが本当にわからなさすぎて、理解に困ってしまうことがよくあるので来年はその辺を克服していきたいところです。

またプライベートでは、はてブロとは別で始めたZennでNuxt3記事投稿してみたら80いいねに到達したり、初めて社外のアドベントカレンダーに参加したり、リファクタの実践がてら知人のリポジトリで何度かPRしたり、英語の勉強を再開したりで色々充実していたかなと思います。

でこっからが本題。

今後のブログの方向性

放置気味だった本ブログですが、今後はぼちぼち読書メモ的な記事を公開していこうかなと思います。対象となる本ですが、まずはプログラマー向けだけど、たまにコードが出てくるくらいなもの限定にしておこうかなと思います。直近で出そうと思っているのは「達人プログラマー」かな。

これまで通り、今年の抱負と買ってよかったものシリーズは続ける予定です。後は直近で読んだ本一覧とか、読んだ記事の話もしてみたいところではあります(業務周りの話も本当は無茶苦茶したいですが、、、)。

なお技術周りは基本ZennやGitHubでやっていくのでよろしくね。

方向性についてはそんなところですかね。

今年買ったり読んで良かったもの in 2021

趣味部門

MacBook Pro (13インチ Apple M1 2020モデル)

メモリは8GBのまま、ストレージは500GBに上げてもらった。 去年言っていた通り、しっかり購入しました。これを購入した2ヶ月後くらいにM1 Maxモデルが発表されましたが、普通のWebプログラミングをするくらいならこれで十分だと思います(アップグレードなしでも23万かかるなら、本モデルのストレージを増やして、Apple Careもつけた方が絶対いい)。

やっぱりフロントエンド開発はMacが一番ですわ。。。

Keychron K2 Wireless Mechanical Keyboard

Keychron K2 Wireless Mechanical Keyboard (Version 2)www.keychron.com

海外製なのでUS配列、軸は赤軸にした。Macとの相性が良すぎて、ゲーミング系を除けば、Keychron以外でもう買えないかもしれないくらい好きなキーボードになってしまいました。近々仕事用にKeycapsセットと一緒にもう一台購入予定。

海外のYouTuberが紹介していたのを見て、一目惚れし公式ストアから直接購入。海外通販の利用は初めてでしたが、日本のPaypalも使えるし、Keychronのサービス自体しっかりした作りになっているので問題なく買えました。

日本のAmazonには売ってないですが、最近Kopek Japanというサイトで日本語配列/US配列が買えるようになったみたいです。ただ正直公式で買うより割高になるので、海外通販抵抗ない&US配列でいいなら公式で買ったほうがいいかな。

Keychron K2 ワイヤレス・メカニカルキーボードsuperkopek.jp

PS5

(どうせ売ってないのでAmazonのリンクは貼らない)

なんと手に入れることが出来ました!!店名は伏せますが、たまたまやっていた抽選販売に応募してみたところ、諦めかけていた3ヶ月後くらいに突然当選の電話がかかってきたときは本当にびっくりしました。あれほど店員さんに感謝することはもう人生でないかも。

仕事の疲れや勉強に時間を取られたりで殆どゲーム出来てませんですが、言葉での表し方がわからないのでもう触ってくれと言わんばかりのレベルで本当にすごいゲーム機です(不満はトロフィー音変わったくらい)。

とりあえず「Marvel's Spider-Man: Miles Morales」はクリアした。前作と比べたらやっぱりボリューム少なかったけど、しっかり歯ごたえもあって楽しかったです。再来年出るらしい本編の2も楽しみ。

来年はホライゾン続編が出るの確定してるし、ホグワーツレガシーも楽しみだし、(もう発売されてるけど)かなり評判のいいらしい「ラチェット&クランク パラレル・トラブル」もやりたいところ。

来年はプログラミングの勉強はもう少し落として、英語の勉強がてらたくさんゲームしたいところです。あー11月に買って未開封のままのポケモンもやらなな。。。

本部門

ドメイン駆動設計入門 ボトムアップでわかる!ドメイン駆動設計の基本

業務で色々設計思想に考える機会が増え、ドメイン駆動設計(以下DDD)とかクリーンアーキテクチャとか学ばなあかんなぁって思って、勧められたのがこの本です。DDD自体はバックエンド寄りな設計思想ですが、コードにどんな仕様かを語らせることの重要性、実際の利用者やお客さんを巻き込んだ形でエンジニア内でとどまらずドメイン(機能の領域)を磨き上げていく話など、まあまあでかい規模の案件に関わっている自分には楽しく読み進めることが出来ました。本で出てきた内容を仕事でも生かしていこうって読んでたずっと考えていた気がします。時間かけてじっくり楽しく読めた本は久しぶりでした。またかなり平易な文章でとてもわかりやすかったです。  サンプルコードがサーバーサイド言語のC#で、生のTypeScriptだけだと厳しいコードも載っているので来年辺りPython(FastAPI)やTypeScript(Nest.js)辺りでもう一週したいところ。なおクリーンアーキテクチャ本は来年早々購入する予定。

リファクタリング 既存のコードを安全に改善する(第2版)

まだ読んでいる途中ですが(半分いくかいかないくらい)、リファクタリングの手法がとても勉強になっています。本の最初で本書はカタログですと書かれているので、仕事ですぐ使えそうな手法を先にしっかり読み込んでおいて、後は辞書的で活用していこうかなと思っています。リーダブルコードと組み合わせて読むとさらに良いプログラマーになれそうな予感がしています。

TypeScript(Deno)でコードを写経しているのですが、DenoはデフォルトでLintやテストツールが付属しているので本当に便利(importの仕方はちょっと慣れいるけど)。文中でJestこそ出て来ませんが、Mochaが出てくるのでこのテストツールの存在は非常に助かっている。beforeEach/beforeAllに該当するものを公式で対応してくれればもう言うことないなぁって感じ。

JavaScript 第7版

これもまだ読み進めているところですが、選ばせてもらいました。原書の存在は前から知っていましたが、ようやく2年越しに日本語版も登場しました。JS/TS勢なら必ずお世話になるMDNの中の人が書いているらしく、「MDNを渡り歩けるようにJSの勉強をこの本でします。」のスタンスでこの本はスタートします。なので参照先もMDNになっています。 MDNと密接につながっている辺り敷居が高い印象を受けるかもしれないですが、この本はすごく読みやすい文体になっててどんどんJSの理解が深まります。700ページ超えのかなり分厚い本ですが、今後babelやwebpackといったJSの周辺ツールのコア部分を理解したり、フレームワークのコントリビュートを目指しているので絶対に全編理解していきたいお気持ち感。TS+DenoでNode.js関連の箇所以外の全サンプルコード写経したいな。。。

ここ最近アドカレの記事の作成に追われて、全然読めてないので年末年始を境にちゃんと読み進めたい。。。

また今年は進化が速いフロントエンドのキャッチアップのため、洋書の技術書も読むようになりました。英語自体は学術論文的な文体なので、大学受験レベルの知識で十分読めてます。まだSvelteの本を読めていないので来年こそはいい加減読みたいですね。

svelte-spa-routerの作者が書いた本。production-readyなWebアプリが作れるようになるらしい。

Svelteの詳しい文法が載っていると噂の本。発売時期の問題でSapperだけどSvelteKitで対処できるので問題ない。

あとプログラミングから外れるけど、やりまくればアメリカ英語が聞き取れるようになるらしいこの本も来年早々からやろうか計画中。

今年はこんな感じ。(本記事で割と語ってしまった気もしますが、)また年が変わったら今年の抱負記事出そうと思ってます。

ではまた。

node.jsのv14環境下のcreate-react-appでnode-sassは使ってはいけない

お久しぶりです。

今回はcreate-react-appから生成したReactアプリでscssファイルを使用しようとしたところ、少し躓いたのでメモ的な記事です。ネット検索するとまだ問題の方法を使った記事ばかりがヒットするためそれの警鐘的な意味も込めて。多分create-react-appじゃない方法で作成したReactアプリも同様にいけるはず。

どんな問題が起こったのか

  • node-sassをインストールしたところ自分のnode.jsがv14だったためエラーが出て使用できなかった
  • 調べたところnode-sass自体が非推奨になっていた(参照元

※筆者はReactアプリにscssファイルを導入するのは初めてだった

どう対処したか

この記事みたいにnodejsをダウングレードするのは嫌だったので(そもそも他のライブラリは普通に使えているし)、他にもう少し楽な方法がないか見てみたところ、移行先として案内されていたdart-sassのREADMEにしっかり書かれていた。

github.com

最初Dart*1言語で書かれているライブラリが本当にそのままnpm installでいけるの?って思ったけどサクッといけた。

dart-sassの使用手順は以下の通り。

1) create-react-appで生成したローカルのReactアプリで、npmからsassをインストール

Homebrewとか他のパッケージ管理システムでも使える様子。

npm i sass
or
yarn add sass

2) あとはscssファイルを作成して、普通にscss書いてnpm startすれば適用される

今回の現象と対処で思ったこと

  • 今回は自分のnode.jsがたまたまv14だったので気づけたが、インストールするライブラリがdeprecated(非推奨)になってないかは公式のサイトやリポジトリ、npmページで確認
  • ネット検索で出てくるインストール方法は鵜呑みにしすぎないこと。結局は英語の原文orGoogle翻訳かまして読むのが一番。(最近のGoogle検索は内容微妙なのにSEOだけ対策しまくっているサイトが先頭にきてしまう仕組みなので)

以上です。また思いついたら記事出します。

2021/04/17 追記

node-sassをバリバリ使っているプロジェクトとかnode-sassバリバリ使っている人は、書き方が変わる箇所が結構あるので安易にnode.jsのv14は使わないほうが良さそう。 そんなわけでsassユーザーの誤解を招きかねなかったので記事タイトル変更しました。

以下の記事に変更箇所や対処方法がある程度まとまっているみたいです。 主な変更箇所は「@import→@use, @forward」あたり。

labor.ewigleere.net

*1:最近人気のFlutterで使うGoogle製のプログラミング言語、実は筆者も気になっている

自分がVue.jsを学ぶときに使った本・サイトを紹介する

今回はVue.jsの勉強についての話です。
最近のはてブツイッター辺りでプログラミングスクール云々の議論から発展して、独学で学ぶにはどうすればいいのかみたいみたいな記事・呟きを多く見かけるようになった。この流れを見て、実際にWebエンジニアとして働いている自分が"そうだ、Vue.jsを学ぶために使った手順を公開してみよう"と思い今回の記事を作成しました。これからVue.jsを学習する人の参考になればと思います。

対象読者

  • JavaScript(ES6以降)の基本的な文法を理解している人
    →まだ学習できてない人はProgateのJavaScriptコースや「JavaScript Primer」辺りで先に学習してきてください
  • これからVue.jsを学びたい人
  • 実際の仕事でVue.jsを使うようになったはいいが、勉強できてない人

注意事項

  • 「TypeScriptを使ったVue.js」については筆者自身まだTypeScriptをガッツリ学習できてないため、今回の記事範囲からは外しています。この辺りは学習できたタイミングで本記事に追記or別記事で書きます。
  • GraphQL周辺の話もTypeScriptと同じ理由で範囲外にしています

学ぶときに使った本・サイト

ここから本題。学習手順は記事の上から下の順です。

これからはじめるVue.js実践入門

これからはじめるVue.js実践入門

これからはじめるVue.js実践入門

JavaScript本格入門」などの著者・山田 祥寛さんによる一冊。 長年初心者向けのWeb開発本をたくさん書いてきた著者の本というのもあり、Vue.jsの文法を1から簡単なサンプルアプリを交えて、初学者にもわかりやすく説明されています。加えてVue RouterやVuexとメジャーなライブラリ・テストコードの説明まで初心者向けそのままにこれ1冊に入っています。
初心者向けのVue.js本は今やたくさん出ているみたいですが、これ1冊で十分だと思います。

基礎から学ぶ Vue.jsサポートサイト(CHAPTER1~6)

改訂2版 基礎から学ぶ Vue.js [2.x対応!]

改訂2版 基礎から学ぶ Vue.js [2.x対応!]

  • 作者:mio
  • 発売日: 2020/09/24
  • メディア: Kindle

↑の本のサポートサイトです。なんでサポートサイト?なのって感じですが、これには2つあります。

  • 元の書籍が説明もVueをすでにかじってないとわかりづらく初心者向けじゃない。さらに前述の「これからはじめる~」の登場で微妙な立ち位置になり、読む必要は薄くなりつつある(※筆者の体感です)
  • ただこの本のサポートサイトは良質なサンプルがたくさんのっている&サイトデザインがとにかく可愛い

このサイトはサイト中にも記載されている、「CodePen」や「JSFiddle」といったオンラインエディタと組み合わせることで真価を発揮します。
実際にオンラインエディタに写経したり、少しコードをいじったりする練習を積んだことでVue.jsの基本的な文法はスラスラ書けるようになりました。
なおCHAPTER7~9のサンプルコードについては正直「これからはじめる~」のほうがわかりやすい印象だったので正直やらなくていいと思います。

Vue.js入門 基礎から実践アプリケーション開発まで

実はまだ第2章を読んでいる途中ですが、「これからはじめる~」の後で(特に仕事でVue.jsを使用されている人は)是非読んでほしい一冊です。ただし初心者むけではないので、タイトルの"入門"は大嘘です。本当の書籍名は「パーフェクトVue.js」だと思って読んでほしいです。
著者陣の中にはVue.js本体のコアチームに所属されている方もおり、実際に本体の開発に携わっているからこその厳密な説明が読めます(実際「これからはじめる~」だとぼかされていた点についても明確に記載されているように感じる)。
注釈にも大事なことが書かれているため、ちゃんと読んでおきましょう。

最後に

ここまで勉強していたら、仕事で使っているVue+Vuexのコードが完全に謎コード(参画当初)→大分理解(記事記載時点)できるようになりました。ただTypeScriptとかGraphQLが使われている箇所はまだまだ理解できてないので、これからもどんどん勉強していこうと思います!

今年(2021年)の抱負

あけましておめてとうございます。今年もよろしくお願いいたします。 年越し前に抱負を書こうと思っていたら、越してしまいました。

抱負を書きたくなったのははてなの他のブロガーさんがたくさん書かれているのを見て書きたくなった+今年やりたいことをまとめたいからです。

今年の抱負は以下の通り

1. 技術力をさらに高める

転職先ではありがたいことにVue.jsとTypeScriptの実装を担当させていただいており、前職では信じられないくらい毎日コードを見る・書く時間がありそれだけで本当に楽しいです。ただ実装内容の範囲が広がっていくと、やっぱり実装・対処方法に詰まることも多く自分はまだまだだなぁと痛感させられます。そんなわけで力をつけるために今年は次のことにTryしていきたいです。

たくさん技術本読む

公式ドキュメントかじってないと難しいらしいけど、目次見ただけで早く読みたくなるVue.js本

TypeScriptを実務で使う人はこのオライリー本は必須らしい

プログラミングTypeScript ―スケールするJavaScriptアプリケーション開発

プログラミングTypeScript ―スケールするJavaScriptアプリケーション開発

  • 作者:Boris Cherny
  • 発売日: 2020/03/16
  • メディア: 単行本(ソフトカバー)

あと昨年読みそびれたこれ

他に時間があればHTML&CSS本もみれるといいな

OSSコントリビュートに挑戦

OSSコントリビュートについては以下の記事が一番わかりやすいので参照

GithubのIssue欄にはGood First issueというラベルが用意されているのですが、このラベルは自分みたいな初心者向けのラベルとしてOSSプロジェクトでは使われています。翻訳でもいいのでGood First issueラベルを中心に1つでも貢献していきたいですね。この辺のサイト使えば見つけやすいらしい。

2. ゲームをたくさんプレイする

一昨年辺りから仕事疲れもあって、急激にゲームをする時間がなくなっていたので。買ったけどやれてないゲームをたくさんやっていきたいですね。PS5は流石に今年中には手に入るはず...

3. 洋画・海外ドラマをたくさん見る

これもゲームと同じで使う時間がめっきり減ってしまったのですが、最近会社のSlackで見た洋画について盛り上がる機会が多くなり自然と鑑賞意欲が戻ってきました。次に書く抱負も関係しているのですが、ネトフリとかでどんどん見ていきたいですね。

4. 英語の勉強をする

海外のサイトや動画にある英語を理解できるようになる、という夢が大学の頃からあるのですが、社会人になった今でも全然その領域に達せていません。洋画や海外ドラマで英語勉強をする方法を採っても同じ回を続けて3~4回見るのは流石に辛くなりました。取らないといけない時間的に社会人向けじゃないしね。

最近どうしたらこの現状を打破できるのかと調べていたらとある動画に出会いました(その動画を載せようか迷ったのですが、本ブログの読者層にそもそも合わない&ものすごく賛否が分かれそうなテンションなのでやめました)。その動画で語っていたのが

  • 英語がそこまでわからなくていいので最初からネトフリの英語字幕オンリーで見る。
  • わからない単語は辞書で調べる
  • 徐々にドラマの展開や何回も出てくる単語から理解できるようになっていく

みたいな方法でした。動画の鑑賞後、これならネトフリだけではなくYouTubeでも活用できるし自分にもできそうという感じで元気づけられている自分がいました。今年はこの方法を使って英語力を高めていこうと思います。

思っていた以上に内容が長くなってしまいました。今年も1年頑張っていきましょう! 今回は以上

「今年買ってよかったもの」&「来年には欲しいもの」in 2020

また時期が空いてしまいました。miruoonです。

今回は「今年買ってよかったもの」「来年には欲しいもの」をまとめていきたいと思います。

今年買ってよかったもの

Apple Watch SE(GPSモデル)

※私はゴールドアルミニウムケースとピンクサンドスポーツバンドを購入

"Apple Watchいつかは欲しいけど、最新モデルは5万くらいするし、かといって前モデル買うのも常時点灯付きのもなんか違うし..."と思っていた矢先に登場してくれたApple Watch SEです!まだまだ機能については勉強中ですが、

個人的に助かっている点は

  • 歩数を図ってくれるので散歩がはかどる
  • iPhoneを放置していてもiPhone側の通知を飛ばしてくれる

これらの点にピン!と来たiPhone(※ただしiOS 14以降を搭載したiPhone 6s以降)持ちの人は買うべし。

モニター(Dellの23.8型)

今の会社に入社してから、人生初の在宅勤務が始まりました(前職もIT自社開発&都心だったのにも関わらず宣言中ですら一度もなくて泣いた)。最初はなんとかノートパソコン1台で業務をしていましたが、次第にコードの実装作業が入るようになり、厳しくなったので買いました。

4K対応の27型と迷ったのですが、机のスペースが圧迫されそうだったので、泣く泣く23.8型を選択。不具合が頻発する印象のDellということで少し不安はあったのですが、特に問題なく表示されており、快適な在宅作業が出来ています。

あとディスプレイの角度と高さを調整できるところも〇。

来年には欲しいもの

PlayStation 5

Amazonページは開いたところで販売してないので未記載)

いつになったら買えるんですかかかかかかかあああああああ!PSNトロフィーレベル〇以上とかPS Plus会員の条件をつけて販売してほしいなど色々思うことはありますが、これ一つで記事が書けるレベルなのでこれ以上については語りません。応募できる場所には応募してるのでいつかは引っかかる時がくるように...ゲ〇さん、ツ〇ヤさん当選連絡ください(懇願)

来年ぐらいに出るらしいHorizon続編には間に合いたいなぁ

↓前作神ゲーだったのでもうDL版買いました

【PS5】Marvel's Spider-Man: Miles Morales Ultimate Edition

【PS5】Marvel's Spider-Man: Miles Morales Ultimate Edition

  • 発売日: 2020/11/12
  • メディア: Video Game

iPad Air (第4世代)

最新 Apple iPad Air (10.9インチ, Wi-Fi, 64GB) - シルバー (第4世代)

最新 Apple iPad Air (10.9インチ, Wi-Fi, 64GB) - シルバー (第4世代)

  • 発売日: 2020/10/23
  • メディア: Personal Computers

今使っている初代iPad Airがもう最新スマホゲームが出来ず限界に来てるのと、ここ数年のiPadシリーズがiOSではなくiPadOSに移ったので未だiOSのままなのは良くないと感じているからです。Airを選んでいるのはAirが単純にサイズ感も含めて好きなだけだからです。

Apple M1チップ搭載Macbook Pro(13inch)

これもiPadと同じで今使っている機種が古すぎていい加減乗り換えたいのが主な理由です。現在プライベートでのメインPCはSteamゲームもやりたいこともありWin10を使っているのですが、プログラミング面だとWSL2だけだと(登場前よりは大分マシになりましたが)上手くいかない場面もあります。そんな背景があってパワーのあるMacに乗り換えたいんですよね。

すごいと噂のApple M1チップのパワーも試したいですね。

今のところ絶対欲しいのはこの3商品です。「Oculus Quest 2」や「Xbox Series X」も候補に入ってたのですが、前者はPCスペック的にちょっと怪しい&FBのログイン問題が怖い/後者は前述のPS5より入手が厳しい噂&フライトシミュレーターがやりたいだけで、絶対欲しいという境地に至っていないため外しました。

最後に

今回の記事は社内アドカレでとある方が「今年買ってよかったもの」記事を出されていたのを見て、自分もやりたいなぁと思ったことがきっかけです。 書いてて結構楽しかったため、来年以降も続けていきたいと思います。

次回は「来年の抱負(プラスで今年の反省もあるかも...)」記事を近日中に出す予定です。

リーダブルコード学習メモ

転職先でリーダブルコードを読むことになり、とりあえず1周読破したときの学習メモ。

※15章は本書で出てきたコード作法を使った設計例の話だったので、記載していません

1章-理解しやすいコード-まとめ

  • コードは他の人が最短で理解できるように書く
  • コードは短いほうがいいが、上記を優先する

第1部-表面上の改善-

2章-名前に情報を詰め込む-まとめ

  • 明確な単語を選ぶ

    • 例えば「get」はどんなところから取るのか分かりづらい
    • 類語辞典を活用する
  • 汎用的な名前を避ける

    • 「tmp」や「foo」「retval」などは避ける
    • 変数の意味を表す単語を使う

    • ループ文に出てくる「i」「j」「k」はより明確な単語を使うとバグが目立ちやすい。 例)「i」→「club_i」/「ci」

  • 抽象的よりも具体的な言葉を選ぶ

  • 名前に情報を追加

    • 単位を表す変数には変数名に単位をつける
  • 名前の長さを決める

    • 変数名は1つの単語だけにする必要はない
    • テキストエディタの単語補完機能を活用
      • Intelli IDEA:Alt+/
  • 名前のフォーマットで情報を伝える

    • チームごとにクラス名は大文字から、変数名は小文字から始めるみたいなルールを設ける。

3章-誤解されない名前-まとめ

  • 限界値を含めるときはminとmaxを使う
  • 範囲(最初から最後の要素を含む)を指定するときはfirstとlastを使う
  • 包含/排他的範囲(最初を含むが、最後の要素は含まない)にはbeginとendを使う
  • ブール値の変数や関数にはis/has/can/shouldなどを用いる
  • 複数の名前を検討する
    • 名前を決める間に反対意見を考える
    • 最善の名前=誤解されない名前

4章-美しさ-まとめ

  • 見た目が美しいコードのほうが見やすい
  • 複数のコードブロックで同じようなことをしていたら、適切な改行を入れる(ズレている箇所が目立たないように)
  • コードの列を整列する
    • 空白を入れたりして位置調整する
  • ある場所でA・B・Cのように並んでいたものを、他の場所でB・C・Aのように並べてはいけない。意味のある順番を選んで、常にその順番を守る。
  • 空行を使ってコードを「段落」に分割する
    • コードをグループ別に分ける
    • 段落の始めに要約用のコメントをいれるのも可
  • 「正しい」スタイルよりも一貫性のあるスタイルのほうが大切

5章-コメントすべきことを知る-まとめ

  • コメントの目的は書き手の意図を読み手に知らせること
  • コメントすべきではないこと
    • コードからすぐわかること
    • ひどいコードを補う「補助的コメント」、コメントするのではなくコードを修正する
  • 記録すべき自分の考え
    • 映画の監督コメンタリーみたいに、なぜコードが他のやり方ではなくこうなっているかコメントする
    • コードの欠陥をTODO:やXXX:などの記法を使って示す
    • 定数の値にまつわる「背景」
  • 読み手の立場になって考える
    • (チームに参画したりなどで)コードを読んだ人が「えっ」と思うところを予想してコメントする
    • 平均的な読み手が驚くような動作は文書化しておく(ハマりそうな罠を告知する)
    • ファイルやクラスには「全体像」のコメントを書く
    • 読み手が細部に捕らわれないように、コードブロックにコメントをつけ概要をまとめる

6章-コメントは正確で簡潔に-まとめ

  • 複数のものを指す可能性がある「それ」や「これ」などの代名詞を避ける
  • 関数の動作はできるだけ正確に説明する
    • 実例を用いると尚良
  • コードの意図は詳細レベルではなく、高レベルで記述する
  • よくわからない引数にはインラインコメントを使う(例:Function(/* arg = */...)
    • C++Javaでは特に活用する
    • Pythonなら名前付き引数は可能(例:Function( arg = ...)
  • 多くの意味が詰め込まれた言葉や表現を使って、コメントを簡潔に保つ

7章-制御フローを読みやすくする-まとめ

  • 比較を書くときは、変化する値を左に、より安定した値を右に配置する
  • if/else文は一般的に肯定形・単純・目立つものを先に処理する
  • 三項演算子(?:)・do/whileループ・gotoなどは使わないほうがよい
  • 深いネストを避けるために「直線的」なコードが有効
    • 早めに返すことでネストを削除したりコードをクリーンできる
    • 関数内で複数のreturn文をしようしても問題ではない、早めに返り値を出すことができる
    • ネストが深いと読みづらくなる

8章-巨大な式を分割する-まとめ

  • 最も簡単な方法は「説明変数」の導入
    • 大きな式の値を保持する変数
  • ド・モルガンの法則を使って論理式をきれいにできる
    • 例)if (!(a && !b))if (!a || b)と同じ

9章-変数と読みやすさ-まとめ

  • 変数が多いと変数を追跡するのが難しい
  • 変数を削除する
    • 一度しか使っていない、中間結果を保持する変数は削除する
  • 変数のスコープを縮める
    • 変数のスコープが大きいとスコープを把握する時間が長くなる
    • 変数のことが見えるコード行数をできるだけ減らす
  • 一度だけ値が設定される変数を使う
    • constfinalを使う

10章-無関係の下位問題を抽出する-まとめ

  • プロジェクト固有のコードから汎用コードは分離させる
  • 汎用コードはたくさん作る
    • ただし小さい関数は作りすぎてコードが読みにくくならないようにする 

11章-一度に1つのことを-まとめ

  • コードは1つずつタスクを行うようにしなければいけない

12章-コードに思いを込める-まとめ

  • ロジックを明確に説明する
    • 簡単な言葉でロジックを説明する
    • できれば口で説明してみる→「ラバーダッキング
    • 問題や設計をうまく口で説明できないのであれば、なにかを見落としているか、詳細が明確になっていない

13章-短いコードを書く-まとめ

  • 不必要な機能をプロダクトから削除する。過剰な機能を持たせない
  • 最も簡単に問題を解決できるような要求を考える
  • 定期的にすべてのAPIを15分ほどかけて読む、標準ライブラリに慣れ親しんでおく
    • ライブラリでどんなことができそうなのか眺めておくことで、「そういえば、これAPIでみたような・・・」と思い出し、役に立つ場合がある

14章-テストと読みやすさ-まとめ

  • 他のプログラマが安心してテストの追加や変更ができるように、テストコードを読みやすくする
  • テストのトップレベルはできるだけ簡潔にする。入出力のテストはコード1行で記述できるといい
  • テストが失敗したらバグの発見や修正がしやすいエラーメッセージを表示する
  • テストに有効な最も単純な入力値を使う
  • テスト関数に説明的な名前をつけて、何をテストしているのかを明らかにする。Test1()ではなくTest_<関数名>_<状況>のような名前にする。

11月から無事転職いたしました。 それ関連でゴタゴタしてたこともあり、なかなか投稿できず投稿するする詐欺なっていたので投稿します。本記事を機に投稿ペースを戻していけばなと思います。

更新再開します

ということで無事転職活動が終了したため、更新再開いたします。

11月から希望通り自社開発のWebエンジニアになります。

この世情での活動だったため、半年はては1年かかるんじゃと思っていましたが、なんとか2ヶ月で終わりました。 主な転職理由はよくあるSIよりWebエンジニアしたかったという理由です。流行りの退職エントリーを書いてもいいのですが、これといって手の込んだアプリケーションを作りましたとか競プロガチ勢ですみたいなのは正直ないので今の所書く予定はないです。 あるとしたら次の会社で半年過ごした後くらいに「新卒・未経験者のためのシステム会社選び」を出したいなと思っているくらい。

次の会社ではPHP(Laravel)・JavaメインでフロントはVue.jsとかTypeScriptとかやるみたいで今からワクワクしています。引っ越し作業とか現職の業務もこなしつつ、なんとか時間を見つけてこの辺りの勉強も進めたいと思います。 平日は朝活していきたいなぁ(遠い目)

あと、Wantedlyとか転職で使ってたサイトにこのブログのURLを貼っていたのですが、思ってた以上にアクセスが増えていました。中には実際の面接でブログを読んでくれたことを話してくれた企業さん(残念ながら縁はありませんでしたが)もありました。そんなこともあったので今後のキャリアアップのためにまた本ブログをたくさん更新して行こうと思います。

じゃあまた