皆さん、おはようございます!マイクです!今日は2024年11月2日、金曜日ですよ!今日もZennでトレンドの記事を紹介していきますので、ぜひお付き合いくださいね。
さて、前回紹介した記事ですが、今日はそのまま新しい内容に移りましょう!
今日ご紹介する記事は全部で5本です!それでは早速、今日の内容をお伝えしていきますね。
まず1つ目の記事です。
タイトルは「Neovimはじめてみた」です。
著者は、WezTermを使ってターミナルでの作業を効率化するために、Neovimを利用することに決めたそうです。今はmacOS上でWezTermをターミナルとして使用し、JetBrains系IDEやVSCodeを使っているけれど、これからはNeovimをメインのIDEにする予定とのこと。Neovimを選んだ理由は、設定やプラグインを簡単に管理でき、ターミナル操作だけで完結できるからなんです。
Neovimは、Vimをリファクタリングして、メンテナンス性や拡張性が向上したエディタです。インストールはbrewを使って簡単にでき、コマンド`$ nvim`で開けます。キーマップには`<C-@>`や`<Leader>`などがあり、これを理解することが重要です。
Neovimには、Normal mode、Insert mode、Command mode、Visual modeの4つのモードがあって、それぞれ特化したキーマップが存在します。著者は特にNormal modeの操作を重視していて、カーソル移動やコピー、検索機能について詳しく解説しています。今後はGitクライアントとしてlazygitを使い、DatabaseクライアントはDataGripを維持しつつ、Neovimを中心にプラグインを活用していく方針とのことです。
続いて2つ目の記事に移ります。
タイトルは「2つのJSONの差分を動的に表示する。シンタックスハイライトもする。powered by shiki」です。
この記事では、2つのJSON文字列の差分をシンタックスハイライト付きで表示する方法が解説されています。具体的には、JavaScriptのライブラリ「jsdiff」と「shiki」を組み合わせて、動的に差分を計算し、視覚的に理解しやすく表示するアプローチを取り上げています。
まず、jsdiffを使ってJSONの差分トークンを取得し、shikiを用いて差分表示に適した形式に変換します。shikiはJavaScriptでのシンタックスハイライトライブラリで、VS Codeと同様のカラーリングを提供してくれます。使用するには、`codeToHtml`メソッドを呼び出すだけで、スタイリングされたHTMLを取得できるんです。
差分表示には`transformerNotationDiff`を使い、行末に`// [!code ++]`(追加行)や`// [!code --]`(削除行)を記載することで、shikiが差分を識別し、適切なクラスを付与します。これにより差分が強調表示されますが、CSSで色付けを行う必要があるため、事前にスタイルを準備しておく必要があります。
続いて3つ目の記事に移りましょう。
タイトルは「めっちゃ使いやすいスコアボードを作りました(3チーム以上でも使える)」です。
「UnScoreboard」は、3チーム以上のスコア管理に特化したWebスコアボードアプリです。このアプリは、従来のスコアボードが2チーム用に限定されている中で、複数チームのスコアを簡単に管理できることを目指して開発されたものなんです。特に、社内で流行った屋外競技「モルック」をプレイする際にアナログのスコアボードが不便だった経験から着想を得ているそうです。
アプリの最大の特徴は、最大10チームまでのスコアを管理できる点で、チームの追加や削除が可能です。また、スコアの増減は直感的で、シンプルなUIを心がけています。スマートフォンでの使用を前提にしたデザインなので、操作が容易で、説明なしでもすぐに使えるように工夫されています。
続いて4つ目の記事にご紹介します。
タイトルは「会話形式で綴る『説明変数と要約変数』」です。
このドキュメントは、システム開発の現場での会話を通じて、プログラミングにおける「説明変数」と「要約変数」の重要性を解説しています。登場人物は41歳のプログラマー「ワイ」とその後輩です。ワイはバックエンドのバグで社員名簿システムのデータを消失し、後輩と共にフロントエンド部分の実装を進めることになりました。
実装の中で、プロフィール編集ボタンを作成し、誰がそのボタンを押せるかの権限管理を行います。ワイは条件式を直接記述しましたが、後輩はそれが分かりにくいと指摘。後輩は「説明変数」を提案し、条件式に分かりやすい名前を付けることの重要性を説明します。
さらに、後輩は条件を要約する「要約変数」の考え方を示し、最終的により良いコードが完成しました。命名によって、プログラマー自身の理解が深まり、混乱を防ぐことができるんですね。
そして、最後の5つ目の記事です。
タイトルは「早くて安全、以外のRustの好きなところ」です。
Rustはその性能やメモリ安全性、並行性が注目されがちですが、著者が最も重視するのは「生産性」です。Rustのエコシステムには、生産性を向上させる要素がたくさん含まれています。
まず、CargoはRustの公式ビルドシステム兼パッケージマネージャであり、統一されたドキュメント生成を提供するcrates.ioやdocs.rsがあります。これにより、ライブラリの利用が容易で、ドキュメントの質も高く保たれます。
また、rustfmtとclippyは公式に提供されるフォーマッタとリンターで、これをインストールするだけで利用できるため、設定の手間が省けます。Rustではデフォルトで値がイミュータブルであり、変更が必要な場合に明示的に`mut`を付ける必要があり、意図しない変更を避けることができるんです。
以上、今日ご紹介した記事を駆け足でおさらいしました!次回も皆さんにお会いできるのを楽しみにしています。詳しい内容はショーノートに書いてありますので、ぜひチェックしてくださいね!そして、番組の感想もお待ちしております!それでは、素敵な一日をお過ごしください!