Magnolia Tech

いつもコードのことばかり考えている人のために。

KIOXIA USBフラッシュメモリ 16GBを買った......物理記録メディアを買うのはいったいいつ以来なのだろう

Windowsのインストールメディアと、Ubuntuのインストールメディアを作るために、USBメモリを買った。

もう最後にUSBメモリを買ったのがいつだったのか、まったく思い出せない。

というか買った記憶が無い。

最後に自宅でUSBメモリを使ったのは、まだ「ATOK for Mac」がパッケージ販売されていた頃、インストール用のUSBメモリの空き領域を使って何かのファイルを移動したような、そんな記憶しかない。

SDカードはデジカメのために買った記憶もあるけど、確実に10年以上前のような気がする。

記録メディアの類を、緊急用ですら買わなくなって、久しいけど、ほんと困らないというか、必要性が全くない。


ちなみに作ったインストールメディアは、将来絶対に分からなくなる自信が有ったので、それぞれチャック付きの袋に、ラベルを貼って保管することにした。だけど、きっとこのメディアをどこに保管したのか分からなくなって、同じ物を作るんだろうなぁ…。

そして、もっと先の未来で、うっかり見つかって、「こんな容量じゃ使えねー」って言って捨てるんだろうなぁ…。

すべてのエンジニアは、機関車トーマスの『じこはおこるさ』を聞くべきではないか

大事なことが、全部ここに集まっている!

utaten.com

WEB+DB PRESS Vol.132 『オブジェクト指向神話からの脱出』は、長く生き残った技術テーマを振り返る良い特集

初めて「オブジェクト指向」というキーワードを聞いてからだいぶ長く経っていて、「これはオブジェクト指向らしいコードなのか?」みたいな見方をすることも無くなって久しい今日この頃ですが、WEB+DB PRESS最新号Vol.132 の特集が『オブジェクト指向神話からの脱出』という興味深いテーマだったので読んでみました。


そういえば、20世紀の終わりから21世紀の初めの頃にかけては、オブジェクト指向以外にも色々な開発方法論とそれを支えるツール群が出てきては消えていった時代だった記憶があります。今ではまったく聞くことも無い設計方法論や、ツールがソフトウェア開発の問題への画期的な解決策と宣伝されていました。

で、たいていそのツール費用が高額な上に、更にトレーニングを受けないと使いこなせないし、更にそのトレーニング費用が高額だった...印象。

あ、そういえば4GLと呼ばれる言語群も有りましたね。

個人的には、ソリューションとコンサルテーションを売りたいのかなぁ…本当に顧客が欲しかったものが巨大なツール群を使いこなすことで得られるのか……それよりビジネスロジックを実現する仕組みとコードを考える方に注力した方がいいんじゃないか?UMLを詳細に書いたからって、何にもわからないよなぁ…みたいなことを考えていました。


そんな色々な開発方法論のうち、プログラミング言語と密接に結びついて生き残ったキーワードの一つが「オブジェクト指向」ということでの特集。前半はプログラミング言語におけるオブジェクト指向機能のおさらい…カプセル化や、継承などの基本が解説されます。ここまでは機能の解説なので、良いも悪いも無い話。

第3章「オブジェクト指向の周辺技術」では、オブジェクト指向方法論、分散オブジェクト技術、オブジェクト指向データベースなどに話題が広がっていきます。過去の振り返り、という意味では非常に興味深い内容でした。

で、いよいよ第4章「オブジェクト指向機能の現在の使い方」から最後の第5章「オブジェクト指向言語の変化」と、特集の核心に進んでいきます。ここはぜひ読んでみてください。


と、ここまで読んできて、果たして現代に今からプログラミング言語を学ぶ人は「オブジェクト指向」という言葉にそこまで惑わされる場面があるのかなぁという疑問はちょっとあります。

古代、良い(と考えられる)ソフトウェア開発の概念に何でも「オブジェクト指向」というキーワードがくっついていた時代と違って、現代では一つのプログラミング言語や、開発方法論、ミドルウェアもさまざまな概念が混ざり合って実現されていて、あまり分かりやすいキーワードで説明しようとしても無理がある、というか、何も言ってない、みたいな場面が多くないですかね。

(特集の最後にもそういう話が書かれているんですけどね)

まぁ、とはいえ、完全に忘れ去られて、誰も使わなくなった開発方法論に比べれば現代においても、その概念がダイレクトに導入されているプログラミング言語が実用的に使われていて、こうやってその概念の実践について議論がされるだけでもイイ話だなぁと思った次第です。

というわけで、現代に生きる人は、過去に囚われ過ぎず、「今の課題」を解決するために必要なことを学び、実践していけばいいんじゃないかなーと思った次第です。というわけで、第4章、5章あたりを読んで、がんがんコードを書いていこーぜー!!


追記

そういえば、かつての定番のネタとしては、オブジェクト指向に入門するために、バートランド・メイヤーの「オブジェクト指向入門」を最初に買ってしまい、挫折する、というのがありましたよね。2冊ともずいぶん前に買って、未だに全部読んでない…

原題の「Object‐oriented software construction」を「入門」っていう書名にしちゃいけない気が…

あけましておめでとうございます 2023

あけましておめでとうございます

振り返ってみると、吉祥寺.pmの定期開催はキープしましたが、それ以外の活動が弱かったなーという反省。

kichijojipm.connpass.com

ブログのエントリはそれなりに書いていました。たまにブクマがたくさん集まって注目いただいているなーという嬉しさはありました。

b.hatena.ne.jp

2023年も引き続きよろしくお願いします

『ちょうぜつソフトウェア設計入門――PHPで理解するオブジェクト指向の活用』は、現代ソフトウェア開発の”知の高速道路”

予約してまで買ったものの、なかなか時間が取れず、読めていなかった『ちょうぜつソフトウェア設計入門――PHPで理解するオブジェクト指向の活用』をようやく読み終わりました。

筆者である田中ひさてるさん自身で描かれた表紙の可愛らしさからは想像もできないハードな内容なので、一気に読もうとすると「分かった気」になるだけで全然理解していなかった、ということになりがちなので、3回くらいぐるぐる読むといいと思います(そうです、この本は本文もイラストも丸っと同じ人が書いているのです!!)。

目次

目次の章立てを見ると、現代のソフトウェア開発で語られる概念がずらっと並んでいます。それぞれで1冊どころじゃない程の本が書かれてしまうテーマがずらっと並んでいますが、それらが分かりやすい語り口と共に解説されていきます。流し読みしていると、ほんと置いて行かれてしまうスピード感なので、一つ一つの記載について、自身の経験に照らし合わせて、過去のコードや、設計を思い出す、この本を読んだ上で今だったらどうするか考えてみる、という読み方をすると良いでしょう。

いや、もちろん途中で差し込まれる1コマのイラストだけ拾って読んでも全然いいんですけどね!!

この本の良いところは、それらの概念を盲信し、イタズラに完全な方法論だ!これで世界は完璧だ!と宗教じみたことを言うのではなく、「目の前の自分の課題を解決するために必用なところを取り入れて、上手く付き合っていくスタンス」も併せて紹介しているところに有って、そこが幅広いテーマを扱っているにもかかわらず、単なる知識の羅列になっていない、本書の凄いところです。例えば、UMLもばっさりとクラス図、インスタンス図、シーケンス図しか出てこないあたり、「そうだよねー感」が有ります。

アーキテクチャは動作には貢献しない」「4つの層にそうした名前を付けることをクリーンアーキテクチャと呼ぶと思わないように気をつけてください」「オブジェクト指向を定義することはできない」「データベースがSQLの言語仕様どおり動くかの検証は、データベースベンダがもう終わらせていますよね」......一番好きな言葉が並んでいるのは「第9章 アジャイル開発」ですが、そこはあまりに名言のオンパレードなので、実際に手に取って読んでみてください。

特に、「第3章 オブジェクト指向」は、最近の「オブジェクト指向は何か?」という話題を理解する上での一助になる記載がたくさん載っています。個人的にはこの本に出てくる「犬猫プログラム」は好きじゃない(自分が過去に混乱したから)のですが、それについても一つの考え方、見方が書かれていて、「なるほどなーそういう見方も有るかー」と感心しました。

あとタイトルに"PHP"とは出てきますが、それほどコード量は多くなく、あくまでさまざまなプラクティスを理解するための補助的な役割として出てくるので、PHPに不慣れな人でも大丈夫です(自分もPHPは全然読めないです)。


というわけで、まさにコンパクトな紙面(目次含めても311ページ)に現代のソフトウェア開発における概念が一通り、しかもその考え方に対する付き合い方、スタンスまで学べる上に、めもりーちゃん達のイラストまで堪能できるのはお得感満載ですね。

と言うわけで、この年末年始は”ちょうぜつ”にソフトウェア開発を学んで、知の高速道路の先へすっ飛んでいきましょう。

【追記】

なんかいい表現を見つけた。

ソフトウェアエンジニアに必要な資質の一つ目は「エラーメッセージが出たら、読んで理解しようとする姿勢」です

最近のプログラミング言語の傾向として、エラーメッセージを改善して、より分かりやすいメッセージが出力されるようになっていますね。

gihyo.jp

techlife.cookpad.com

上記は、PythonRubyの事例ですが、最近の言語はどれもエラーメッセージが親切になってきました。

それでも読まないのはなぜなんでしょうね…一番の近道だと思うんでけどね。

とはいえ、エラーメッセージを読むだけで解決するバグばかりでもないので、エラーが解決しない時にさっさと方向転換するのも大事な方針ですよね。

というわけで、ずっと同じことを繰り返し言っているような気もしますが、まずはこの3つから始めるといいんじゃないかなーって。

2022年の買った書籍

あれ!意外と少ない...けっこう同じ本を何度も読んでいるからかもしれない。