タグ

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

  • AI「先輩、この仕様よく分からないっす」 - ABAの日誌

    ある開発者が自身のLLMを用いたコード生成ワークフローを次のように語っている。 tl;dr まずブレインストーミングで仕様を固め、次に “計画そのものを計画” し、それから LLM のコード生成で実装。小さなループを回していき、あとは魔法 ✩₊˚.⋆☾⋆⁺₊✧ Step 1: アイデアを絞り込む 対話型LLMに、アイデアを磨き上げさせる。 Ask me one question at a time so we can develop a thorough, step-by-step spec for this idea... Remember, only one question at a time. (訳:このアイデアを徹底的かつ段階的な仕様に落とし込むために、一度に一つずつ質問してください... 覚えておいて、質問は一度に一つだけです。) これでかなりsolidなspec.mdが手に入

    AI「先輩、この仕様よく分からないっす」 - ABAの日誌
  • RubyのPathnameライブラリが本体組み込みになったらGC周りのテスト失敗がおきた - STORES Product Blog

    こんにちは。ruby-devチームの遠藤(@mametter)です。 次期バージョンのRubyでは、pathnameがRuby体組み込みとなり、require "pathname"なしで利用可能になる予定です。 Rubyで書き捨てスクリプトを書いてる自分のような人は地味にうれしいかもしれません。 Feature #17473: Make Pathname to embedded class of Ruby - Ruby - Ruby Issue Tracking System さて、pathnameの組み込みがマージされた直後、非常に興味深いバグが発生しました。 今回はそのデバッグの経緯を技術ブログとして共有したいと思います。 問題の発生:特定環境でのみ失敗するテスト コミッタのhsbtさんがpathnameの組み込み化をマージした後、なぜかRubyのCIの一部が落ちるようになりました。

    RubyのPathnameライブラリが本体組み込みになったらGC周りのテスト失敗がおきた - STORES Product Blog
  • なぜ私たちは住所正規化エンジンをRustで"再発明"したのか? - FFIによる多言語高速化と開発者体験の裏側 - Sansan Tech Blog

    Sansan Engineering Unit マスターデータグループ(データ戦略部門)の松です。 私たちのチームは、「Activating Business Data」というミッションを掲げ、企業の活動の礎となる重要なデータ、いわゆる「マスターデータ」とその利活用という課題に、技術を駆使して向き合っている組織です。 さて、ビジネスデータを扱う上で「住所」は欠かせない情報です。 それは単に「モノを届ける場所」を示すだけではありません。 お客様を深く知るための「解像度」になる: 顧客のオフィスの位置を正確に知ることは、効果的なマーケティングや営業戦略を立てる上で不可欠です。 データ統合の「鍵」になる: 複数のサービスやデータベースに散らばったお客様の情報を「同一人物である」と正しく繋ぎ合わせる(名寄せする)際、住所は氏名と並んで最も重要なキー情報となります。 このように、正確な住所データは

    なぜ私たちは住所正規化エンジンをRustで"再発明"したのか? - FFIによる多言語高速化と開発者体験の裏側 - Sansan Tech Blog
    paulownia
    paulownia 2025/06/21
    手段よりも住所正規化などというデスロードを逝く目的が気になったが、Sansanで納得しました
  • コードの複雑さを可視化して可読性を上げる方法

    コードを読んでいるときに「なんかよく分からんが複雑でわかりにくいな...」と感じることはありませんか? 私は既存のコードを読んでいるときはもちろん、自分が書いたコードを読むときもそう感じることがあります。 複雑さの要因を理解していないと、適切な改善ができませんよね。 今回は、「脳に収まるコードの書き方」という書籍を参考に、コードの複雑さの可視化とその複雑度を軽減させる方法を解説していきます。 前提 当たり前ですが、コードは書く回数よりも読まれる回数の方が多いです。 コードの価値には、アプリケーションが動くことだけではなく可読性も大きく関係しています。 目先のリリースを優先して「とりあえず動くコード」を許してしまうと、将来、他の誰かあるいは未来の自分がそのコードを読むときに必ず苦しむことになります。 可読性を二の次にせず、「脳に収まるコード」のための最適化を常に検討しましょう。 コードの複雑

    コードの複雑さを可視化して可読性を上げる方法
  • 「GitHub Copilotコードレビュー」正式リリース。コードのバグや性能劣化要因など基本的なレビューをCopilotが代行、人間のコードレビューを効率化

    GitHubは、生成AIがプログラミングなどを支援してくれる「GitHub Copilot」の新機能として、「GitHub Copilotコードレビュー」が正式版になったことを発表しました。 コードレビューは開発に欠かせないが時間がかかる コードレビューは、新しくコードを書いたときや変更するときなどさまざまな場面で、そのコードにバグなどの問題がないか、目的に沿った内容や表現になっているか、などのチェックや評価を行う作業です。 チームでシステム開発を行ううえでコードレビューは欠かせませんが、コードレビューは基的にレビューを行うプログラマ(レビュワー)がコードを目視で読み取り、チェックしていくことになるため、レビュワーにとって負荷の高い時間のかかる作業となっています。 最低限のコードレビュー作業を生成AIが代行 GitHub Copilotコードレビューは、GitHub Copilotに作業

    「GitHub Copilotコードレビュー」正式リリース。コードのバグや性能劣化要因など基本的なレビューをCopilotが代行、人間のコードレビューを効率化
  • Cline、めっちゃ便利、お金が飛ぶ💸

    2025-03-28 ENECHANGE I/O Day アウトプット大会(社内イベント)

    Cline、めっちゃ便利、お金が飛ぶ💸
    paulownia
    paulownia 2025/03/29
    正直この程度のタスクだったら別にいらんかなと思う。14ページ目の内容がニンゲンの指示ではなくGithubのdependabotのようにAI側から自動的に提案されるようになったら飛びつくけど
  • 「読みやすいコード」を依存グラフで考える

    はじめに こんにちは、ダイニーの ogino です。 この記事では、コードの読みやすさを比較判断するために役立つメンタルモデルを紹介します。 記事を読むと、「このコードは良い / 悪い」という感覚が身につき、その理由を自信を持って説明できるようになるはずです。 コードの読みやすさとは何か コードを読む時には大抵、何か特定の目的があります。例えば、 API /foo にリクエストした時の動作を知りたい、ある画面で発生しているバグの原因を知りたい、などです。 この時、コードベースの隅から隅まで読み尽くすのではなく、特定のポイントから出発して関連する箇所を芋蔓式に辿りながら読むはずです。 人が一度に理解して覚えておける情報量には限界があるので、辿らなければいけないコード量が少ないほど当然読みやすくなります。 つまり、ある目的に関連するコードの箇所が局所的かつ明示的であるほどコードは読みやすいと

    「読みやすいコード」を依存グラフで考える
  • 開放閉鎖原則(open-closed-principle)ってもはや意味ない - きしだのHatena

    SOLID原則というのがあるのだけど、原則といつつ やりすぎに注意なみたいなことを言われ、自分で塩梅を探らないといけないなら全然原則じゃないやんということであまり好きではないのだけど、その中でもここではOにあてはまる開放閉鎖原則って意味ないよねって話を。 開放閉鎖原則の原典はメイヤーの「オブジェクト指向入門」で、第2版には次のような記述があります。(初版も書いてることはだいたい同じで、2版のほうが整理されて記述も多くなってます) モジュールは開いていると同時に閉じているべきである ただ、このメイヤーの文脈でいうようなモジュールの拡張ってやらないよねと。 ここでメイヤーの文脈での拡張というのは、モジュール自体に手をいれずに、機能の追加や変更ができるというものです。継承使っていい感じに機能追加ができる設計が「拡張に開かれている」ということです。 でもまあ、そんなライブラリの拡張をやらないですよ

    開放閉鎖原則(open-closed-principle)ってもはや意味ない - きしだのHatena
    paulownia
    paulownia 2025/02/20
    「狭い世界で語るな」という厳しいコメントがあるが、同意せざるを得ない。別チームが作ったライブラリの使用を強制され、修正が許可されてないという状況は今でもあり、そのライブラリが拡張に開かれてないと詰む
  • Parquetフォーマット概観 - 発明のための再発明

    Parquetは便利なファイル形式で、列志向のフォーマットとしてはデファクトの1つと言っても過言ではないでしょう。 ですが、jsonやcsvとは違い、ファイルを見ただけでどんな構造かわかるものではありません。 この記事は、Parquetの具体的な構造について記述します。 はじめに この投稿は、Parquetの構造について、バイナリを見ながら確認するものです。 ただし、Parquetの大枠に注目した投稿なので、delta encodingやrun-lengthなど、個別の圧縮方法については取り扱いません。 ※ Parquetの作成には https://github.com/parquet-go/parquet-go を使用していますが、goの知識は必要ありません tldr Parquetは以下の構造を持っています。 ファイルはRowGroupとメタデータに分かれている RowGroupの中に

    Parquetフォーマット概観 - 発明のための再発明
  • 米国防総省DARPA、C言語のコードからRustへの自動変換実現を目指す「TRACTOR」プログラム開始

    米国防総省DARPA、C言語のコードからRustへの自動変換実現を目指す「TRACTOR」プログラム開始 アメリカ国防総省 DARPA(Defense Advanced Research Projects Agency:国防高等研究計画局)は、C言語のコードからRust言語のコードへ高い精度での自動変換実現を目指す「TRACTOR」(Translating All C to Rust)プログラムの開始を発表しました。 DARPAは軍事技術の開発および研究を行う機関であり、現在のインターネットはDARPAの前身となるARPAが1967年に開始した「ARPANET」がその起源であることはよく知られています。 DARPAが発表したTRACTORプロジェクトは、C言語のコードからRust言語のコードへの自動変換を高い精度で実現することで、過去にC言語で開発された多くのソフトウェアをメモリ安全なソフ

    米国防総省DARPA、C言語のコードからRustへの自動変換実現を目指す「TRACTOR」プログラム開始
    paulownia
    paulownia 2024/08/08
    バックドア仕込まれそう
  • Epic Gamesが開発中のプログラミング言語「Verse」って知ってる?編集部員が感じる2つの特徴「ロールバック」「非同期処理」などを解説|ゲームメーカーズ

    ゲームメーカーズ編集部の神谷です。記事では、Epic Gamesが開発するプログラミング言語「Verse」について紹介します。 Verse個人開発で使っており、モダンだし自分の好みと合うしと魅力を感じています。使用環境が限定されているため人口は少ないのですが、将来性も感じる言語です。もっとたくさんの方に触ってもらえるよう、筆を執りました。 Verseが持つ2つの大きな特徴のほか、私が感じているUnreal Engine 5(以下、UE5)におけるブループリントとの相違点を説明します。 TEXT / 神谷 優斗 EDIT / 藤縄 優佑

    Epic Gamesが開発中のプログラミング言語「Verse」って知ってる?編集部員が感じる2つの特徴「ロールバック」「非同期処理」などを解説|ゲームメーカーズ
    paulownia
    paulownia 2024/06/13
    ゲームだと外部リソースの操作みたいな副作用がないのでロールバックを言語仕様にできてしまうのか。これはゲーム開発者ならではの発想かも
  • 日々常々

    こう言うのがあって。 class Hoge { public static void main(String[] args) { Object hoge = null; hoge.toString(); } } 実行すると当然NPEになるんだけど、こんな感じで出る。 % java Hoge.java Exception in thread "main" java.lang.NullPointerException: Cannot invoke "Object.toString()" because "<local1>" is null at Hoge.main(Hoge.java:8) 一昔前は Cannot invoke "Object.toString()" because "<local1>" is null なんて出なかったんだけど、 JEP 358: Helpful NullPo

    日々常々
    paulownia
    paulownia 2024/06/02
    プロジェクトによって使い分けがまちまちなのが辛い、使い分けされてないプロジェクトはさらに辛い
  • Python滅ぼす協会に入会したい

    なぜ令和にもなって動的型付け言語を使うのか シフトレフトという概念が生まれたのは二十年以上も前のはずだ。 それにもかかわらず動かしてみるまで答え合わせもできない言語で開発をするという発想自体がどうかしている。 同じ動的型付けといってもJavaScriptはブラウザという事情があるし、型の表現力に優れたTypeScriptがあるからまだよい。 しかし、Pythonはどうだ。他にいくらでも選択肢があるなかで、サーバーサイドにわざわざ選定する言語ではなかろう。 貧弱な型ヒント、しかも書いたところで大した効用もない。 使っている外部ライブラリにひとつでも型ヒントがクソなものがあれば即座に破綻する。 型というガードレールもシートベルトもなしで糞を撒き散らしながらする開発にはうんざりだ。 シンタックスもキモい 動的型付けもさることながら、シンタックスもキモい。とにかく思考を妨げる語順になっている。 m

    Python滅ぼす協会に入会したい
  • C++/Java系言語で1文字だけでコメントアウトするブロックを切り替える - Qiita

    概要 プログラミングをしていると実装の方式を試してみることがあると思います。あるいは、別の実装でうまくいくか自信のない時、今あるものはコメントアウトしておいて別の実装を試してみたり。そんな場合、今時はエディターの機能で簡単にブロックをコメントアウトしたりできますが、言語仕様をうまく使って一文字編集するだけでコードブロックをコメントアウトする小技を大昔に思いついていて今でも使うことがあるので紹介します。実装中の試行錯誤の時には便利です。 この技はC++/Java/Javascript系の、ブロックコメント/* ... */とインラインコメント//がサポートされている言語で利用できます。 ブロックを/の削除でコメントアウトする 以下のように書いておくと、一番最初の/を削除すると最初の行がインラインコメントからブロックコメントに切り替わり、ブロック全体がコメントアウトされます。

    C++/Java系言語で1文字だけでコメントアウトするブロックを切り替える - Qiita
  • Apple、コンフィグレーション生成用の静的型付き言語「Pkl」をオープンソースで公開、単一コードからJSONやYAML、XMLなどを生成

    Appleは、さまざまなコンフィグレーションファイルを生成するための静的型付言語「Pkl」(発音はPickle=ピックル)をオープンソースで公開しました。 ソフトウェアやクラウドサービスなどの設定に用いるコンフィグレーションファイルはどんどん複雑になってきており、利用者が望む詳細な設定を、一般的なコンフィグレーションファイルのフォーマットとして使われているJSONやYAML、XMLプロパティリストなどの形式で正確に記述することは難しくなってきています。 Pklはそうしたコンフィグレーションを正確かつ分かりやすく記述するために開発された、特定目的用のプログラミング言語だと説明されています。 Configuration-as-Codeを実現するための豊富な型やバリデーション機能、VSCodeやIntelliJ、NeoVimなどのコードエディタのプラグインを提供します。Language Serv

    Apple、コンフィグレーション生成用の静的型付き言語「Pkl」をオープンソースで公開、単一コードからJSONやYAML、XMLなどを生成
  • もう初回コードレビューはAIに任せる時代になった - CodeRabbit -

    どんな人向けの記事? レビューによって心理的なダメージを受けやすい方 非エンジニアだが、エンジニアチームがどんな機能を作っているか知りたい方 業務が溜まっていて、レビューに割く時間を捻出するのに苦労している方 コピペできるコードも公開します 初回レビューをAIに任せると、いろんなロールの人の役に立つ レビューは得意ですか? 優秀なエンジニアしかいないチームであれば、PRは1トピックに絞って小さく明確なコミットによって作成され、適切な要約とともに提供されることでしょう。 しかし、実際にはいろいろな制約から、PRが想定よりずっと大きくなってしまったり、関連トピックと異なるコードが混じってしまうこともあります。 実際のところ、大きなPRを適切にレビューするのは難しいことです。また、自分が詳しくない領域のレビューを行わなければいけない機会もあります。 今回の記事は、レビューを作成してくれるAI C

    もう初回コードレビューはAIに任せる時代になった - CodeRabbit -
  • 祖母が就寝するとDBインサートができなくなる - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 世の中には、一見関係なさそうな物理現象がITシステムに不可思議な影響を及ぼすことがあります 例えば,500マイル以上離れた場所にメールが送れないという話だったり 中国人のAさんがお茶を入れると会社のネットが繋がらなくなる という話があります。 私の場合は、祖母が就寝するとDBインサートが失敗する、という状況でした 実家の見守りシステム 問題が起きているのは、離れた実家にいる一人暮らしの祖母の状態を見守るために作成した自作のシステムです。 気温や湿度、CO2濃度、明るさ、部屋のドアの開閉、冷蔵庫の開閉の状況をモニタリングできるようにしてい

    祖母が就寝するとDBインサートができなくなる - Qiita
    paulownia
    paulownia 2024/01/08
    原因はよくあるバグだけど、影響の出方が独特で面白い事例
  • 【日本人エンジニア必携】英語命名規則の決定版 - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    【日本人エンジニア必携】英語命名規則の決定版 - Qiita
    paulownia
    paulownia 2023/12/25
    boolean変数のとこ、showは動詞でメソッド名っぽいし、isやexistと違って状態を表す動詞ではないのでやめた方がいいかもーと思った。purchase_histories_displayed とかかなぁ
  • 最も大きい「n丁目」を調べてみた - Qiita

    はじめに 年の瀬も迫る今日この頃、そろそろ年賀状の宛名書きに追われている方も多いのではないでしょうか。 一年の中で最も住所と向きあうこの時期、自分も年賀状の準備をしようと去年の年賀状を眺めていて、ふと思ったことがあります。 それは 「全国のn丁目で最も大きい数字の丁目は何丁目なのだろう」 ちょっと気になったら、夜も眠れなくなったので、安眠を得るために調べてみることにしました。 使ったデータ 全国の丁目まで含めた住所はe-statの統計データを拝借しました。 e-statとは「日の統計が閲覧できる政府統計ポータルサイトです」(サイト説明文ママ) 人口や産業、国土などに関する統計情報を閲覧、ダウンロードすることができます。 今回は、このうち2020年国勢調査統計データの小地域(町丁・字等)データを使用しました。 データの取得の流れは以下の画像を参照 トップのメニュー「統計データを活用する」か

    最も大きい「n丁目」を調べてみた - Qiita
    paulownia
    paulownia 2023/12/16
    こういうの好き。しかし、このぐらいの調査でも万丁目とか例外に出くわすのだから住所処理はこわい
  • 僕の自作ツールが大学のサーバーをダウンさせてしまった日の話|くりきん

    2021年10月25日、この日は僕がただの大学生から、大学のサーバーをダウンさせた"犯人"へと変わった日です。 小説みたいな書き出しをしてみましたが、これは嘘みたいな当の話で、ふと思い出して懐かしくなったので回想録として note に残すことにしました。 出来事の概要2年前の2021年10月、何が起きたかを簡単に書くと以下の通りです。 ・大学の授業や課題を管理するためのシステムを拡張するツールを作った ・ツールが予想以上の人数に使われ、結果として大学のサーバーに負荷がかかりサーバーが落ちる事態になった ・大学から呼び出しを受けることになった 時系列を追って、この note で出来事の全容を書きたいと思います。 使いづらい LMSまず前提として、私の大学では毎日の授業や課題は授業支援システム、通称 LMS と呼ばれるオンラインのシステムで管理されています。 実際のLMSの画面しかし、この

    僕の自作ツールが大学のサーバーをダウンさせてしまった日の話|くりきん
    paulownia
    paulownia 2023/11/28
    IT方面を志望するかわからんけど、いいエンジニア、いやいいバッカーの素質がある