1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

完走カレンダーAdvent Calendar 2024

Day 14

Qiita のトレンド記事を要約してまとめたモノ(さぼり)

Posted at

ロードバランサーを設置してネットワークをまるごと吹っ飛ばした

12年前、著者は物理ロードバランサー導入時に、L2構成を誤って解釈し、ブロードキャストループによるネットワーク障害を引き起こした。サービスA、Bへのアクセスが遮断され、大量のARPパケットでL2スイッチがダウンした。原因は、社内検証では問題なかったが、本番環境のトラフィック量に耐えられなかったため。その後、ワンアーム構成に変更したが、これもデータセンター休憩室で簡易検証したまま導入するという危ない行為を行った。

この経験から、著者は以下の反省点を挙げている。

  1. ネットワーク非専任者はレイヤ3以下の設定を避けるべき: L2/L1層、ARP、VRRP、ルーティングプロトコルなどは専門家に任せる。パブリッククラウドはL2以下を意識する必要がないため、このような問題を回避しやすい。
  2. 検証用機器の購入: 本番環境と同等の検証環境を構築することで、導入前の問題発見に繋がる。
  3. インフラエンジニアの雇用: ネットワークの専門知識を持つ人員を確保することで、リスクを軽減できる。

要約すると、著者は自身のネットワーク知識不足とリスク軽視により、大規模なネットワーク障害を引き起こし、その反省からネットワークの専門知識の重要性と、適切な検証環境の必要性を訴えている。

【初心者必見】Python中級者になるためのテクニック29選

このテックブログ記事は、Python中級者を目指すプログラマー向けに、29個のテクニックを重要度別に解説しています。 主な内容は、リスト内包表記や辞書内包表記などの効率的なコーディングテクニック、破壊的メソッドと非破壊的メソッドの違い、型ヒントやTypedDict、dataclassを使った型安全なコードの書き方、itertoolsモジュールの活用、ログ出力、例外処理、デコレータ、ジェネレータ、コンテキストマネージャ、そしてeval/exec関数やクロージャ、ウォルラス演算子、Ellipsis、Protocolを使ったダックタイピングなど、実践的なプログラミングスキル向上に役立つ内容です。 各テクニックは具体的なコード例とともに説明されており、初心者レベルを超えてPythonの高度な機能を習得したい開発者にとって有益な情報が提供されています。

うちのアシスタントのしらせ君がすごいので自慢させてください。

この記事は、著者個人の業務アシスタントAI「しらせ君」について紹介したテックブログ記事です。しらせ君はn8nというローコードプラットフォームを用いて構築されており、メール管理、ニュース収集と要約・評価、スケジュール管理、郵便物管理、議事録管理、論文管理、取引先ニュース調査、SNS管理など、多岐にわたる業務を自動化しています。 これらのタスクは、最低限の指示で自動実行され、Chatbotと異なり人間の介入を必要とせず、効率的な業務遂行を実現しています。 しらせ君の開発においては、イベント駆動、人間の介在によるフィードバックループといった点が重視されています。

10年のエンジニア人生を振り返り、その中で本当に大切だと思ったもの

この記事は、IT未経験からエンジニアとして10年間キャリアを積んできた著者が、自身の経験に基づき、エンジニアとして成功するために大切だと感じた10個の点をまとめたものです。 具体的には、目的意識を持つこと、本質を掴むこと、継続すること、やらないことを決めること、記録を残すこと、フィードバックをもらうこと、他人に期待しないこと、常に謙虚でいること、悪口を言わないこと、そして認知してもらうことの重要性を、自身の経験談を交えながら解説しています。 成功への道は、すぐに結果を求めるのではなく、地道な努力と継続的な学習によって築かれることを強調しています。

エンジニア向け数学・統計知識総復習【50選】

この記事は、エンジニアにとって役立つ数学・統計の基礎知識を、剰余演算、自然対数、対数関数、ΣとΠ記号、有効数字、論理演算、集合・論理記号、二項係数、N進法、ベクトルと類似度、微分、積分、極限、双曲線関数、分散と標準偏差、変動係数、データの標準化、偏差値、相関係数、確率変数と確率分布、期待値、正規分布、大数の法則、モンテカルロ法、ベイズの定理、時系列分析、マルコフ連鎖、様々な確率分布、データ分析手法、最小二乗法、交差検証、浮動小数点数、文字コード、探索アルゴリズム、Antsの問題、黄金比・白銀比、グラフ理論、最短経路問題、1%ガチャ問題、誕生日のパラドックス、最適停止問題、72の法則、ピケティの不等式、ナッシュ均衡、降水確率、有限オートマトン、逆ポーランド記法、BNF記法といった様々なトピックについて、簡潔に解説したものです。 基礎的な概念から、エンジニアの仕事で役立つ高度な概念まで幅広く網羅しており、図表も用いて分かりやすく説明されています。

Kaggle画像コンペでやっていること②

この記事は、Kaggleの画像コンペで上位入賞するためのテクニックとして、「適用ドメインの考慮」を解説したものです。特に、初級者〜中級者向けに、深層学習モデルに事前知識を反映させることで精度向上を図る方法を説明しています。具体的には、特徴量エンジニアリングに着目し、モデルが理解しやすいようデータ加工や追加情報付与の重要性を強調しています。 奥行き情報、位置情報、オプティカルフローなどの追加、数値スケールの調整、特徴量の組み合わせ方などを具体的な例を挙げて解説しており、既存の論文やコンペでの事例も紹介しています。 効果は必ずしも大きくないものの、競争の激しいコンペでは重要な差別化要因になると結論づけています。

Webのリアルタイム通信、双方向通信を学ぶ(SSE、WebSocket、WebRTC、WebTransport)

この記事は、Webにおけるリアルタイム通信・双方向通信技術を解説したものである。ポーリング、ロングポーリング、Server-Sent Events (SSE)、WebSocket、WebRTC、WebTransportの6つの技術の概要、特徴、メリット・デメリットを比較し、それぞれのブラウザ実装例とプロトコルについても説明している。特にWebSocket、WebRTC、WebTransportについては詳細な解説があり、HTTP/3やQUICといった関連技術にも触れている。 全体を通して、各技術の選択基準を示唆しており、開発者にとって役立つ情報が提供されている。

ジャンク携帯の中に眠る金、でも掘り出したのは赤字でした

金価格の高騰(経済不安、リスク回避、地政学的リスクが要因)を受け、著者はジャンク携帯から金を取り出して利益を得ようと試みた。秋葉原で500円のジャンク携帯を購入し解体、金の含有量を概算で計算した結果、回収できた金の価値はわずか81円となり、大幅な赤字となった。

TerraformでAWS環境を管理するときのお役立ちTips 16選

この記事は、Terraformを用いたAWSリソース管理を効率化するための16個のTipsを紹介している。内容は、ディレクトリ構成のベストプラクティス(モジュール構成、環境別設定ファイル)、リソース作成時の注意点(公式ドキュメント参照、命名規則、outputによる値共有、for_each/countによるリソース数制御、importによる既存リソースの管理、lifecycleによる管理対象からの除外)、運用Tips(Git管理、タグ付けによるコスト管理、S3へのstateファイル保存、target指定によるplan/apply範囲の縮小、ディレクトリ細分化による高速化、秘密情報の隠蔽、プロバイダーバージョン指定)などを網羅している。 特に、複数リソースの効率的な作成や管理、セキュリティ、パフォーマンス向上に焦点を当てた実践的な内容となっている。

SVGについて理解が曖昧なあなたへ

この記事は、SVG(スケーラブルベクターグラフィックス)の概要、他の画像形式との比較、SVGを用いたアニメーション作成方法を解説したテックブログ記事である。SVGはXMLベースのベクター画像形式で、解像度によらず高画質を維持し、テキストエディタで編集可能という特徴を持つ。ラスター形式(JPG、PNG、GIF、WebP)との違いとして、拡大縮小しても画質劣化しない点が挙げられる。用途としてはロゴ、アイコン、Webアニメーションなどに適しており、CSSやJavaScriptを用いたアニメーション作成も可能である。記事では具体的なコード例も示し、SVGの可能性と活用方法を説明している。

大好きなポケモンと一緒に仕事できる「vscode-pokemon」

この記事は、VSCode拡張機能「vscode-pokemon」の紹介です。この拡張機能は、VSCodeの画面に151匹のポケモンを表示し、癒やしを与えてくれます。非商用ファンプロジェクトであり、ポケモンの画像は任天堂、ポケモン社、ゲームフリークに帰属すると明記されています。拡張機能のコード自体はCC0ライセンスで公開されています。

Power Automate for desktop から Teams のチャネルに投稿する 3 つの方法 (Version 2)

この記事は、Power Automate for desktop (PAD)からMicrosoft Teamsのチャネルにメッセージを送信する3つの方法を解説しています。

  1. Teamsコネクタ(Premiumライセンス必要): クラウドフローで利用可能なTeamsコネクタを使用する最も簡単な方法。のりじさんの記事へのリンクが参照されています。

  2. Teams Webhook (Premiumライセンス不要): Power AutomateのTeams Webhookを使ってHTTPリクエストを送信する方法。Incoming Webhookは非推奨のため、この方法が推奨されています。Adaptive Cardsを用いてメッセージをカスタマイズ可能で、PADの変数も利用できます。

  3. チャネルのメールアドレス: チャネルのメールアドレス宛にメールを送信する方法。セキュリティのため、送信可能なユーザーを制限することを推奨しています。

各方法のメリット・デメリットとライセンス要件を考慮し、状況に応じて最適な方法を選択する必要があると結論付けています。

Vertex AI SDKで実現する回答根拠付きRAG Webアプリ開発~API 実装~

この記事は、Google CloudのVertex AI StudioのGrounding with Google Search機能を用いて、生成された回答に参考文献番号と回答根拠を付与するWebアプリをVertex AI SDKを使って構築する方法を解説しています。 具体的には、Protobuf形式のレスポンスをPythonの辞書型に変換し、回答テキスト、参考文献、回答根拠を抽出し、回答テキストに参考文献番号を挿入する処理を実装しています。 Protocol Buffersについても簡単に説明されています。

【AWS Amplify × Cognito】サインインオプション変更で大苦戦! Authを作り直すプロセスまとめ

AWS Amplifyを用いて、Cognitoのサインインオプションをユーザー名からメールアドレスに変更する過程で発生した問題と解決策を記した記事である。Cognitoではユーザープールのサインインオプション変更ができないため、既存の認証設定を削除して新しいものを作成する必要があった。

主な課題は、amplify remove authコマンドが既存リソースとの依存関係(Analytics, Lambda, AppSyncなど)によって実行できないことだった。これを解決するために、CloudFormationのDeletionPolicyRetainに設定し、リソースの削除を防ぎつつ、依存関係を解消する手順を説明している。依存関係の解消は、各サービス(amplify update)の設定変更や@authディレクティブの削除などを含む。

新しい認証設定を作成後、amplify import authコマンドで既存のCognito User Poolをインポートし、ユーザーデータをCSVファイルからインポートすることで、ユーザー移行を実現した。ただし、パスワードやサードパーティ認証情報の移行は別途対応が必要である。 最後に、フロントエンドでの認証メソッドの変更点(username: emailの利用)についても説明している。

私が新しい技術コミュニティを作ろうと思うまでに、技術コミュニティで見て聞いて感じてきたこと

この記事は、著者が技術コミュニティへの参加を通して得た経験や、コミュニティ設立の経緯、そしてコミュニティへの参加に不安を感じる人へのメッセージを綴ったものである。

著者は、最初はJAWS-UGなどの既存コミュニティへの参加から始め、登壇やボランティア活動を経て、仲間と共にToranomon Tech Hubという新たなコミュニティを立ち上げた。その動機は、既存コミュニティの不足を感じたこと、特にベンダーに縛られず自由に議論できる場、新参者とベテランの交流を促進する場の必要性からきている。 オフラインコミュニティの重要性を強調しており、オンラインでは得られない「情報量の多さ」と「偶然の出会い」によるセレンディピティをメリットとして挙げている。 Toranomon Tech Hubの初回開催は大成功で、著者に大きな満足感と人生のターニングポイントを与えた。 最後に、コミュニティ参加に不安を持つ人に向けて、無理せず自分のペースで参加することを推奨している。

セキュリティエンジニアって200職あんねん(分類とキャリアの話)

この記事は、セキュリティエンジニアの多様な役割を「オフェンシブ(攻撃的)/ディフェンシブ(防御的)」と「上流工程/下流工程」の2軸で4象限に分類している。

各象限には具体的な業務例(レッドチーム演習、ペネトレーションテスト、セキュリティポリシー策定、インシデント対応など)と、関連する資格(CISSP、情報処理安全確保支援士など)が紹介されている。 セキュリティに興味を持つ読者に対し、自身のキャリアパスを考えるための指針を提供することを目的としている。

errgroupの上位互換? sourcegraph/concを触ってみる

この記事は、Go言語のパッケージsourcegraph/concを紹介している。sync.WaitGroupsync/errgroupの上位互換として、より扱いやすく、複数のエラーの取得やgoroutineのpanicのキャッチ、同時実行数の制限などを容易に行える点が特徴。poolの生成にメソッドチェーンを用い、WithErrors, ResultContextPool, panics.Catcherといった機能でエラー処理や結果取得、panicリカバリーを強化している。iterstreamによる順序保持された並行処理機能も備えているが、この記事では詳細に触れていない。 Goの並行処理を簡潔かつ安全に記述するための有用なパッケージとして紹介されている。

Flutter開発: finalとvarの現実的な使い方

この記事はFlutter開発におけるfinalvar変数の使い分けについて解説しています。

要約:

Flutter開発では、Linterと単体テストの有無によってfinalvarの使い分けが重要になります。Linterを使用する場合は、基本的にfinalを使用しコードの安全性を高めます。しかし、単体テストを実装する場合は、テストのためのモックを容易に代入できるvarの使用が推奨されます。 varを使う場合は、final関連のLintルールを無効化するか、より柔軟なLinter設定を選択する必要があります。 単体テストを実装しない場合は、常にfinalを使うのが良いでしょう。

要点:

  • final: 値を変更できない変数。Linter使用時は基本final
  • var: 値を変更できる変数。単体テストでモックを使う場合に推奨
  • 単体テストを行う場合はvar、行わない場合はfinalを使用するのがベストプラクティス。

AWS IoT TwinMakerとAmazon Managed Grafanaでフロアマップを作成してみた

この記事は、新卒エンジニアがAWS IoT TwinMakerとAWS IoT SiteWiseを用いて、展示会用フロアマップを3Dで表示するシステムを作成した過程を記述したものである。 PDFのフロアマップをSVGに変換し、Blenderで3D化、glTF 2.0でエクスポート。 Amazon Managed Grafana、AWS IoT TwinMakerのワークスペースを作成し、プラグインとデータソースを設定。 SiteWiseとTwinMakerを同期させ、Grafanaでフロアマップのオブジェクトの状態を表示する仕組みを構築した。 各ツール(pdf2svg, Inkscape, Blender, Grafana, TwinMaker, SiteWise) の使用方法と、IAMロール設定、ポリシー作成の詳細な手順が記載されている。

Gemini Multimodal APIで画面共有しながらAIと会話をする & Gemini 2.0 の OCR 性能を測ってみる!

この記事は、GoogleのGemini 2.0 Flash expモデルを使った生成AIアプリケーション開発のチュートリアルです。Google AI StudioのMultimodal APIを用いて、音声、動画、画面共有に対応したデモアプリケーションの作成方法と、Gemini 2.0の画像からのテキスト抽出、物体検出(バウンディングボックス)機能の実験結果を説明しています。 デモアプリはWebSocketを用いており、画面共有機能の追加方法も示されています。物体検出の実装ではgoogle-genaisupervisionライブラリを使用し、麻雀牌画像を例に境界ボックスを検出し、結果を描画しています。

Google Cloud Partner Top Engineer 2025 Fellowに選出されるためにやったこと全まとめ

この記事は、著者がGoogle Cloud Partner Top Engineer 2025 Fellowに選出された経験を基に、同アワードの選考基準と自身の活動内容を解説している。選考基準は大きく分けて4つのポイント(資格数、普及への貢献、案件・ソリューション開発への貢献、Google Cloudビジネスへの情熱)と加点要素(GenAI Skill Badge)からなり、著者はこれらの基準を満たすよう、Google Cloud認定資格の全冠取得、ブログ記事の執筆、社内外の登壇、複数の大規模案件への貢献など幅広く活動した。選出要因としては、応募要項をバランス良く満たした実績と、多くのプロジェクトへの多様な立場で関与し得た知見を多数アウトプットした点が挙げられている。 今後、自身の経験を活かし、組織への貢献と社内からの更なるFellow選出を目指していくと結論付けている。

Microsoft の「MarkItDown」で Officeファイルを Markdownファイルに変換【Python】

この記事は、Microsoftが公開したOfficeファイル(Excel, Wordなど)をMarkdownに変換するライブラリ「MarkItDown」を試したレポートです。 厚生労働省の統計データExcelファイルと、e-Govデータポータルのオープンデータ基本指針Wordファイルを用いて、MarkItDownでMarkdownへの変換を行い、その結果を出力し、概ね問題なく変換できることを確認しています。 ただし、セル結合などの複雑なフォーマットについては、今後の検証が必要だと結論付けています。 さらに、オンラインコンバータへのリンクも紹介しています。

migemoとfzfを合体させたようなものを作りたい

この記事は、ローマ字入力から日本語を検索できるmigemoと、あいまい検索が可能なコマンドラインツールfzfを組み合わせたツールの開発構想を紹介している。 migemofzfはどちらもGo言語で実装されているため、両者を統合したツールをGoで開発したいと考えているものの、Goの経験が浅いため実現できていない、という内容である。最終的にはWebブラウザ上でWASMを用いて活用することを目指している。

GISエンジニアの必携ツールとなったDuckDBの紹介

この記事は、コマンドラインで動作する軽量データベースであるDuckDBと、GISデータ処理のためのSpatial拡張機能の使い方を紹介しています。DuckDBは様々なデータ形式(CSV、XLSX、Shapefile、GeoJSONなど)をSQLで直接操作でき、高速に処理できる点が特徴です。Spatial拡張機能により、GEOMETRY型のサポート、空間関数の利用、GISベクターデータの読み書きが可能になります。記事では、国土数値情報(行政区域データ)を用いて、DuckDBでShapefileを読み込み、SQLでデータ加工を行い、GeoPackage形式で書き出す手順を具体例と共に示しています。 さらに、空間インデックスの構築や、QGISとの連携についても触れています。

Copernicus でスイカとレモンの断面

この記事は、HoudiniのCopernicusを用いてスイカとレモンのリアルな断面を制作した方法を紹介するテックブログです。 スイカはVoronoi Fractureによる破壊、SDFボリュームからの距離情報と3Dノイズを用いたテクスチャ作成、そしてOpenCLを用いたVDBボリュームからの種周りのくぼみ表現がポイントです。レモンはスイカの手法を応用しつつ、果肉模様の表現に3Dノイズの立体的な変形処理が加えられています。両モデルとも、最終的にRBDシミュレーションによる破壊表現も試みられています。 詳細なノードネットワークは添付のhipファイルを参照のこと。

CVE-2024-10979をローカルで再現してみる

この記事は、PostgreSQLの脆弱性CVE-2024-10979をローカル環境で再現した手順を解説している。この脆弱性により、権限のないデータベースユーザーがPL/Perlを用いて環境変数(PATHなど)を改ざんし、任意のコードを実行できる。記事では、Docker環境でPostgreSQL 15.8を構築し、PL/Python関数を使ってPATH環境変数を変更し、自作のスクリプトを実行することに成功した。これにより、CVE-2024-10979の深刻さを実証している。

要約文の要点:

  • PostgreSQLの脆弱性CVE-2024-10979を解説
  • ローカル環境での再現手順を示す(Docker, PL/Python利用)
  • 環境変数改ざんによる任意コード実行を実証
  • 脆弱性の深刻さを強調

PydanticのLLMエージェントフレームワーク「PydanticAI」を使ってみた

この記事は、PythonのデータバリデーションフレームワークPydantic開発チームが公開した新しいAIエージェントフレームワーク「PydanticAI」を紹介している。PydanticAIは、FastAPIのように生成AIを用いたアプリケーション開発を容易にするフレームワークで、OpenAI、Gemini、Groqなどのモデルをサポートし、型安全性、依存性注入、ストリーミングレスポンス対応、Logfire統合といった特徴を持つ。シンプルな記述でエージェントを作成でき、システムプロンプト、ツール、依存性注入などを容易に実装できる一方、対応モデルが少ないなど発展途上な面もある。 記事では具体的なコード例を用いて、エージェントの作成、システムプロンプトとツールの定義、依存性注入、型安全性の確保、ストリーミングレスポンス、テスト、評価方法を説明している。

以下に要約した内容を箇条書きで示します。

  • PydanticAIの概要: Pydantic開発チームによる新しいAIエージェントフレームワーク。FastAPIのような設計で生成AIアプリ開発を容易にする。
  • 主な特徴: OpenAI、Gemini、Groq等のモデルサポート、型安全性、依存性注入、ストリーミングレスポンス対応、Logfire統合。
  • シンプルな記述: システムプロンプト、ツール、依存性注入などを簡潔に記述できる。
  • 発展途上な点: 対応モデルが少ない、ベクトルデータベース連携は自前実装が必要など。
  • 記事の内容: エージェント作成、システムプロンプト/ツールの定義、依存性注入、型安全性の確認、ストリーミングレスポンス、テスト(ユニットテストと評価)の具体的なコード例と解説。

EPSS (Exploit Prediction Scoring System) を整理する

本記事は、急増する脆弱性への効率的な対応策として、脆弱性悪用可能性予測システムEPSS(Exploit Prediction Scoring System)を紹介している。EPSSは、CVE情報や実世界の攻撃データを用いて、今後30日以内に脆弱性が悪用される確率(0〜1)を予測する。CVSSのような脆弱性の固有の危険性を評価するシステムとは異なり、悪用される可能性に焦点を当てている点が特徴である。記事では、EPSSのデータモデル、データソース、スコアファイルの入手方法、そして脆弱性検索ツールcvemapの使い方についても解説している。 EPSSは、脆弱性対策の優先順位付けに役立つツールとして注目されている。

ispr.xと黎明期のパソコン文化

この記事は、16bitパソコン黎明期のフリーソフト作家が、X68000向け動画編集ソフト「ispr.x」を開発した体験記である。8bitパソコン時代からのプログラミング経験を踏まえ、当時不可能とされていたHDDへのリアルタイム動画録画・再生、ノンリニア編集を実現した。メモリ不足やCPU性能の限界、HDDの書き込み速度といった困難を、独自の工夫(画像フォーマット設計、圧縮技術、FIFOバッファの活用など)で克服した。ispr.xは多くのX68000ユーザーに受け入れられ、著者に大きな達成感をもたらしたが、後にMPEGなどの新技術に取って代わられた。この記事は、困難を前にしても「自分で作る」という精神の大切さを訴え、現代の読者にも新たな挑戦を促している。

ウォータフォールに少しずつアジャイルのベストプラクティスを導入していった話

本記事は、大規模ウォーターフォール開発プロジェクトにおいて、アジャイル開発の手法を一部取り入れる試みについて述べている。具体的には、Microsoft Plannerを用いた進捗管理、定期的な振り返り、会議後の議事録作成と認識合わせを実施した。Plannerは個人利用には適していたものの、複数チームでの利用には不向きだった。振り返りは当初有効だったが、プロジェクト後半のスケジュール逼迫により頻度が減少した。会議後の認識合わせは有効であったが、後半はスケジュール調整のため、実施の可否をチームで判断するようになった。全体として、大規模プロジェクトでのアジャイル要素の導入は困難な面もあったものの、一部の手法は有効に機能したと結論付けている。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?