タグ

プログラミングに関するpmintのブックマーク (282)

  • 脳に収まるコードの書き方

    ソフトウェアは複雑さを増すばかりですが、人間の脳は限られた複雑さしか扱えません。ソフトウェアが思い通りに動くようするには、脳に収まり、人間が理解できるコードを書く必要があります。 書は、拡張を続けても行き詰ることなくコードを書き、複雑さを回避するための実践的な方法を解説します。最初のコードを書き始めるところから機能を追加していくところまでを解説し、効率的で持続可能なペースを保ちながら、横断的な問題への対処やトラブルシューティング、最適化を行なう方法を説明します。自分のチェックリストからチームワーク、カプセル化から分解、API設計から単体テストまで、ソフトウエア開発の重要な課題に対する考え方やテクニックを紹介します。サンプルプロジェクトで使うコードは、Gitリポジトリの形で入手でき、試しながら学べます。 有効に機能するプロセスを選び、効果のない方法論から脱却する方法。チェックリストを使うこ

    脳に収まるコードの書き方
    pmint
    pmint 2024/05/27
    ボブおじさんの名前があると思ったら前書きだけだった。よかった。と思ったら、前著でSOLID原則取り上げてるわ。https://www.amazon.co.jp/dp/4839983062/ 目次を見てもタイトル詐欺っぽいし。
  • https://twitter.com/search?q=%E3%82%AF%E3%82%BD%E3%82%B3%E3%83%BC%E3%83%89

    pmint
    pmint 2023/12/28
    「クソコード」を語る人たちは大体ダメな意識高い系の人って感じ。じゃあこの人たちがどんなコードが書けるかっていうと、短さ(シンプル笑)や変数名(自然な英語笑)にこだわった独りよがりなクソコードで。
  • 『関数・変数・機能に対する名付け方は“理解の試金石” まつもとゆきひろ氏が、プログラミングで名前が大事だと思う理由』へのコメント

    テクノロジー 関数・変数・機能に対する名付け方は“理解の試金石” まつもとゆきひろ氏が、プログラミングで名前が大事だと思う理由

    『関数・変数・機能に対する名付け方は“理解の試金石” まつもとゆきひろ氏が、プログラミングで名前が大事だと思う理由』へのコメント
    pmint
    pmint 2023/08/17
    この反応を見ると「名前が大事」よりも「名前を考えると理解が深まる」「命名は勉強」って言ったほうがいいかも。名前の出来はどうでもいい。/ 仕様書と揃えるのは正解。今はUTF-8の時代、かな漢字の変数名を使う。
  • 関数・変数・機能に対する名付け方は“理解の試金石” まつもとゆきひろ氏が、プログラミングで名前が大事だと思う理由 | ログミーBusiness

    プログラマーで最も有名なRubyの生みの親まつもとゆきひろ氏:ご紹介に与りました、まつもとゆきひろです。裏番組もおもしろそうなんですけれども(笑)、こちらに来ていただいてありがとうございます。何人ぐらい来てくれているのかな? まぁいいや。 今日はですね、「プログラミングのことわざ〜Rubyの父が語る教訓と知恵〜」というタイトルでお話しします。 まつもとゆきひろです。こんな感じのアイコンで活動していますけれども、Rubyを作った人として知られています。インターネットではひらがなです。ちょっと差別化しようと思って、大学生の頃からインターネットで活動する時には、ひらがなで名乗ると決めています。 海外の人とやり取りする時は、あだ名を作ってニックネームで呼んでもらっています。海外の人ってわりとファーストネームで呼びたがるのですが、「ゆきひろ」とか呼ばれるとちょっとドキドキするので、Matzとい

    関数・変数・機能に対する名付け方は“理解の試金石” まつもとゆきひろ氏が、プログラミングで名前が大事だと思う理由 | ログミーBusiness
    pmint
    pmint 2023/08/17
    実引数と仮引数、コンストラクター引数とクラス名、同じスコープ内の変数名など、名前の関連が適切か、で理解度を確認できる。コードを書いてる最中に名前変更したくなるのは、理解が進んだ証拠。
  • SQL Chat

    Chat-based SQL Client and Editor for the next decade

    pmint
    pmint 2023/07/17
    レガシーな言語をAIで置き換え。
  • 6月新刊情報『プログラミング文体練習』

    『プログラミング文体練習 ―Pythonで学ぶ40のプログラミングスタイル』 Cristina Videira Lopes 著、菊池 彰 訳 2023年6月14日発売予定 316ページ(予定) ISBN978-4-8144-0022-5 定価3,300円(税込) レーモン・クノーの『文体練習』から着想を得て執筆された書は、1つの課題を異なるプログラミングスタイルで実装し、さまざまなスタイルの特性やスタイルが生まれた歴史的経緯などを解説します。家の『文体練習』は、「バスの中で起きた諍いと、その張人を後で目撃した」という内容を、公的文書風、宣伝風、業界用語風など、99の異なる文体で表現したものですが、書は、「単語の出現頻度をカウントして多いものから出力する」という課題を、40のスタイルで実装しています。リソース制約が大きかった時代の方法から、オブジェクト指向、純粋関数型、リフレクション

    6月新刊情報『プログラミング文体練習』
  • 「良いコード」を書くために意識している17のTips まとめ

    この記事について 私はWeb基盤を提供している企業でWebアプリケーションエンジニアをしています。 インフラや顧客基盤など複数のバックエンドAPIが動いており、それらを結合したアグリゲーション(BFF)の作成とフロントエンドの実装を担当することが多いです。 言語はTypeScriptとC#を選択する事が多く、フロントエンドではReact.jsとVue.jsを使用しています。これらをコンテキストとして私が「良いコード」を書くために日頃意識しているTipsを投稿していきます。 やらないこと インデントを揃える、命名基礎、アクセス修飾子などの基礎的な内容は割愛しています。 コードはTypeScriptで書いています。ですが特定の言語に特化した内容にはしていません。 プログミング全般に掛かかった内容であり、フロントエンドやバックエンドなど特定のレイヤーに特化した内容にはしていません。 良いコードと

    「良いコード」を書くために意識している17のTips まとめ
    pmint
    pmint 2022/11/22
    「インターフェース挟めば疎結合」は嘘くさいので言わないほうがいい。SOLIDのDは誤り。高凝集・疎結合なコードはすなわち、コピペしやすいコード。探して読んで切り取る行為。指標がないと評価もできず迷走するだけ。
  • 本の紹介『読みやすいコードのガイドライン』 - ソフトウェア設計を考える

    はじめに 良いです。コードを書く人であればだれでもが気づきと学びがあるでしょう。 特に、コードの規模が大きく長期間にわたってさまざまな関係者が読むことになるプログラムを書く人にはぜひ読んでほしいです。 gihyo.jp このから学べるのは、どちらかというと「やり方」よりも「考え方」です。 書き方の具体例というよりは、良いコードを書くための考え方を、著者の知見に基づいて丁寧かつ具体的に説明しています。 別の言い方をすると、とにかくコードの具体例で「やり方」を覚えたい、という人には合わないかもしれません。 コードの具体例もたくさん登場しますが、それは「考え方」を説明するための例であって、コードの書き方のお手やサンプルを集めたではありません。 サンプルコードはKotlinです。内容は、どちらかといえばユーザーインタフェースよりという印象です。しかし、Kotlinを知らなくてもほぼ問題な

    本の紹介『読みやすいコードのガイドライン』 - ソフトウェア設計を考える
    pmint
    pmint 2022/10/28
    良いコードは結局「コピペしやすいコード」なので、それにつながるかを確認しながら読むといい。実用主義のコード作法になる。
  • ブレンドモード - Wikipedia

    ブレンドモード(またはレイヤーの合成モード、描写モード)とは、デジタル画像編集およびコンピュータグラフィックス(CG)の分野において、2つのレイヤーが互いにどのように合成されるかを決定するための設定である。 解説[編集] ほとんどのアプリケーションのデフォルトのブレンドモードは、単に上のレイヤーで下のレイヤーを覆い隠すというものである。一方で、2つのレイヤーをブレンドするブレンドモードがたくさん用意されている。それぞれの「レイヤー」の画像を構成するピクセルの一つ一つが、RGB値(カラーチャンネル)やアルファ値(アルファチャンネル)などを表す数値を持っており、それに応じて適切なブレンド方式を使い分ける必要がある。 Adobe PhotoshopやGIMPなど多くのCGソフトでは、「基的」なブレンドモードだけでも結構あり、ユーザーはレイヤーの不透明度を変更するなどして、レイヤーの合成方式をい

    pmint
    pmint 2022/10/25
    ピクセル情報同士のビット演算いろいろ。いろいろ試せば新モードも発明できそう。
  • 【プログラミング初心者向け】クラスメソッドとインスタンスメソッドはどう使い分けるべき? - give IT a try

    はじめに ruby-jpのSlackで以下のような質問が投稿されていました。 クラスメソッドとインスタンスメソッドの具体的な違いがわかりません。 現状「クラスメソッドはクラスから実行でき全体に関する処理を書くときによく使うもの。インスタンスメソッドはインスタンスから実行でき、個別具体的な処理を書くときに使うもの。」という理解をしています。そして実装の際に「これはクラスメソッドとインスタンスメソッドどちらで書くべきなのか」悩むケースが多いです。 上記を踏まえて質問です。 クラスメソッドとインスタンスメソッドの具体的な違いを皆さんはどのように定義しているか どこからがクラスメソッドでどこからがインスタンスメソッドなのかの境目はどのあたりにあるか をお伺いしたいです! クラスメソッドとインスタンスメソッドの使い分けは僕がメンターをやっているフィヨルドブートキャンプでもよく見かける質問です。 そこ

    【プログラミング初心者向け】クラスメソッドとインスタンスメソッドはどう使い分けるべき? - give IT a try
    pmint
    pmint 2022/07/21
    これでインスタンス変数の有無で判断するのが伝わるだろうか。「オブジェクト指向の欠点はインスタンス変数があること」とも言われてるので、もっとインスタンス変数を重視しては。3パターンもそれで説明できそう。
  • 【プログラミング初心者向け】メソッドや関数を定義するときの考え方 - give IT a try

    はじめに:どうやってメソッドを定義したらいいの? 僕がメンターをやっているフィヨルドブートキャンプで、生徒さんから「自分でどうやってメソッドを定義すればいいのかわからない」という質問がありました。 質問をくれた生徒さんいわく、「メソッドを定義するのにあたって手が止まってしまうのは、メソッドを前提にプログラムを考えて書いていないからなのでしょうか」とのことです。 僕の場合、プログラムを作るときは「メソッド(または関数)を作ることを前提に」とは考えていません。ただ、わかりやすいプログラムを書くためには自然とメソッドの定義が必須となってくるので、あたかも息をするようにメソッドを定義している、という感じです。 とはいえ、それだと何の答えにもならないと思うので、「こんなふうに考えてみるのはいかが?」というたとえ話(?)を考えてみました。 メソッドを定義するときの考え方 メソッド定義は処理をグループ分

    【プログラミング初心者向け】メソッドや関数を定義するときの考え方 - give IT a try
    pmint
    pmint 2022/07/16
    「責務別にしてみた」などの観点が無いと、学びにならない。食材を運ぶ人と調理する人と食べる人は別だったりするので。で、他のクラスも同様にして、アプリ全体で一貫させる。それが設計思想でありアーキテクチャ。
  • ソフトウェア開発の見積もり入門

    見積もりとは? Wikipediaによると見積もりとは、以下のようにあります。 見積(みつもり。見積り、見積もりとも書く)とは、金額・量・期間・行動を前もって概算すること。見積もること。あらましの計算をすること。また、その計算。目算。「所要時間を見積る」、「一日の来客者数をざっと見積もった」など、おおよその感覚で数字の見当をつける場合の口語体表現でも使われる。 Wikipedia このように見積もりとは、なにかを行う前に事前にその結果を予想しておくことを言います。 見積もりを使うケースは、ソフトウェア開発に限った話ではありませんが、製造業であるソフトウェア開発においては『見積もり』というタスクは様々なケースで登場します。 見積もりが苦手な人は多い ソフトウェア開発では、「この機能を開発するときにどのくらいで完成できますか?」といったケースが見積もりのシチュエーションとしては多いかと思います

    ソフトウェア開発の見積もり入門
    pmint
    pmint 2022/03/29
    PMBOKの紹介から始まるような小ざかしい説明ではなかった。シンプルで妥当。ただ、問題は分割するもの。それで部分的には見積り可能になるはず。
  • Web Components楽しい!|masuidrive|note

    よくある2ペインのレイアウト用コンポーネントを作りつつ、Web Componentsの仕組みを… Web Componentsを一言で説明すると「HTML/CSSが独立したカスタムタグを作れる仕組み」です。理…

    Web Components楽しい!|masuidrive|note
  • 今なら使えるWebComponents|masuidrive

    Web Componentsは10年ほど前に提唱されたブラウザのコンポーネント技術の総称です。自分でタグを作ってHTMLを拡張していける技術なのですが、ブラウザの対応や仕様の確定などに時間がかかり、なかなか実用に至りませんでした。 私もずっと忘れていたのですが、React/Vueに疲れたなーと考えていたところ、ふと思い出し調べ直してみると、既に安定してProduction readyなのに情報が少なくすごくもったいなかったので、自分で調べつつ色々書き残すことにしてみました。 Web Componentsの誤解名前は聞いたことはあっても使ったことがある人はまだ少ないWeb Components。私も認識違いがありました。 UIコンポーネントを作る仕組みだから自分で作ることはないCSSをページをまたがって使い回すことがあるなら楽になります CSSで!important を書いてたらWebCom

    今なら使えるWebComponents|masuidrive
    pmint
    pmint 2022/03/07
    とっくに始まってたらしい。BEMとかSMACSSとかいう「CSS設計論」を粉砕して、本物のコンポーネントを作る仕組み。
  • JavaScript で parseInt / parseFloat を使わない方が良い理由

    となるのが原因です。parseInt というのは、文字列を解析して整数値(int)を返すグローバル関数であり、引数をまず文字列に変換する仕様となっております。その段階で 0.0000005 が "5e-7" という文字列に変換されてしまい、その文字列の先頭の 5 だけが数字として解析されてしまったため、結果として parseInt(0.0000005) === 5 となりました。 なぜ String(0.000005) === "0.000005" に、String(0.0000005) === "5e-7" になるのかについては、この記事の最後で余談として説明します。 整数化には Math.trunc を使おう このように、parseInt は文字列を引数にすることを前提にしているため、速度の面でも可読性の面でも「小数値を整数値に変換したい」という場合に使うのは望ましくありません。最も望

    pmint
    pmint 2022/02/04
    と言われて鵜呑みにするのはコピペプログラマー。parseInt()は型変換。端数処理に型変換を使うのは不適切。適材適所。
  • 『スパゲティコード書くやつらは成果がすぐでるせいで評価されてるのほんま許せん』保守作業を行う人がダメの烙印押される現象も

    ぴくすふぁんく @pxfnc マジでスパゲティコード書くやつらは成果がすぐでるせいでプログラム分からん人たちからめちゃくちゃ評価されてるのほんま許せん その人がやめて保守やるタイミングで、保守に時間がかかった時に「ソースコードのせいにするダメなエンジニア」って烙印押されるのも許せん スパゲティに死を リンク Wikipedia スパゲティプログラム スパゲティプログラムまたはスパゲティコードとは、プログラムのソースコードがそれを制作したプログラマ以外にとって解読困難である事を表す俗語。名称の由来は、皿に盛られたスパゲッティのようにロジックが絡み合っていることから。 実務において、特にクライアントからの受注や業務委託に求められるコーディングは他者が解読可能な形態、すなわちコードの整序やリファクタリングされたプログラムコードを求められる。しかし、コード共有範囲の狭いプロジェクト趣味で行うプロ

    『スパゲティコード書くやつらは成果がすぐでるせいで評価されてるのほんま許せん』保守作業を行う人がダメの烙印押される現象も
    pmint
    pmint 2021/12/13
    この手の話は、言ってる側も大したことなかったりするので注意。時間のかかるスパゲティよりは、すぐでるスパゲティのほうが良い。時間をかけて綿密に書いたコードが、自身の退社後に捨てられた人の話とかあったし。
  • 鵜呑みにしないで! —— 書籍『クリーンアーキテクチャ』所感 ≪null 篇≫ - 株式会社カブク

    はじめに 最近よくクリーンアーキテクチャが話題になってて、関心が高まってる感じしますよね! ということでカブク社内でも書籍『クリーンアーキテクチャ』の輪読会が開催されました! この記事は null 個人の考察です。 クリーンアーキテクチャとは 書籍を読んでみた結果、次のブログ記事がすべてだと言っていいと思いました。 クリーンアーキテクチャ(The Clean Architecture翻訳) | blog.tai2.net https://blog.tai2.net/the_clean_architecture.html 上記ブログ記事に比べて書籍に含まれる文字数は膨大ですが、膨大なのは前提知識(プログラミングパラダイムとか設計原則とか)と歴史と補足(と著者のカタルシス)です。 以下の私の記述は基的に上記ブログ記事に対する考察と取っていただいても差し支えありません(ただし引用文は書籍からの

    鵜呑みにしないで! —— 書籍『クリーンアーキテクチャ』所感 ≪null 篇≫ - 株式会社カブク
    pmint
    pmint 2021/12/13
    層をまたぐ継承・実装に疑問も持たない人が信じちゃうやつ。新要素を加えて人を騙すのは、詐欺の常套手段。「抽象にのみ依存してるから〜」なら、その抽象は何に依存しているのか。(依存とは一緒に変更されるもの)
  • OAuth 1.0a 認証の実装 (Twitter API 用) - Qiita

    以前、Twitter API の認証処理を自前で実装して記事にしたのですが、説明をもう少し上手くまとめたいと思ったため、別記事にしました。 Twitter API 以外でも同様に実装できると思いますが、Twitter API 以外向けにも書こうとすると説明をより抽象化しないといけないため、ここでは Twitter API 向けとして書きます。他向けに OAuth 認証を実装する場合は上手く読み替えて下さい。 参考「Creating a signature — Twitter Developers」 1. 認証の流れ 通常の HTTP リクエストに Authorization ヘッダーを加えることで認証します。 Authorization: OAuth oauth_consumer_key="xvz1evFS4wEEPTGEFPHBog", oauth_nonce="6eb24361e725

    OAuth 1.0a 認証の実装 (Twitter API 用) - Qiita
  • 『変数に型がないということの利点について考える - Perl入門ゼミ』へのコメント

    ブックマークしました ここにツイート内容が記載されます https://b.hatena.ne.jp/URLはspanで囲んでください Twitterで共有

    『変数に型がないということの利点について考える - Perl入門ゼミ』へのコメント
    pmint
    pmint 2021/07/18
    どんなに経験を積んでも読みやすいコードにたどり着けない理由が分かる。周囲が間違いだらけだから。ここで批判している人たちは一生のうちに「セキュリティホールの大半は型に無頓着な結果」と気付けるだろうか。
  • - YouTube

    YouTube でお気に入りの動画や音楽を楽しみ、オリジナルのコンテンツをアップロードして友だちや家族、世界中の人たちと共有しましょう。

    - YouTube
    pmint
    pmint 2021/07/12
    ここで「才能ある」とされているタイプは競技プログラミングが得意なタイプ。業務でコードを書くのなら、ひろゆきタイプのほうがもてはやされる。「英語のようにコードを書きたい」とか、「読みやすいコード」とか。