アプリケーション

AIを使ったコードリーディングの手順について

アプリケーション

AIを活用したコードリーディングの手順についての雑多なメモ。 プロンプトの工夫などもあればよいが、プロセスだけまとめておく。 手順 1. コードの全体像と重要な部分を確認 プロンプトでコードの全体と読むべき重要な部分を確認する。 その際、READMEや他のドキュメント、ツール(コールグラフなど)を活用して、全体像の把握が概ね正しそうか確認する。 データ構造やシーケンスについても確認できると良い。 ...

コードリーディング AI

初めてのGo言語 第2版 ―他言語プログラマーのためのイディオマティックGo実践ガイド

アプリケーション

初めてのGo言語 第2版 ―他言語プログラマーのためのイディオマティックGo実践ガイドを読んだ。 久しぶりに業務でGoを書く機会に恵まれたので、新しい情報のキャッチアップや復習を兼ねて読んだ。 この本は単なる入門書ではなく、Goの思想やイディオムを沢山紹介しており、Goという言語の理解を深めることができる。 他の入門書は拾わなさそうなことも拾われており、良書であった。 ...

Golang

継承より委譲について

アプリケーション

はじめに オブジェクト指向プログラミング(OOP)は「現実のモノをプログラムで表現する」ための考え方である。しかし、現実の分類や言葉の定義をそのままプログラムへ持ち込むと、思わぬ破綻を招く。 本記事では、「四角形と正方形」という具体例を通じて、以下の3つの重要な概念を解説する。 ダックタイピング - 名前ではなく振る舞いで型を判断する リスコフの置換原則(LSP) - 振る舞いの互換性を保証する...

ダック・タイピング リスコフの置換原則 委譲 継承 Golang

なぜインターフェースの方が実装より変更頻度が低いのか

アプリケーション

クリーンコードクックブック ―コードの設計と品質を改善するためのレシピ集を読んでいて、インターフェースの実装よりも変更頻度が低いという主張が気になったので、言語化してみた。 インターフェースは「契約(contract)」であり「抽象」 インターフェース(interface)は、 「この機能はこう使える」という"契約"を表すものである。 一方で実装(implementatio...

Golang インターフェース

Singletonパターンはなぜアンチパターンなのか

アプリケーション

はじめに シングルトンパターンは、デザインパターンの中でも最もよく知られ、広く使われているパターンの一つである。しかし、クリーンコードや保守性の観点から見ると、多くの問題を抱えている。 本記事では、シングルトンパターンの主要な問題点について、具体的なGoのコード例を交えながら解説する。 シングルトンパターンとは シングルトンパターンは、クラスのインスタンスが常に1つだけ存在することを保証するデザイ...

シングルトンパターン Golang

TUI開発で役立つターミナル仕様の理解

アプリケーション

はじめに TUI(Terminal User Interface)アプリケーションを開発する際、vimやhtopのような既存のTUIライブラリを使えば簡単に実装できる。しかし、その裏でターミナルがどのように動作しているのか、なぜRaw Modeが必要なのか、ANSIエスケープシーケンスとは何なのかを理解していないと、高レベルのAPIが何をしているのかわからず、問題が起きたときに対処しづらい。 本記...

TUI termios ターミナル UNIX Golang

ストリートコーダー

アプリケーション

ストリートコーダーを読んだ。 ストリート(現場)でのtipsをジョークを交えて語っている本。 アルゴリズムやテスト、リファクタリングからセキュリティや性能最適化まで幅広く扱い、現場で遭遇する課題にどう向き合うべきかが具体的に示されている。 初心者には実践のイメージを、経験者には自身の技術や姿勢を振り返る機会を与えてくれる。 ...

コーディング

なっとく!関数型プログラミング

アプリケーション

なっとく!関数型プログラミングを読んだ。 Scalaで関数型プログラミングの丁寧に解説した良書であると感じた。 途中からScalaの言語仕様の話が多いように感じる部分もあったが、言語に関係なく関数型のエッセンスについて易しく学ぶことができる。 ...

関数型

Goでプロセス・goroutine・メモリを覗いてみた

アプリケーション

概要 Goを使って、プロセスのアドレス空間・goroutineの動作・スタックとヒープを軽く覗いてみる。 子プロセスとアドレス空間の違いを確認する Goでは標準的にos/execパッケージを使って新しいプロセスを起動する。 os/execは内部的にUnix系OSではfork()+exec()相当の処理を行い、新しいプログラム(この例では自分自身)を実行する。 親子プロセスで同じ変数のアドレスを表...

Golang メモリ ヒープ スタック プロセス スレッド

Prologへの入門

アプリケーション

Prologへの入門を読んだ。 Regoを学ぶ際にその背景情報を得ようと思って読んでみた。 Prologの深い思想まで理解できなかったが、宣言型言語というエッセンスは汲み取れた。 ...

Prolog