あすかの怪文書 目次
序文
あすかです。
私はシステムエンジニアをしておりましたが、諸事情で事務職への転職を本気で検討したことが、この連載を始めたきっかけです。この連載は、技術的な内容というよりは、技術職を辞める私が、世に役立てることを全く考えず自己滿足のためだけに書いた自伝、そして遺書のようなものだと思っております。(ちなみに事務職への異動は断られました)
ITでこれまで培ってきた技術(笑)を少しでも形として残したいと思い、本連載を起稿しました。私は特に情報分野で実績があるわけではありません。最近は情報よりもむしろ、成人男性向け漫画を描く同人・商業作家として活動していますし、情報分野では非常に影が薄いです。この連載原稿の下書き(ただしあれはほとんど中身のない説明だったと反省しています)を冗談のつもりで出版社に持ち込みましたが断られました。自分はその程度の実力だと思いますので、この連載もそのような目で読んでいただけますと大いに助かります。
私はまだ、IT企業に入社して7年しか働いていません。私の技術力は非常に低いとはいえ、同じ職場の先輩たちのコードを読んで勉強させていただき、経験を積みました。その足りない経験や知見を少しでも残そうと思い、本連載を公開いたします。
私は後輩を教育したことはありませんが、もし自分が後輩を持ったらこのようにプログラミングを教えよう、というつもりで書きます。すでにC#の文法を一通り理解した人を対象に、オブジェクト指向を用いた保守性、拡張性を考慮したプログラミングの基礎を書き連ねます。
この連載記事が世の中に役立つとは全く思っておりません。私は情報分野では上述の通りただの素人でございますので、執筆にあたってすでに持っている知識であってもある程度検証はしておりますが、一般論と比較すると間違いが多く含まれている可能性があります。私なりのプログラミングスタイルだと割り切っていただければ意識の低い素人として幸いではございますが、別に私に配慮して指摘せず黙ってくださいと言っているわけではないです。それとも、あまりにも間違いが多すぎて指摘するのも疲れるから放置されているだけかもしれません。この連載を初心者は読まないほうがいいですし、中級者も読まないほうがいいですし、上級者も読まないほうがいいです。
明らかな間違いを見つけた場合は、GitHubでプルリクエストを送っていただければ、私が納得したものについては対応します。ただし、私がZennで受け取ったサポートのお金は分配しないことにあらかじめご同意お願いします。サポートのこともありますので、ご自身のアカウントから批判記事を投稿されることをおすすめします。ご連絡いただければ、荒らしでない限り、私みたいな素人でも分かるレベルの明らかな間違いがあっても無条件でこちらの記事からリンクいたします。
本連載に記載されている情報はあくまで趣味程度のものですし、間違いも多く含まれています。参考程度にとどめてください。プロフェッショナルレベルを目指しているのなら、絶対にこんな自己満足のためだけに生まれた間違いだらけの連載を読まず、必ず下記の本を読んでください。
有益な時間の過ごし方
あなたには、この連載を読むよりも、もっと有益な時間の消費方法があるはずです。すなわち以下の本を読むことです。
- Effective C#
- Adaptive Code ~ C#実践開発手法
- Domain-Driven Design
- フレームワークデザインのガイドライン
これらの本は、私と違って実績のある人が書いたもので、内容もこの連載とほとんど重複するかもしれません。この連載を読むよりも、上記の本を読んだほうがより正確にプログラミングを理解できるのは自明の理であると思います。
そして上記の本を読まれた方は、この連載を読む理由も必要性もありません。ブラウザバックするか、プリコネをプレイしてください。プリコネをプレイするほうが、この連載を読むよりも遥かに有益な時間になるはずです。ちなみにペコリーヌかわいいです。
連載形態
この連載は、基本的に隔週1回のペースで記事を追加していきます。同人活動の進捗によっては、毎週になったり、3週間おきになったりすることもあり、不定期です。
読者が1日1記事読まれることを想定した構成になっていますが、実際の読み方は自由です。必ずしも毎日1日1記事読む必要はありません。最初の2、3記事だけ読んでこの連載をお気に入りから削除するのも自由ですし、この「はじめに」を読み終わって即この連載をお気に入りから削除するのも自由です。
対象読者
読者はすでにC#の一通りの文法を理解しており、簡単なプログラムなら書けるスキルを持っていることを想定します。本連載ではC#の文法についてほとんど説明しません。わからないところはご自身で調べていただくことになります。
対象環境
Windows Visual Studio 2019 + C# 9.0
なおC# 8.0で追加されたNULL許容参照型は有効にするものとします。
目次(予定含む)
リンクが切れているものは、まだ公開していない記事です。これらの記事は、GitHubの公開リポジトリにプッシュしておりますので、いち早く読みたい方はそちらを参照してください。ただしそれらは全て草稿か下書きであり、Zennで公開するまでに変更が加えられる可能性があります。
第1章 オブジェクト指向
- 概要
- DDDの簡単な紹介
- オブジェクトは「もの」ではない
- 組み込み型より新規クラス・構造体の作成を選択する
- 1つの型の責務を明確にし、複数の責務を含めない
- アクセス修飾子はprivateを優先的に検討する
- 抽象メソッドをオーバーライドまたは実装したメソッドの挙動は揃える
- 具象ではなく抽象に依存する
- 不要なメンバーを抽象化しない
- 処理の共通化のために継承しない
- 継承とインターフェースの使い分け
- 行き過ぎた合理化・共通化に注意する
- トランザクションスクリプトが適切な場合
Discussion