ブックマーク / blog.magnolia.tech (23)

  • WEB+DB PRESS Vol.136 最終号!---日本のソフトウェア技術を支えてくれた雑誌の休刊 - Magnolia Tech

    WEB+DB PRESS Vol.136 技術評論社Amazon 表紙に「最終号」と書かれているのが、ちょいと悲しい。 技術雑誌の存在ってなんだろうなと考えてみると、一つ一つの記事の深掘りは当然単行に比べると浅い。でもすべての技術にたいして専用の技術書が出る訳でもない中、ブログ記事などに比べると、編集者の目を通っていることと、一回あたりのページ数が少ない分だけ入りやすいことで重宝する。それに「今、こういう技術が話題になっているんだな」って、ざっと理解できるのも良い。目の前で使わない技術でも、いつか使う日がやってくる時に、「そういえば、ちょっと前に特集されていたなー」と思い出せるだけでも知識のインデックスとして有効に機能してくれる。 そんな雑誌が無くなってしまうのは、けっこう寂しいし、何か大きな穴が空いてしまった感じがする。でもそれを実感するのは今日・明日ではなく、ずっと先のことだと思うけ

    WEB+DB PRESS Vol.136 最終号!---日本のソフトウェア技術を支えてくれた雑誌の休刊 - Magnolia Tech
  • 『なっとく!関数型プログラミング』は読者の理解度の進捗を先読みして作り込まれた”プログラミング入門”の良書 - Magnolia Tech

    なっとく!関数型プログラミング 作者:Michał Płachta翔泳社Amazon 良い、買おう、読もう、(コードを)書こう、以上! めっちゃ良いですよ、この 中盤のプリミティブじゃやりづらい→直積→直和→二つ合わせてADT→値を取り出すためのパターンマッチの解説の流れの疾走感がいいですね— magnoliak🍧 (@magnolia_k_) 2023年8月6日 『なっとく!関数型プログラミング』は、2022年に出版された『Grokking Functional Programming』の邦訳版で、主にScalaを題材として関数型プログラミングを学んでいくための入門書("Grokking"は、完全に理解する、という意味)。あくまで関数型プログラミングの考え方、コードの書き方、良い設計の指針の解説が主眼に置かれているので、Scalaの言語機能の入門書ではない。Scalaの言語仕様を網羅

    『なっとく!関数型プログラミング』は読者の理解度の進捗を先読みして作り込まれた”プログラミング入門”の良書 - Magnolia Tech
  • 一家に一冊『詳解UNIXプログラミング 第3版』 - Magnolia Tech

    詳解UNIXプログラミング 第3版 作者:W. Richard Stevens,Stephen A. Rago翔泳社Amazon 先日、sambaのソースコードを読んだ話をブログに書いた。 blog.magnolia.tech その時に、傍に置いて参照したのが『Advanced Programming in the UNIX Environment』、邦題『詳解UNIXプログラミング 第3版』。 手元には10年前に買った原著しかなく、和訳の紙版を買おうとしたら、いつの間にかどこにも売られていなくなってしまっていた......電子書籍版は今でも入手できるけど、この手の定番書籍は紙で持っておきたいんだよなぁ。 内容は、Linuxmacos、FreeBSD、Solarisなどのシステムコールや、POSIX仕様と照らし合わせながら各OSの差異などがB5・896ページに渡って解説された凄まじい1冊

    一家に一冊『詳解UNIXプログラミング 第3版』 - Magnolia Tech
  • 『Linuxのしくみ』は、アプリケーションの向こう側を知るために読むべき - Magnolia Tech

    [試して理解]Linuxのしくみ ―実験と図解で学ぶOS、仮想マシン、コンテナの基礎知識【増補改訂版】 作者:武内 覚技術評論社Amazon 2022年も良い技術書がたくさん出版されましたが、その中でも『Linuxのしくみ』はぜひ手元に置いておきたい1冊ですね。 特に、主にアプリケーションレイヤーを主戦場としている人たちにとって、OSは各種ミドルウェアと比較すると「よく分からないもの」という存在になりがちです。しかし、OSがなければアプリケーションも動かないわけで、基的な知識としてこのに書かれているようなレベルのことを押さえておくと性能が出ない時に無闇に資源を増やす前に考えるべきことの気づきが得られます(無闇に資源を増やす、という選択肢が取れる時代になったのは、それはそれで良いことですが) 特に、前半のプロセス周りは、「sar」「taskset」など自分も今までちゃんと使ったことがない

    『Linuxのしくみ』は、アプリケーションの向こう側を知るために読むべき - Magnolia Tech
  • 「ベタープログラマ」を読んだ - Magnolia Tech

    原著が出てたときから割と気になっていた「ベタープログラマ」を読んだ。 全体的な感想 第Ⅰ部はコードスタイルや、不要なコードの存在、テストコードを書く話など、非常に実践的な内容が多かった。 第Ⅱ部は割と考え方というか、思想的な話になっていって、第Ⅰ部をきちんと読んで危機感を持って行動を変えられる人であれば自然とそこに到達するのでは?と思った。 まずは第Ⅰ部をしっかり読んで、自分の置かれた環境との差異や、これから行動することを書き出す、みたいな読み方をすると良い。 第Ⅲ部以降は、もう完全に生き方というか、エンジニアとしての振るまいや、哲学の話になってくるので、一気に通読する、というより少し間を置いて拾い読みしながら読み進めて行くと良いかも。 流し読みしても全然役に立たないタイプの内容なので、読書メモは必ず書いた方がいいと思うし、書かれていることが万人にとって正解、といった類いのものでもないので

    「ベタープログラマ」を読んだ - Magnolia Tech
  • 『チームトポロジー』と、『How Do Committees Invent?』を読み直して「コンウェイの法則」について考え直した - Magnolia Tech

    「コンウェイの法則」というのがある。 Melvin Conwayが『How Do Committees Invent?』という論文にて発表した考え方を指す言葉。筆者自身による論文の紹介文に書かれている、以下のくだりが端的にその内容を表している。 Any organization that designs a system (defined more broadly here than just information systems) will inevitably produce a design whose structure is a copy of the organization's communication structure. システムを設計する組織(ここでは情報システムだけでなく、より広い意味で定義する)は、必然的に組織のコミュニケーション構造をコピーした構造を持つ設計を

    『チームトポロジー』と、『How Do Committees Invent?』を読み直して「コンウェイの法則」について考え直した - Magnolia Tech
  • 紙の技術書を開いたままコードを書く時は、クラスプクリップがおすすめです - Magnolia Tech

    紙の技術書を開いたままの状態にして、参考にしながらコードを書きたい時ってありますね。ただ、を開いた状態にしておくのが結構大変です。ブックスタンドなどもありますが、けっこう大きいし、持ち運びには向いていないです。 そんな時には、ステンレス製のクラスプ クリップがおすすめです。ペンケースにも入るサイズなので持ち運びもできます。 (写真のは、最近読んでいる『Learning Go』です) 紙の質にもよりますが、150ページくらいまでは止めておけるし、それ以上のページになれば自重で全体は開いたままの状態になるので、めくれないように手前のページを数ページ軽く挟んで押さえておけばいいだけです。 一番大きなサイズでも275円なので、試しに買えるレベルなのもオススメの理由の一つです。 ステンレスクラスプ クリップ シンプル 書類 整理 オフィス 備品 Lサイズ ステンレス製 DAS-2501 スリッ

    紙の技術書を開いたままコードを書く時は、クラスプクリップがおすすめです - Magnolia Tech
  • 『システム運用アンチパターン ――エンジニアがDevOpsで解決する組織・自動化・コミュニケーション』は、誰が読み、実践すべきことが書かれているのか、その「誰」を考えながら読んでほしい1冊だった - Magnolia Tech

    システム運用アンチパターン ―エンジニアがDevOpsで解決する組織・自動化・コミュニケーション 作者:Jeffery D. SmithオライリージャパンAmazon いやー刺さりまくる名言のオンパレードみたいな1冊『システム運用アンチパターン 』。 こので最初に出てくる具体的な事例が「パターナリスト症候群」という内容なんですけど、これまでの技術書にありがちな「作業品質向上や、効率化のため」というより、組織のアジリティを下げてしまう「重い承認プロセス」を排除するために自動化しましょう、と言っているところが良い。 自動化をする理由が効率化とか、品質じゃなくて、重い承認プロセスを不要にするためである、というところが新しいし、アンチパターンに技術で立ち向かうところが、良い— magnoliak🍧 (@magnolia_k_) 2022年4月23日 なので、そもそも「承認プロセス」というのは何

    『システム運用アンチパターン ――エンジニアがDevOpsで解決する組織・自動化・コミュニケーション』は、誰が読み、実践すべきことが書かれているのか、その「誰」を考えながら読んでほしい1冊だった - Magnolia Tech
  • 「ログを出す!ログを読む!」エンジニア版ベストキッド…「syslogに出す! loggerで出す!」「ログレベルアップ!ダウン!アップ!ダウン!」 - Magnolia Tech

    エンジニア版ベストキッド 師匠 「ログを出す!ログを読む!」「syslogに出す! loggerで出す!」「ログレベルアップ!ダウン!アップ!ダウン!」 生徒 「クラウドネイティブなマイクロサービスの作り方を教えてくれる約束だ!」 プロダクション環境にて… 生徒「ログが…有る!これだ!」— magnoliak🍧 (@magnolia_k_) 2022年4月10日 ふとベストキッドの台詞を思い出して、雑に書いてみたけど、案外いいこと書いてるなーって自分でも思ってしまった。 loggerの使い方は入門書に載ってたり載ってなかったりするし、どんなタイミングでどんな情報をどこに出すべきか?みたいな話は一子相伝の秘伝の技みたいになりがちだし。 まさにそう思います。https://t.co/ZKTTtdwB1d— Hideo Fukumori (@hideo_fukumori) 2022年4月11日

    「ログを出す!ログを読む!」エンジニア版ベストキッド…「syslogに出す! loggerで出す!」「ログレベルアップ!ダウン!アップ!ダウン!」 - Magnolia Tech
  • 『ソフトウェアアーキテクチャの基礎 ―エンジニアリングに基づく体系的アプローチ』を読めばアーキテクトになれるのだろうか - Magnolia Tech

    ソフトウェアアーキテクチャの基礎 ―エンジニアリングに基づく体系的アプローチ 作者:Mark Richards,Neal FordオライリージャパンAmazon とても良いだ!アーキテクチャのパターンは体系的に整理されているし、アーキテクチャを議論する上で、共通の語彙となり得る用語を解説している(コンウェイの法則や、凝集度など)。 後半は、リスクや、チームビルディング、交渉術まで多岐に渡るトピックを網羅している。 必要なことは全部書いてある...けれど、なんとなく初めてPMBOKを読んだときに抱いた感想...読み始めてからすぐに「果たしてこのに書かれている通りの考え方に沿って振る舞えばアーキテクトになれるのか?」という気持ちになりはじめたところで1章の最後の方に出てくる「ソフトウェアアーキテクチャの法則」が出てきて、「そうだよなー」という気持ちに。 ソフトウェアアーキテクチャはトレード

    『ソフトウェアアーキテクチャの基礎 ―エンジニアリングに基づく体系的アプローチ』を読めばアーキテクトになれるのだろうか - Magnolia Tech
  • 『プロになるJava―仕事で必要なプログラミングの知識がゼロから身につく最高の指南書』は書名に偽りのない、全部入りの1冊 - Magnolia Tech

    プロになるJava仕事で必要なプログラミングの知識がゼロから身につく最高の指南書 作者:きしだ なおき,山 裕介,杉山 貴章技術評論社Amazon 予約していたので、早速届きました。 Javaを使ってプログラミングを学ぼうとする人は、とりあえずこれ買っておけばいいんじゃね?っていう全部入りの1冊ですね。 JDKのインストールから、IDE/REPLの使い方、基的な文法、エラーメッセージの読み方、オブジェクト指向、関数型プログラミング、各種ツールチェーン(ユニットテスト、ビルドツール、バージョン管理)と、全部入りの全部入り。 全般的に単なる文法の解説に終始せず、初学者がつまづきやすいところにページを割いているところが良くて、特に「最初からIDEを使う」と、「エラーが出ることと、その読み方を最初から書いていること」、「理解が難しそうな”ループ”の概念にフォーカスしていること」あたりは、上手

    『プロになるJava―仕事で必要なプログラミングの知識がゼロから身につく最高の指南書』は書名に偽りのない、全部入りの1冊 - Magnolia Tech
  • 書かれて、レビューされて、合意されたものが”決まったこと” - Magnolia Tech

    これ超大事 単にペラペラ喋っても、それはレビューできないんだよ 喋ってることってまとまっていないから ディスカッションはいいんだけどね ただ言っただけのことを「決め事」にするのはとても危険 https://t.co/DzASlZNqqs— magnoliak🍧 (@magnolia_k_) 2022年3月5日 「書かれて、レビューを受けて、合意されたものだけが決定事項だ」って言われた— magnoliak🍧 (@magnolia_k_) 2022年3月5日 「○○さんが言ってました」では決定事項であることの証跡にならないって— magnoliak🍧 (@magnolia_k_) 2022年3月5日 何を持って「決まったこと」とするか、その定義があいまいなまま進めると当たり前だけどロクなことが無い。 「仕様は○○です」と言っても、実はたまたま誰かが「こうしようかな」と呟いただけのことだ

    書かれて、レビューされて、合意されたものが”決まったこと” - Magnolia Tech
  • 抽象のための語彙を獲得するためにどんなことをすればよいのか、そして獲得した後にどんなことをすればよいのか - Magnolia Tech

    ビジネスロジックに抽象性を持ち込む場合、来のビジネス要求に存在しなかった抽象を示す語彙を新たに定義する必要が有り、「見知らぬ言葉」に最初は戸惑うのだけど、それが当に質を捉えた抽象であれば便利なのでビジネス側の人も使うようになる、とかなんとか— magnoliak🍧 (@magnolia_k_) 2022年2月12日 休日の午前中から、思考の訓練みたいなツイートが行き交って、考える良いきっかけになった。 つまり、抽象を持ち込む時に、それが質なのか、実装上の都合で持ち込まれたものなのかを区別しないといけない— magnoliak🍧 (@magnolia_k_) 2022年2月12日 「来のビジネス要求に存在しなかった抽象を示す語彙」がまさにユビキタス言語の候補になるものだと思いますし、設計の醍醐味でもあると思うんですよね— やきにく (@a_suenami) 2022年2月12日

    抽象のための語彙を獲得するためにどんなことをすればよいのか、そして獲得した後にどんなことをすればよいのか - Magnolia Tech
  • コードをどう読むか?という手法の定義も必要ではないか? - Magnolia Tech

    コードは書かれるための時間より、読まれるための時間が圧倒的に長いけど、ざっと構造を掴むために読む、特定の処理に特化して読む、データベースなどの変更の影響を確認するために使ってるところだけ読む、と言ったさまざまな読み方があり、その種類は全部で1000を超えるという— magnoliak🍧 (@magnolia_k_) 2021年12月15日 最後オチっぽく書いたけど、必ずしも人間だけが読むわけではないって意味ではほんとコードが読まれる、と言っても色々な意味が有って、リーダブルコード的な価値観以外にも観点があるんじゃないかって思った— magnoliak🍧 (@magnolia_k_) 2021年12月15日 なんとなくコードを眺める、ということはあまりなくて(絶対にないわけじゃないけど)、一定の目的を持って読まれることがほとんどだと思われるけど、意外とこの「どう読むか?」という行為が言語

    コードをどう読むか?という手法の定義も必要ではないか? - Magnolia Tech
  • 『良いコード/悪いコードで学ぶ設計入門 ―保守しやすい 成長し続けるコードの書き方 』と、『プロになるJava―仕事で必要なプログラミングの知識がゼロから身につく最高の指南書』を注文した - Magnolia Tech

    良いコード/悪いコードで学ぶ設計入門 ―保守しやすい 成長し続けるコードの書き方 作者:仙塲 大也技術評論社Amazon プロになるJava仕事で必要なプログラミングの知識がゼロから身につく最高の指南書 作者:きしだ なおき,山 裕介,杉山 貴章技術評論社Amazon 続けて2冊、今までとはちょっと違う感じのコードに関するが出版されるというので、両方注文した。 楽しみだ。 前者は、いつもクソコード動画で私たちを楽しませてくれる、ミノ駆動さんの作、ということで期待大。 後者は、Javaに精通した、きしだ なおきさん、山 裕介さん、杉山 貴章さんの三人の共著ということで期待大。 speakerdeck.com さっきまで前者と後者が逆だった...ご指摘ありがとうございました>ちゃちいさん 追記: 最近の、きしださんのオブジェクト指向に関する一連のツイートはとても興味深い。だから買ってみ

  • ドキュメントを書いて維持するのが何故こんなに大変なのか - Magnolia Tech

    ドキュメント書くのが面倒だっていう問題、コードを書く前に書かれるドキュメントがその目的がコードを適切に書かせるためだとすると、その後の維持メンテで必要かつ最小限の範囲からすると必ず過剰になっちゃうんだよね コードできあがると「コード読めばいいじゃん」って部分まで残るから— magnoliak🍧 (@magnolia_k_) 2021年11月11日 でも検討の経緯とかは残ってほしくて、でもそのためにわざわざまたドキュメントの全体構造を見直すこともできないしっていう— magnoliak🍧 (@magnolia_k_) 2021年11月11日 コードの複雑さを分かりやすく要約して理解しやすくする為にドキュメントを書くんだからコード以上に難しくなるのは当たり前なんだよね 経緯も書いたら時系列が必要になるし 扱ってる領域が広さ的にも時間軸的にも違うんだよなーって思った— magnoliak🍧

    ドキュメントを書いて維持するのが何故こんなに大変なのか - Magnolia Tech
  • なぜデータモデルをきちんと考えないといけないのか - Magnolia Tech

    データモデルを作るっていうのは、別にデータベース設計をするだけじゃなくて、アプリケーションコードの中でどんな処理フローになるかを考えて、それに適したモデルと、その引き回しの指針を決めることなんだよね そうしないと知らないオブジェクトがどんどん増えていく— magnoliak🍧 (@magnolia_k_) 2021年11月20日 「必要だから作った」データ構造のためのオブジェクトがそこらじゅうに溢れかえると、コードはデータ構造の詰め替えばかりになってしまう その場その場で最小のコード量にしようと思ってボトムアップ的に作り上げていくとそんなことが起きる— magnoliak🍧 (@magnolia_k_) 2021年11月20日 モデルを作ることで… 1. ギョームヨーケンと実装詳細を”なるべく”引き離すことができる 2. 場当たり的なデータ構造が散らかるのを防ぐ 3. 作る過程において

    なぜデータモデルをきちんと考えないといけないのか - Magnolia Tech
  • 見通しの悪いコードができあがってしまう、その理由 - Magnolia Tech

    クソコードができあがるのは「影響の及ぼすコンポーネント量を最小にする」という個別最適の価値観が支配的になった時、です 影響の及ぶ範囲を小さくするために、巨大で複雑なコードの塊を一箇所に追加し始めたりするのです そうした方が関心の範囲が限定できるから...だけど、全体最適ではない— magnoliak🍧 (@magnolia_k_) 2022年3月12日 でも悪気はないんです 真面目に巨大で見通しの悪いコードを作り上げていくけど、影響範囲が最小になる方が常に正しい、という価値観は「わかりやすい」んですよ— magnoliak🍧 (@magnolia_k_) 2022年3月12日 「変更量が最小になる」「影響が最小になる」...目の前のタスクをこなすためには、それが一番良いことに見えるんですよね でも、「継続的に同じペースが保てるか?」「スケールするか?」というと、そんなことは無いけど、そ

    見通しの悪いコードができあがってしまう、その理由 - Magnolia Tech
  • ドメイン知識を隠すコード、隠さないコード - Magnolia Tech

    2021/12/20追記 指摘されて気づいてしまいましたが、間違ってますね... 以前スライドを書いた時に全然気づいていませんでした 反省のために消さずに、取り消して残しておきます 「年齢計算ニ関スル法律」という法律がある。 明治三十五年法律第五十号(年齢計算ニ関スル法律) | e-Gov法令検索 とても短い法律で条文は3つしかない。 ① 年齢ハ出生ノ日ヨリ之ヲ起算ス ② 民法第百四十三条ノ規定ハ年齢ノ計算ニ之ヲ準用ス ③ 明治六年第三十六号布告ハ之ヲ廃止ス ポイントは①で、生まれた日から起算するので法律上は1年が経過した時に1つ歳を取ることになる。つまり、誕生日の前の日の24時に年齢が加算されるので、日単位でみると誕生日の前の日にもう年齢は進んでいる、ということになる。 同じ年の4月2日生まれの人と、4月1日生まれの人とでは小学校に入学する年度が違う、というのはよく聞く話だと思う。 この

    ドメイン知識を隠すコード、隠さないコード - Magnolia Tech
  • 定期的に知識をリフレッシュする - Magnolia Tech

    IT系に身を置いていると、つい新しい知識ばかりを追いかけがちになるけど、CS的な基礎知識や、Linuxのコマンドとかの(もちろんソラでコマンド10個のオプションを言える必要は、無い)も当然大事なわけです。というか、土台となる知識が無いと、新しい知識がちゃんと身につきません。 だけど、普段使わない、手を動かさない分野のスキルはどんどん忘れていきます。歳をとると加速度的に忘れていきます。 そしてヤバいのは、分かっていることと、分かっていないこと、できること、できないことの区別がつかなくなることです。 人は分かる範囲でしか物事を理解しないので、「分かっていないことを知る」という行為を行なって「分かる範囲」を広げる、または最低でも維持する営みを続けていかないとどんどん判断する時に必要な材料が狭まっていきます。 Java 1.5の知識で、Java17時代の判断はできないですよね、10倍以上違うんだか

    定期的に知識をリフレッシュする - Magnolia Tech