タグ

programmingとdesignに関するch1248のブックマーク (37)

  • 同じ5行のコードが全く違って見える12の瞬間、なぜ私たちは学ぶのか?

    最近、ふとした気づきがありました。 それは、「同じものを見ていても、過去と現在の自分では見えている世界がまったく違っている」ということです。 みなさんには、このコードからどんな世界が見えますか? async function getUserName(userId) { const response = await fetch(`https://api.example.com/users/${userId}`); const user = await response.json(); return user.name; } はじめに こんにちは、株式会社ココナラ在籍のKです。 記事では、冒頭の5行のコードを通して、私たちが学ぶ理由について考えてみたいと思います。 TL;DR 同じコードを見ても、人によって見えるものが違っている 学習を重ねることで、それまで見えなかった世界が見えてくる 学習

    同じ5行のコードが全く違って見える12の瞬間、なぜ私たちは学ぶのか?
  • コードの寿命・データの寿命・互換性の寿命

    これを記事にしている 2025 年 5 月の二年ほど前 (2023-06-02) に、縁あって明治大学 情報科学科での特別講義 [1] を担当させてもらいました。 身内の評判は悪くなかったのでスライドは公開していたんですが、単に Google Slides を公開状態にしただけだったんですね。 [2] これではあとから参照・引用するのも難しく、ちょっともったいないかと思ったので、いまさらながら記事の形でまとめなおしておくことにしました。 一年も経てば情報が古くなってしまうコの業界です。賞味期限切れの話もあると思いますが、話のネタにでもしてもらえれば幸いです。 講義の対象と目的 この講義、目的は2つあって、まず「最新の情報科学トピックに触れる」こと。 それから、就職活動が始まる3年生がメインの対象者なので、 今後のキャリアプランとか人生指針に関するいろいろな視点を持ってもらうことです。 この

    コードの寿命・データの寿命・互換性の寿命
    ch1248
    ch1248 2025/05/23
    すごく良い教材だ。
  • 「クラス設計の鉄則」執筆ノート - ソフトウェア設計を考える

    『Software Design 5月号』の第2特集「クラス設計の鉄則」を寄稿しました。 gihyo.jp 第2特集の概要と、今回はとりあげなかった、SOLIDGoFデザインパターン、凝集度と結合度について、私がどう捉えているかを説明します。 概要 第2特集のクラス設計の鉄則は3章で構成されています。概要は次の通りです。 第1章:クラス設計再入門 モジュール性・関心の分離・依存関係を意識する 第2章:迷わないクラス設計の指針 アプリケーション開発の実践例から考える現代的な設計方針 第3章:設計の落とし穴対策 コードから問題を検知する着眼点と改善方法 第1章:クラス設計再入門 この章は、クラス設計の基礎として、ソフトウェア設計の三つの視点を紹介しています。 ソフトウェアシステム構築の基課題として「複雑さ」と「変更容易性」に焦点を合わせ、二つの課題に取り組むための考え方として、「モジュール

    「クラス設計の鉄則」執筆ノート - ソフトウェア設計を考える
    ch1248
    ch1248 2025/04/23
    SOLID原則とGoFがこのように言われる日が来て、若干の感銘がある。買ってみるか。
  • Claude Codeが最高のバイブコーディングツールすぎる|shi3z

    Vibe Codingという概念が爆誕している。 2月頃にAndrej Karpathy氏がx.comでポストしたことをきっかけに、この言葉が急速に広まった。 There's a new kind of coding I call "vibe coding", where you fully give in to the vibes, embrace exponentials, and forget that the code even exists. It's possible because the LLMs (e.g. Cursor Composer w Sonnet) are getting too good. Also I just talk to Composer with SuperWhisper… — Andrej Karpathy (@karpathy) February

    Claude Codeが最高のバイブコーディングツールすぎる|shi3z
    ch1248
    ch1248 2025/03/15
    同感。LLMは「人間の作業をやってくれるツール」ではなく、「超優秀な人間作成ツール」なんじゃないかと思えてきた。
  • 午前中に読み始めたら午後には設計が上達してしまった! - 『Tidy First?』を読んだ - Mitsuyuki.Shiiba

    私の目標は、読者が午前中に書を読み始めたら、午後には設計が上達していることだ。 当にそのとおりだった。読んでる途中で既に自分の設計に対する考えが良い方向に変わってると感じた。とても良かった。おすすめです。 『Tidy First?』 をいただいて読んだ。昨日(2024年12月25日)発売。英語版が2023年11月28日発売だから、たった1年で日語版が出たということだな。うれしい!はやい!ありがたい! ソフトウェア設計に焦点を当てたシリーズの最初の1冊ということで、サブタイトルに「個人で実践する経験主義的ソフトウェア設計」とあるように、1人でできる種類のソフトウェア設計について書かれている。続刊ではチームについての話になる予定のようで、それも今から楽しみ。 2周読んだ なんとなく2周読もうと思ってそうした。 1周目は細かい部分は気にせずにざーっと1,2時間くらいで読んだ。全体的にどうい

    午前中に読み始めたら午後には設計が上達してしまった! - 『Tidy First?』を読んだ - Mitsuyuki.Shiiba
  • 2024年末にデザインパターンについて考える - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? Futureアドベントカレンダーの3日目のエントリーです。昨日は@yamat2667さんのFlutterの記事でした。 デザインパターンというと、普段のプログラミングから一歩踏み込んで設計力を上げたい人が履修すべきコンテンツのように思われているようなツイートなりを見かけます。オブジェクト指向言語全般に使える知識だ、とか、開発者同士のコミュニケーションに使えるぞ、とか、コードの質が上がるぞ、とか。 一方で、パターンを詰め込もうとすると逆にコード量が増えて、パターン由来の変なクラス名が増えたりして、設計が歪むぞ、というのも当初から言われてき

    ch1248
    ch1248 2024/12/03
    ためになる。2000年後半時点でも「場当たり的」「体系的ではない」という批判があった記憶。
  • データベース中心の設計になってしまう問題と闘う - laiso

    『手を動かしてわかるクリーンアーキテクチャ 』の第二章の冒頭に登場する話題に共感したので紹介。 従来の多層アーキテクチャでは、データベースを中心にアプリケーションの 開発が行なわれます。この場合、Web 層はドメイン層に依存し、ドメイン層は 永続化層、つまり、データベースに依存することになります。そうなると、す べてのものは永続化層上に構築されることになり、その結果、いくつかの要因 が絡まり合って、問題が起きやすくなります。 手を動かしてわかるクリーンアーキテクチャ ヘキサゴナルアーキテクチャによるクリーンなアプリケーション開発 20p 手を動かしてわかるクリーンアーキテクチャ ヘキサゴナルアーキテクチャによるクリーンなアプリケーション開発 作者:Tom Hombergs,須田 智之インプレスAmazon 著者によれば、機能開発をデータベース中心に設計すると、ドメイン層と永続化層の密結合が

    データベース中心の設計になってしまう問題と闘う - laiso
    ch1248
    ch1248 2024/08/11
    2回実装、なるほど。書籍の方に興味が出た。
  • 目的を規定せずにモデリングを考えても意味がない - きしだのHatena

    オブジェクト指向のでは「自転車をモデリングしてみましょう」「鳥をモデリングしてみましょう」ということが、どういうシステムで使うか規定せずによく書かれています。 けれども、モデリングではどういうシステムで使うかということが大事で、それを決めずにモデリングを考えても意味がありません。モデリングすべきはモノではなくシステムのプロセスです。 よく、オブジェクト指向では現実をモデリングするのようなことが言われますね。 例えば鳥が鳴くとして、その一種であるニワトリをどうモデリングするか、ということを考えるとします。 そうすると、まず void 鳴く() { print("コケコッコー"); } のようなメソッドを考えるのですけど、コケコッコーとうまく鳴けるのは鳴き慣れたニワトリです。そのため、鳴くメソッドにカウンターを用意してどんどんうまくコケコッコーになるようにしたくなります。 いや、そもそも、コ

    目的を規定せずにモデリングを考えても意味がない - きしだのHatena
    ch1248
    ch1248 2024/04/14
    その通りだし、端的に必要な話題がまとめられている。
  • ソフトウェア設計・アーキテクチャの学び方 - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? はじめに この記事はHow to Learn Software Design and Architecture | The Full-stack Software Design & Architecture Mapを翻訳したものです。 翻訳がおかしい箇所などあればご指摘頂けるとありがたいです。 元記事の著者: Khalil Stemmler(@stemmlerjs) 設計、アーキテクチャ、フロントエンド、ブロックチェーンに興味ある方是非Twitter(@show_clements)フォローしていただけると嬉しいです! 設計に関する記事

    ソフトウェア設計・アーキテクチャの学び方 - Qiita
  • 今さら聞けないログの基本と設計指針 - Qiita

    ログの出力場所 ログは、開発者や運用担当者が見つけやすい箇所に出力することを原則としましょう。ファイルに出力する場合は、logディレクトリなどを作成しておくことをお勧めします。基的に、出力先は以下の4つが想定されます。 ・ファイルに出力する コンソール外で起動するアプリケーションに使用される方法です。 ・標準出力 コンソールから起動するアプリケーションで使用されます。途中経過などを出力するための出力方法です。 ・外部ログ管理ツールのファイルに出力 外部のログ管理ツールを用いることが可能な場合は、専用のログ記録場所に出力することを推奨しています。 ・外部システムへ出力 開発者・運用者の作業やコミュニケーションを円滑に行うために、Slackなどのチャットツールに出力するケースもあります。ただし、稼働率に注意する必要があり過度なログの出力は控えるようにしましょう。 基的に、外部ログ管理システ

    今さら聞けないログの基本と設計指針 - Qiita
  • [Rust] モジュールのベストプラクティス

    Rust のモジュールシステムは私の知る中でもトップクラスによくできた仕組みだと思います。特にリファクタリングによってモジュールを再構成するときのやりやすさは他の言語では経験できないものです。例えばそれなりの規模の Python プロジェクトを回帰バグを導入せずにモジュール構造のリファクタリングするのは不可能に近いですが、 Rust ではそのような不安を覚えたためしがありません。 Rust のモジュールシステムがどういうものかは、 The book にも書かれていますし、すでに大量のガイドが書かれていると思います。しかし、どのように使うべきかについては意外なほど情報が少なく感じます。 ベストプラクティスというのもおこがましいですが、数年使ってきて Rust のモジュールシステムを使う上でスムーズに感じる方法をまとめておきたいと思います。 Rust のモジュールシステム 稿の主題はモジュー

    [Rust] モジュールのベストプラクティス
  • "The Essence of Software"が提唱する全く新しいソフトウェア設計の考え方|Idein株式会社

    (6/22 注:書き足りないと思っていた箇所を補って加筆修正しました) エンジニアのbonotakeです。Ideinに入ってかれこれ3年以上経ちますが、Ideinでブログ記事を書くのは初めてです。 今日は、ソフトウェア設計の全く新しい考え方について書かれた "The Essence of Software" というの紹介をしたいと思います。 このの著者はMIT教授でソフトウェア工学の世界的な研究者であるDaniel Jacksonです。形式手法Alloyの発明者、と言ったほうが通じる人には通じるかもしれません。形式手法とは、ありていにいえば、数理論理学を駆使してソフトウェアに潜むバグを論理的に駆逐する手法です。 (個人的な宣伝ですが、彼の書いたAlloyのを以前翻訳して出版しました。) そんな彼が昨年11月に新著を出版したというので、ほぼその日に買いました。……ですが、を開いてみる

    "The Essence of Software"が提唱する全く新しいソフトウェア設計の考え方|Idein株式会社
    ch1248
    ch1248 2022/06/22
    共感できる。正しいUXのセットを用意した上で、それに沿って開発するのはconcept designの一種ということかな。
  • Value Objectについて整理しよう - Software Transactional Memo

    Value Objectとは何であるか? マーチン・ファウラーのPatterns of Enterprise Application Architecture(PofEAA)やエヴァンス・エリックのDomain Driven Design: Tackling Complexity in the Heart of Software(DDD)が原典であるが、PofEAAではこう切り出している。 When programming, I often find it's useful to represent things as a compound. プログラミング時は物をcompound(合成物)として表現すると便利なことがしばしばある。 例えば2次元空間上での座標のように複数のメンバ(属性)を持つ物は便利である、と。しかしそれらを比較する方法は一意ではない、そこで Objects that a

    Value Objectについて整理しよう - Software Transactional Memo
    ch1248
    ch1248 2022/05/15
    同意。俺も一時期「全てをオブジェクトにした方がいいのか?」みたいな状態にはなってたが、YAGNI原則適用でいいよねと思う。
  • ソフトウェアの複雑さに立ち向かう1つの哲学 :『A Philosophy of Software Design』 を読んだ - こまぶろ

    あけましておめでとうございます、になるはずだったのですが、後から読んだ『Googleのソフトウェアエンジニアリング』の方を先に記事にしたので新年2目の更新です。 ky-yk-d.hatenablog.com さて、題。最近のお気に入りポッドキャストであるe34.fmで激賞されていた『A Philosophy of Software Design』を読みました。初版は2018年に出ていて、今回は2021年に出た第2版を読みました。 スパゲッティコードを想起させる装丁 A Philosophy of Software Design, 2nd Edition (English Edition) 作者:Ousterhout, John K. Amazon scrapbox.io どんな? 書籍のテーマはソフトウェアの複雑さです。複雑さとは、システムを理解したり変更したりするのを困難にさせるも

    ソフトウェアの複雑さに立ち向かう1つの哲学 :『A Philosophy of Software Design』 を読んだ - こまぶろ
    ch1248
    ch1248 2022/01/05
    大変興味深い話だった。細かく分けるにしても、それらの統括のための複雑さも厄介だからなあ……。
  • クソコード動画「Userクラス」で考える技術的負債解消の観点

    2021/04/10開催 Developer eXperience Day 2021 「クソコード動画『Userクラス』で考える技術的負債解消の観点」の解説資料です。 https://dxd2021.cto-a.org/program/time-table/b-3 クソコード動画はこちら …

    クソコード動画「Userクラス」で考える技術的負債解消の観点
    ch1248
    ch1248 2021/04/10
    ミノ駆動氏のスライド。モデリングとドメインについて。
  • ひどいコードをメンテしてきたからこそ実感する、良いコードや良い設計の大切さ - give IT a try

    はじめに 先日、社内で「良いコードの書き方やお作法、プログラミングの原則って、どうやったら身に付くんだろうねえ?」という話になりました。 もちろん、「を読んで勉強する」っていのも勉強法のひとつなんですが、そもそも、もっと強烈なモチベーションがないと、必死になって良いコードの書き方やプログラミングの原則って勉強できないのでは?なんて思ったりします。 強烈なモチベーションというのは、たとえば、 いったい何なん!?このスパゲティコードは!!! なんでこんなコードを俺がメンテしなきゃあかんの!!?? あ~、もう最悪や!!俺はこんなコード、絶対に書かへんぞ!!!! っていうぐらいのモチベーションです。 というか、これは単純に僕のケースですね、はい。 幸い、ソニックガーデンに入ってからは、周りのプログラマがみんなちゃんとしているので、そんな思いをすることはほぼなくなりましたが、前職、前々職ではそんな

    ひどいコードをメンテしてきたからこそ実感する、良いコードや良い設計の大切さ - give IT a try
    ch1248
    ch1248 2019/12/05
    良記事。
  • 一時期プログラミングのデザインパターンというものが大流行しましたが、現在ではどのように評価されているのでしょうか?

    回答 (4件中の1件目) 一般的にどう評価されているかは、あまり存じ上げないですが、パターンの多くは、もはやあたり前に存在するという印象です。また、意識しなくても実は使っているというケースも多いです。 それと、自分が何気なく実装したものが、実はどれかのパターンに該当するということも多いですね。 GoFのデザインパターンについての解説の多くがオブジェクト指向を前提としているため、例えば関数型言語のHaskellなどでは使えないパターンもあります(例えばSingletonパターンとか) あとは、クラス名とか型の名前をつけるときの参考になります。例えばStrategyパターンを使っている...

    一時期プログラミングのデザインパターンというものが大流行しましたが、現在ではどのように評価されているのでしょうか?
    ch1248
    ch1248 2019/03/25
    同意。そして毛の壁批判批判ブックマーカーの出所の怪しさよ。
  • MVC→MVP→MVVM→Fluxの実装の違いを比較してみる

    iOSDC 2017 9/17 13:50 TrackB https://iosdc.jp/2017/node/1396 iOSDesignPatternSamples https://github.com/marty-suzuki/iOSDesignPatternSamples Flu…

    MVC→MVP→MVVM→Fluxの実装の違いを比較してみる
    ch1248
    ch1248 2017/09/19
    Fluxは初めて聞いた。
  • 単一責任の原則(SRP)についての見解と方法論 - FLINTERS Engineer's Blog

    こんにちは@kimutyamです。 今週末はいよいよScalaMatsuri2017ですね。 弊社は、今年も将軍スポンサーとして参加させていただきます。 そして今年も同人誌を配布させていただきます。 同人誌については去年配布した話を杉谷がブログで紹介しております。 labs.septeni.co.jp 今年の同人誌目次は以下となります。 ScalaAndroidアプリ開発 単一責任の原則(SRP)についての見解と方法論 末尾再帰の呼び出し最適化の有無によるScalaコンパイラの挙動について Akka HTTP で LINE bot を作ってみました 新卒scalaエンジニアが書くISUCONの歩き方 去年に比べて記事数は少なめですが、内容は濃くなっております。 ちなみに私は弊社の今泉と一緒に『単一責任の原則(SRP)についての見解と方法論』を執筆しました。 (Scala関係ないw) 代わ

    単一責任の原則(SRP)についての見解と方法論 - FLINTERS Engineer's Blog
  • エンジニアが知っておいて損は無さそうなISOの標準規格たち - Qiita

    「それ○○で標準化されているよ」って指摘されることほど、エンジニアにとっての屈辱は無いですよね。 ということで、世間知らずだと思われないためにも、手始めにISO縛りで有益そうな標準規格1をまとめてみました。 ちなみに、ISOとは…? 国際標準化機構(International Organization for Standardization)は国際規格を策定する世界最大のボランタリーな開発組織で、国家間に共通な標準を提供することによって、世界の貿易を促進することに貢献している という組織だそうです。 (どう考えてもIOSと略すべきだと思うのですが、ISOになった理由は諸説2あるようです。) コード体系 ISO 639 (言語名コード) 例: 日語 = ja, jpn 朝鮮語 = ko, kor 中国語 = zh, zho, chi, zho ドイツ = de, deu, ger, deu

    エンジニアが知っておいて損は無さそうなISOの標準規格たち - Qiita