サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
参議院選挙2025
qiita.com/ShigemoriMasato
LGPLライセンスとリンク方式 LGPLが「Lesser GPL」と呼ばれる理由は、動的リンクの場合に限って制約が緩和されるからです。 実際のプロジェクトでLGPLライブラリを使用する場合、以下の点に注意が必要です。動的リンクであれば、LGPLライブラリを使用してもアプリケーション本体は独自のライセンスを維持できる可能性が高いです(ただし、LGPLのバージョンや具体的な使用方法により異なります)。LGPLライブラリ自体の改変を行った場合は、その改変部分をLGPLで公開する必要があります。 一方、静的リンクした場合は、アプリケーション全体がLGPLの派生物とみなされる可能性が高く、一定の条件下でソースコードの開示が求められる場合があります。これは多くの商用プロジェクトにとって受け入れがたい制約となるでしょう。ただし、具体的な法的義務は使用方法や配布形態により異なるため、専門家への相談を推奨し
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 2006年8月14日午前7時38分、まだ眠い月曜の朝。旧江戸川を優雅に航行していたクレーン船の船長は、きっとこう思っていたはずです。 「今日も平な一日が始まるなぁ」 その5秒後、彼は日本のIT史に名を残すことになります。275,000ボルトの特別高圧送電線にクレーンをぶつけるという、誰も真似できない離れ業で。 この瞬間、船長の人生は180度変わりました。警察の事情聴取、国土交通省の調査、電力会社からの損害賠償請求...。業務上過失による送電線損壊の容疑で書類送検され、後に起訴猶予処分となりました。船長免許は取り消され、所属していた海運会
皆さんは『配列から欠けている数字を見つけろ』と言われたら、どう答えますか? 多くの方は「HashSetで解けばいい」と考えるでしょう。しかし、1000万個の要素で実測したところ、Pythonのsetは945MBもの追加メモリを消費し、処理に2.3秒かかりました。一方、XORを使った解法は追加メモリゼロ、C言語なら1ミリ秒で完了します。 なぜこれほどの差が生まれるのか? XORには単なるトリック以上の深い理論があり、配列の欠損値検出だけでなく、RAID 5のデータ復元やネットワークのエラー検出など、実務で幅広く応用されているのです。 追記: ネットワーク転送時のパケットロスやノイズによるデータ欠損、さらには宇宙線がメモリに衝突してビットが反転する「ソフトエラー」により、配列から要素が失われることがあります。 本記事では、Florian Hartmannの「That XOR Trick」1を基
「皆さんは週に何日働いていると思いますか?」 最近また話題になっている「AI週4日勤務」12。 この記事を見た瞬間、1年前の記憶が鮮明に蘇りました。シリコンバレーの友人とZoomで話していた時のことです。彼は興奮気味にこう切り出しました。 「ついに我が社もAIを活用して週4日勤務を実現できるかもしれない!これは革命だよ!」 私は静かにVisual Studio Codeを開き、日米の祝日数を比較して見せました。米国の連邦祝日は11日、日本の国民の祝日は16日。 彼の顔から血の気が引きました。 さらに私は年間勤務日数の計算結果を見せました3。すると、彼は完全に言葉を失いました。 そして私は最後のカードを切りました。「ちなみに、これでも日本はGDP世界第4位を維持してるんだ」4 彼の顔から笑顔が消えていました。真顔です。 その沈黙の中で、私は「真の働き方改革とは何か」という根源的な問いについて
みなさんは、C言語で異なるポインタが同じアドレスを指していても、それらが「別物」として扱われることがあるのをご存じですか?一見すると同じメモリ位置を指すポインタでも、その由来(provenance1)によって、コンパイラの最適化や動作が変わることがあります。 この記事では、C言語の新しい国際標準ISO/IEC TS 6010:20252で定められた「provenance-aware memory object model」について、実例を交えながら徹底的に解説します。 更新 (2025-07-02): @Loofehtさんからの貴重なご指摘をいただき、記事の技術的な誤りを修正しました。特に以下の点を改善しています。 「コンパイラ最適化」→「手動最適化」という用語の修正 recip(&x, &x)が収束しない(発散する)ことの明記と実証 より実践的な例への差し替え 建設的なフィードバックをい
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 前回まで、インフラエンジニアとネットワークエンジニアの違いについて説明してきました。多くの人が「インフラエンジニア」という曖昧な言葉に惑わされ、実際の業務内容を正確に理解できていない現状があります。ネットワークエンジニアは、物理的な配線からキャリア設備の知識まで、幅広く深い専門性が要求される職種です。 今回は、実際のネットワーク構築プロジェクトで使用されている設計手法について、体系的に掘り下げていきます。 ネットワーク構築とは ネットワーク構築は、ビジネス要件の理解と技術的な実装という二つの側面を持つ複雑なプロセスであり、それらを適切に
uvとは何か、なぜ今注目されているのか 従来のPython環境構築の問題点 Pythonの環境構築には、長年にわたって解決されない問題がありました。まず速度の問題として、pip installが遅く、依存関係解決に時間がかかります。特にcondaは、環境解決に数分かかることも珍しくありません。 次に再現性の問題として、環境差異でエラーが発生し、バージョン固定が面倒です。pipとcondaを混在させると、さらに複雑な問題が発生することもあります。 さらに管理の複雑さとして、venv、pyenv、pipenv、conda、Anacondaなど、ツールが乱立し、どれを使うべきか迷ってしまいます。activateを忘れるといった問題も頻発します。 Python環境管理ツールの変遷 ここで、Python環境管理ツールの歴史を振り返ってみましょう。 2007年頃 - virtualenvの登場。初めて
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 最近、SNSを見ていて気になることがあります。「高還元SES インフラエンジニア募集」求人の内容を詳しく見ると、実際にはサーバー構築の仕事だったり、クラウドの設定作業だったり、ネットワークの運用保守だったりと、企業によってまったく異なる業務内容が記載されています。 今回は、連載を始めるにあたり、まず「インフラエンジニア」という曖昧な言葉の解像度を上げ、各エンジニア職種の本当の業務内容について整理していきます。 インフラエンジニアという言葉の曖昧さ IT業界において「インフラエンジニア」という言葉は、非常に広範囲な意味で使われています。こ
「申し訳ございません」 この言葉を発するとき、私たちの脳内では複雑な化学反応が起きています。扁桃体1が活性化し、ストレスホルモン2が分泌され、自己防衛本能が発動する。その結果、多くの謝罪は失敗に終わります。 しかし、歴史上には謝罪によって危機を乗り越え、むしろ信頼を強固にした事例が存在します。そこには、認知科学が解き明かす「謝罪の技術」があったのです。 なぜ多くの謝罪は失敗するのか 「謝罪のパラドックス」という現象 多くの人は、謝罪を「ただ頭を下げること」だと誤解しています。しかし、オハイオ州立大学の研究3によれば、不適切な謝罪はむしろ相手の怒りを増幅させることが明らかになっています。 以下のような謝罪を見たことはありませんか。 「この度は誠に申し訳ございませんでした。 しかしながら、弊社としても精一杯対応しており、 今回の件は不可抗力な面もございまして...」 この謝罪の何が問題なのでし
皆さんは、世界で最も使われているオープンソースOSであるLinuxの最初のバージョンがどのようなものだったか知っていますか?1991年9月17日、当時21歳の大学生だったLinus Torvaldsが公開したLinux 0.01は、わずか10,000行のコードで動作する最小限のOSでした。 Linuxは今日、企業のサーバーから個人のデスクトップ、スマートフォンから巨大なスーパーコンピューターまで、あらゆる場所で動作しています。インターネットの大部分はLinuxサーバー上で動作し、世界の金融システムや通信インフラを支えています。しかし、この壮大な物語は、フィンランドの一人の学生が「ただの趣味」として始めたプロジェクトから始まりました。 本記事では、このLinux 0.01の完全解析を通じて、OSの基本的な仕組みを理解し、さらにQEMUを使って実際に動作検証する方法まで詳しく解説します。最初の
パフォーマンスの10倍改善は、インフラコストの大幅な削減を意味します。 クラウド時代において、CPU時間は直接的な経費です。月額100万円のAWSインフラコストが10万円になれば、年間1,080万円の利益改善。これは中小企業なら社員を1名雇用できる金額であり、大企業ならコスト削減となります。 しかし、本当の価値はコスト削減だけではありません。 レスポンスタイムの改善。ユーザー体験が向上し、コンバージョン率が上昇 スケーラビリティの向上。同じリソースでより多くのユーザーに対応可能 競争優位性の確立。競合より高速なサービスは、それだけで差別化要因 計算量が同じでも実行時間は10倍違う 多くのエンジニアは「高速化=アルゴリズムの改良」と考えがちです。確かに、O(n²)をO(n log n)に改善することは重要です。しかし、同じO(n)のアルゴリズムでも、実装次第で10倍以上の性能差が生まれること
「C/C++は危険な言語だ」という言葉を聞いたことがありませんか。そして、その言葉を聞いて「仕方ない」と諦めてしまった経験はないでしょうか。確かにC/C++には未定義動作1という落とし穴があり、メモリ安全性の観点でRustやGoと比べると危険性が高いことは事実です。 「だったらRustを使えばいいじゃないか」という声も聞こえてきそうです。確かにRustは優れた選択肢ですが、現実はそう単純ではありません。既存の膨大なC/C++資産、組み込みシステムでの制約、チームの学習コスト、特定のハードウェアやライブラリとの互換性など、C/C++を使い続けなければならない理由は数多く存在します。 特に最近では、M5StackをはじめとするESP32ベースのIoTデバイスが急速に普及し、組み込み開発でC/C++を扱う機会が増えています。これらのデバイスではArduino環境やESP-IDFを使った開発が主流
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 月曜日の定例会議でのことでした。私はシステム改修についてのプレゼンテーションを行い、データベース設計の変更点から具体的な実装方法まで、詳細に説明しました。参加者の鈴木氏は熱心に頷き、相槌を打ちながら聴講していました。 ところが会議終了30分後、彼から驚くべき質問が届いたのです。 「先ほどの会議で議論されたデータベースの件について、具体的な方針をご教示いただけますでしょうか」 私は愕然としました。つい先ほど詳しく説明したばかりの内容を、なぜ彼は覚えていないのでしょうか。 実はこのような状況は、多くの組織で日常的に発生しています。そして問題
この記事で学べること この記事を読むことで、以下のスキルが身につきます。 Pythonコードのボトルネックを特定する方法 NumPyを使ったベクトル化処理の実装 非同期処理による並列化テクニック メモリ効率を最適化する実践的な方法 JITコンパイラ(Numba)の効果的な使い方 それでは、実際のコードと測定結果を見ながら、Pythonの高速化テクニックを学んでいきましょう。 なぜPythonは遅いのか?そして、どう高速化するのか? Pythonが遅い理由を理解していますか? 普段Pythonを使っている皆さんは、なぜPythonが遅いと言われるのか、その根本的な理由を理解しているでしょうか。Pythonの実行速度が遅い主な理由は以下の通りです。 動的型付け1 - 実行時に型チェックが行われる インタープリタ実行 - コードが逐次解釈される GIL(Global Interpreter Lo
[入門] Pythonで学ぶ、より良いコードを書くための実践的テクニック 第1回 プロフェッショナルな可読性への道 (理解しやすいコード/名前付けの極意/コードの美学)Pythonプログラミングリファクタリングリーダブルコード初心者 ソフトウェア開発において、コードの可読性1は品質と保守性を左右する最も重要な要素の一つです。本記事シリーズでは、Pythonを題材として、読みやすく理解しやすいコードを書くための実践的なテクニック2を体系的に解説していきます。 全3回にわたって、コードの可読性を向上させる具体的な方法を、豊富な実例とともに紹介します。第1回では、コードの可読性の基本概念から、適切な命名規則3、そしてコードの見た目の美しさまでを扱います。 理解しやすいコード 優れたコードの定義 「優れた」コードとは何でしょうか。パフォーマンス4が良いコード? 短いコード? いいえ、最も重要なのは
ソフトウェア開発プロジェクトを始める際、最初に直面する重要な意思決定の一つが契約形態の選択です。この選択は単なる事務手続きではなく、プロジェクトの成否を左右する戦略的な判断となります。なぜなら、契約形態によってリスクの所在、責任範囲、そして見積もり金額が大きく変わるからです。 本シリーズでは、全3回にわたってソフトウェア開発における契約実務を体系的に解説します。第1回となる本記事では、主要な契約形態の特徴と、それぞれの見積もり方法について、実務経験に基づいた詳細な説明を行います。 シリーズ構成 第1回:契約形態の基礎知識と見積もりの関係(本記事) 第2回:開発手法と契約の適合性 - ウォーターフォールとアジャイルの使い分け 第3回:実践的な契約締結とリスク管理の手法 ソフトウェア開発における契約形態の全体像 ソフトウェア開発で使われる契約形態は、大きく分けて4つに分類されます。それぞれの契
qiita.com
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 昨今、大規模言語モデル(LLM)1が大流行していますが、皆さんは「知能」って何だか本当に理解していますか?私たち全員が「知能」を備えていると思いますが、それはどんなもので、いつ、どんな風に働いているものでしょうか? そもそも「知能」とは何なのか、「知能」はどこにあるのか、「知能」はいつ働くものなのか、「知能」はどんな風に働くものなのか。他にも、「思考」とは何か、「認知」とは何かという根本的な問いがあります。 自分の頭の中で何が行われていて、それを意識して「使う」ことができているでしょうか。この記事では、認知科学2の観点から「知能」の正体
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 前回の記事では、GPT-4 32kを用いたドメイン駆動設計(DDD)の新しい設計手法について説明しました。GPT-4 32kの大規模なコンテキストサイズを活用することで、複雑なタスクも無理なく実行でき、設計プロセスの効率化を大いに進めることができました。また、設計と実装の間のギャップを最小限に抑えることができ、開発者はドメインの複雑さを容易に理解し、それを反映した設計を効率的に行うことができました。これにより、新たな開発体験が実現しました。 今回は、前回の記事とは別に、ドメイン駆動設計(DDD)の具体的な概念と実装について掘り下げていき
このページを最初にブックマークしてみませんか?
『@ShigemoriMasatoのマイページ - Qiita』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く