
Python
Pythonは明確で読みやすい構文を持っているため、プログラミング初心者にもおすすめの言語です。また多くのコミュニティがあり、それぞれがライブラリ開発やフレームワーク開発に貢献しています。
イベント
マガジン
技術ブログ
はじめに こんにちは、アプリケーションサービス本部の遠藤です。 最近、Amazon S3・Amazon DynamoDBに依存するPythonの処理に対して、motoを使ったユニットテストを実装する機会がありました。実際のAWSアカウントに接続せず、ローカルやCI上で高速にテストを回せる点が便利だった一方、使ってみて初めて気づいた注意点もいくつかあったので、基本的な使い方とあわせてまとめます。 motoとは motoは、boto3(AWS SDK for Python)の呼び出しをプロセス内でインメモリのフェイクAWSに差し替えてくれるライブラリです。LocalStackのように別途コンテナを…
はじめに こんにちは!丹羽と申します。 初めてのブログ投稿です。よろしくお願いします。 今回は私がサイオステクノロジーに入社して1年間で読んだ書籍をご紹介します。 こんな方へおすすめ 入社1年目の新入社員・新人エンジニアの方 IT業界への就職が決まった大学4年生の方 「仕事の進め方」や「文章力」に課題を感じている方 ビジネス書籍 入社1年目の教科書 ワークブック その名の通り、入社1年目の新入社員に向けたビジネス書です。 「優秀な新人」や「モチベーションの高い新人」を目指すものではなく、ビジネスパーソンとして最も重要な「信頼」を得ることを目指します。 抽象的なことではなく、仕事をする上での具体的な仕事術が書いてあります。 この本を「読む」「読まない」では仕事に適応する速度が変わると思います。 ITエンジニア1年目の教科書 新人エンジニアが仕事で成功体験を積み重ね、自分で自信を育てられるように、「優秀な若手エンジニアが自然とやっていること」を言語化した本です。 構成は、テクニカルスキル(第1部)、ヒューマンスキル(第2部)、自己投資スキル(第3部)となっており、スキルごとにまとまっているので読みやすいです。 何回も読み直している本の1つです。 コンサル一年目が学ぶこと テーマが「コンサル一年目が学ぶこと」ですが、職業や業界を問わず、15年、20年とずっと役立つ普遍的なスキルを、基礎的なレベルから学べる本です。 4章構成で、それぞれ、話す技術(第1章)、思考術(第2章)、デスクワーク術(第3章)、ビジネスマインド(第4章)となっています。 特に第1章の、「相手の期待値を把握する」「上司の期待値を超える」という節は、社会人1年目からずっと心がけることの1つだと思いました。 会社では教えてもらえない 上に行く人の報連相のキホン 「報連相」に焦点を当て、「きちんと仕事をこなしているのに評価されない」「仕事が思うように進まない」と悩んでいる新入社員含め若手のビジネスパーソン向けの本です。 基本的に仕事は一人でするものではなく、自分に対して業務の指示と管理をする上司が、仕事の成果の主な評価者です。その上司に対して「報連相」をするタイミング、対応の優先順位を上げてもらう方法など、すぐにでも実践できる具体的なハウツーが書いてあります。 「報連相」は社会人において必須スキルなので、今回紹介するビジネス書籍の中でも最もおすすめしたい書籍の1つです。 ToDoリストですら使えなかった僕が見つけたすごい仕事術 「ToDoリストでタスクを管理せよ」「朝活で時間を有効活用せよ」「やり抜く力を身に付けよ」など、ビジネス書に書かれているような「仕事術」ができなかった、または難しい方向けの本です。 何十人もの部下を見てきた上司に「今までで一番仕事ができない」と言われた筆者が、外注したら2000万円かかると言われていた作業を1人でやり、「仕事ができる」と認められるようになるまでに編み出した仕事術が書かれています。その仕事術とは、「自分の意志」や「頑張り」に頼らず、意志力ゼロでも動く「仕組み」をつくるものです。 「頑張ろうとしても頑張れない」「頑張っているのにミスをしてしまう」といった方におすすめです。 超訳 カーネギー 人を動かす エッセンシャル版 本書は『超訳 カーネギー 人を動かす』を文庫エッセンシャル版として加筆訂正を加えて再編集したもので、職場、学校、家庭で円満な人間関係を築き、大きな成果を出すための、人間関係の原則が書かれた本です。全部で項目が181個ありますが、全て1ページ~2ページで書かれたものなのでサクサク読めます。 「181個も覚えることがあるのか」と思われるかもしれませんが、テーマを変えただけで趣旨が重複しているものが多いので、読むうちに筆者が伝えたいことがわかると思います。 体力がない人の仕事の戦略 体力がない人が根性論に頼らず、限られたエネルギーで成果を出す「燃費の良い働き方」が書かれている本です。仕事をやる上で「今よりラクな方法を探す」重要性を説いています。 特に真面目でいつも全力で頑張ってしまう方、頑張りすぎてガス欠を起こしたことがある方におすすめです。 伝わる文章が「速く」「思い通り」に書ける87の法則 分かりやすい言葉で「伝わる文章」の書き方が87項目にわたって書かれた本です。 本書のノウハウは、企画書・報告書・日報の作成から、論文やレポート、プライベートのチャットのやりとり、ブログやSNSの投稿記事まであらゆる文章に応用できます。 私は仕事上使用するチャットツールの文章が上手く伝わらず悩んでいましたが、この本がとても参考になりました。 エンジニアのための文章術再入門講座 新版 ITエンジニアが業務で必要な文書・文章を書くために「最低限必要な知識、ノウハウ、コツ」を整理した本です。 文章の書き方の基礎技術から、社内への報告や社外への依頼の書き方、相手に配慮した円滑な社内コミュニケーションの方法などが書かれています。 色々な方法が書かれていますが、社内での書き方もあると思うので、この本と併せて普段のチャットやメールから、先輩の書き方を勉強することも大切だと思いました。 IT仕事図鑑 本書は、そもそもIT業界とは何かから始まり、IT業界での働き方、IT仕事の基礎知識、IT職種の説明が書かれた本です。掲載されている職種は64種類と広範囲をカバーしており、この本に載っていないIT職種はほぼ無いと思います。 ITについて網羅的に書かれているので、余裕があれば手元に置いておいてもよいと思います。 技術書籍 リーダブルコード とても有名な、「理解しやすい」=「優れた」プログラムコードを書くための本です。 最初に悪い例が出され、その後改善例が出されるので理解しやすいです。 個人的に特に印象に残ったのが「条件式には基本的にif/elseを使い、三項演算子を使わない」という項です。 AIにコードを書いてもらうと、1行で書ける条件式は三項演算子になることが多いです。簡潔な条件式なら理解しやすいのですが、複雑な条件式だと途端に理解に時間がかかります。 以前SNSで「三項演算子を使えるようになったら上級者」「三項演算子を使うのがスマートな書き方である」という文言を見かけて、「三項演算子に慣れたら読みやすくなるだろう」「コードの行数は少なければ少ないほどいいのだろう」と思っていました。 なので、上記の項は目から鱗でしたし、SNSの投稿とは違い実例も載っていたので、説得力がありました。SNSの情報を信じるよりも、技術書に載っている情報を信じた方がいい、という教訓にもなりました。 プログラムの基本的な文法を一通り覚えた方におすすめです。 プログラマー脳 本書は、コードリーディングやコーディング時の脳の働きを理解することで、プログラマーとしてのスキルや習慣を向上させる本です。 コードリーディングやコーディング時は、脳のどの機能と関連しているか、その脳の機能をどう補うかについて書かれています。 コードリーディングやコーディングの効率を上げたい方におすすめです。 Webを支える技術 本書は、HTTP、URI、HTMLなど、Webを支える根本的な技術を学べる本です。 「はじめに」の部分で対象読者は「Web技術を使ったシステム開発の経験がある人」と記載がありますが、理解に特別知識や経験が要るものではないです。 また巻末に付録としてステータスコード(404 Not Foundなど)の一覧があります。 この本を読む前は、出てきたステータスコードの意味をその都度調べていたのですが、この本で学んだ後は調べることはほぼ無くなりました。 IT業界に就職予定の方や、新人エンジニアの方におすすめです。 ソフトウェアテストの教科書 本書は、ソフトウェアテストを「実践的で」「わかりやすく」解説した本です。 実際にテストでバグが見つかりやすい箇所から、テストドキュメントの書き方まで幅広く書かれています。 テスト業務を1回でもやったことがあるエンジニアの方におすすめです。 Python ゼロからはじめるプログラミング 本書は、Pythonを学習して使えるようになることに加えて、プログラミングの基礎を習得することにも重点を置いた本です。 Pythonの基礎だけでなく、「プログラムとは何か」ということまで解説してくれます。 ページ数も少なく、簡潔にわかりやすく書かれているので読みやすいです。 ただ、今後色んな言語を学習していくとすると、初めて学ぶプログラミング言語はPython以外が個人的にはおすすめです。 なので、他のプログラミング言語を学習済で、Pythonの基礎を学びたい方におすすめです。 まとめ 今回は、私がサイオステクノロジーに入社して1年間で読んだ書籍をビジネス書・技術書問わずご紹介しました。 何か1冊でも参考になれば幸いです。 ご覧いただきありがとうございます! この投稿はお役に立ちましたか? 役に立った 役に立たなかった 1人がこの投稿は役に立ったと言っています。 The post エンジニア1年目に読んだ書籍をまとめてみた first appeared on SIOS Tech Lab .
本ブログは 2026 年 7 月 29 日に公開された AWS Blog “ Secure your npm and pip package updates in Amazon Linux ” を翻訳したものです。 npm や PyPI からパッケージをインストールして使用している場合、パッケージが公開されてからの数時間が最もリスクの高い期間です。スキャナーは公開前のパッケージを分析できないためです。Node.js と Python のパッケージに影響を与えた最近のサプライチェーンイベントは、数時間以内に検出され、削除されています。しかし、それらのパッケージが一般に公開されていた間にユーザーがインストールしていた可能性があり、セキュリティインシデントにつながるおそれがありました。この後で示すデータからわかるように、ユーザーがそれらのパッケージの利用を 1 日待っていれば、最近のサプライチェーンセキュリティイベントはいずれも影響を及ぼさなかったはずです。 この記事では、お使いの環境がこのリスクにさらされるのを防ぐ 1 行の設定として、npm と pip の依存関係のクールダウンを紹介します。この設定により、パッケージマネージャーは過去 24 時間以内に公開されたバージョンをスキップするようになります。その結果、予期しないパッケージがシステムに到達する前に、セキュリティコミュニティがそれらを検出して削除する時間を確保できます。これらの設定で、デフォルトの構成を保護できます。一方、パッケージの更新には、セキュリティリスクに対処するためのセキュリティ修正を受け取るという、もう 1 つのユースケースがあります。この場合は、パッケージをより新しいバージョンに更新します。この記事では、クールダウン設定をオーバーライドする方法も紹介します。この方法を使用すると、新たにインストールするパッケージの更新は遅延させたまま、最新のセキュリティパッチをインストールできます。コードの欠陥の重大度を評価し、既知のリスクがある場合はセキュリティ修正を適用することをお勧めします。重大度に基づくセキュリティ修正の扱い方や、重大度に応じたセキュリティ修正の SLA の指定方法は、このブログ記事の範囲外です。 背景: 相反する 2 つのリスク Amazon Linux のパッケージで提供されるソフトウェアは、リリース前に Amazon のパッケージメンテナーによるレビューを受け、ガードレールを通過します。オープンソースソフトウェアも、同様のプロセスとガードレールの下で開発、保守されています。一方、npm と PyPI のレジストリは誰でもパッケージを公開でき、レビューも必須ではありません。そのため、なりすましや盗まれた認証情報などが原因で、予期しないパッケージがレジストリに追加される可能性があります。つまり、2 つのリスクの板挟みになります。古いソフトウェアにはパッチが適用されていない脆弱性が蓄積していく一方で、新しいパッケージにはまだ検出されていない予期しない脆弱性が含まれている可能性があります。最善のアプローチは、最新のリリースをすぐには採用せずに十分に新しい状態を保ちながら、推奨されるセキュリティ修正を適用することです。次の図は、2 種類のリスクの関係を抽象的に示しています。予期しない更新はガードレールを回避する可能性があるため、サプライチェーンのリスクはパッケージの公開直後に最も高くなります。パッケージの公開後は、監査でその内容をレビューし、時間の経過とともに潜在的な欠陥を特定できます。セキュリティ修正を適用しなければ、コードのあらゆる欠陥によるリスクが積み重なっていきます。 図 1: ソフトウェアのライフタイムを通じたリスク。パッチが適用されていない脆弱性のリスクは、時間の経過とともに増加します。また、公開されたばかりのソフトウェアは、サプライチェーンのリスクも高くなります。 問題: 最初の 1 日のリスクが最も高い サプライチェーンイベントには一貫したパターンがあります。想定外の作成者が、予期しないパッケージまたはパッケージバージョンを公開し、自動化されたシステムやユーザーがそれを取り込むのを待ちます。セキュリティ研究者や自動スキャナーは通常、数時間以内にこれらのパッケージを検出して削除しますが、その時点で既にシステムはリスクにさらされています。 Datadog の 2026 State of DevSecOps レポート によると、JavaScript アプリケーションの 54% が、少なくとも 1 つの依存関係を、そのリリースから 1 日以内にインストールしています。この時間枠こそが、サプライチェーンのリスクが最も高い期間です。最近のイベントを見ると、検出がいかに迅速に行われているかがわかります。 イベント リスクにさらされる期間 Nx s1ngularity (2025 年 8 月) 4~5 時間 axios (2026 年 3 月) 2~3 時間 Bitwarden CLI (2026 年 4 月) 93 分 TanStack (2026 年 5 月) 30 分 node-ipc (2026 年 5 月) 24 時間未満 解決策: 当日に公開されたパッケージをスキップする 依存関係のクールダウンは、最近公開されたバージョンをスキップするようパッケージマネージャーに指示する仕組みです。レジストリに公開されてから設定した期間 (例えば 1 日) が経過していないバージョンはインストールされないため、セキュリティコミュニティが予期しないバージョンを検出して削除する時間を確保できます。 1 日のクールダウンを設定すれば、前述の表に記載したイベントをすべてブロックできます。注目すべきは、これらのイベントのいくつかでは有効な来歴証明 (provenance attestation) が生成され、ビルド検証にも合格していた点です。つまり、来歴チェックだけではこれらのイベントを阻止できませんでした。クールダウンは信頼ではなく経過時間に基づいてブロックするため、認可メカニズムとは独立して機能します。 npm (v11.10.0 以降) と pip (v26.1 以降) は、どちらもクールダウンをサポートしています。Amazon Linux 2023 では、 リリース 2023.12.20260608 以降、Node.js 24 と Python 3.14 でこれらのパッケージを提供しています。 固定されたバージョンを指定した npm ci または pip install -r requirements.txt によるロックファイルベースのインストールでは、最新のパッケージ更新は取り込まれません。これらのインストールには、クールダウンは適用されません。クールダウンが影響するのは、新規または更新されたパッケージの解決のみです。詳細については、 「ロックファイルベースのインストールとクールダウン」 セクションを参照してください。 前提条件 次のソリューションを実装するには、以下の前提条件を満たしている必要があります。 Node.js 24 と npm 11.10.0 以降 (nodejs24-24.14.1-1.amzn2023.0.1 以降に含まれる) Python 3.14 と pip 26.1 (python3.14-pip-26.1.1-1.amzn2023.0.1 以降に含まれる) pip-audit (Python パッケージをスキャンするツールで、既知の欠陥に基づいてクールダウンをオーバーライドするスクリプトに必要)。インストールするには、 python3.14 -m pip install pip-audit を使用します。 Node.js と Python の今後のバージョンでは、新しいコマンドが導入されます。以下のツールコマンドは、Node.js 24 と Python 3.14 を使用する Amazon Linux 2023 で動作します。記載しているコマンドは特定のパッケージバージョンを対象としているため、それ以降のリリースを使用する場合はコマンドを調整してください。 npm のクールダウンを設定するには Node.js のバージョンに応じたグローバル設定ディレクトリを作成します。 sudo mkdir -p /usr/lib/nodejs24/etc クールダウン設定を含む npm 設定ファイルを追加します。 sudo npm-24 config set min-release-age 1 --location=global 次のコマンドを実行して、クールダウンが有効になっていることを確認します。 npm-24 config list 出力に before = "<timestamp from 24 hours ago>" と表示されれば、npm が 1 日のクールダウンを日付フィルターに変換したことを確認できます。 詳細については、 npm min-release-age のドキュメント を参照してください。 pip のクールダウンを設定するには クールダウン設定を含むシステム全体の pip 設定ファイルを作成します。 sudo python3.14 -m pip config set --global global.uploaded-prior-to P1D 設定を確認します (Python 3.14 および pip 26.1 以降の場合)。 python3.14 -m pip config list 出力に global.uploaded-prior-to='P1D' と表示されます。 古いバージョンの pip (25.x) はこの設定を警告なしで無視するため、この設定はすぐにデプロイしても問題ありません。 クールダウンなしでパッケージの最新バージョンをインストールするには セキュリティ修正を受け取りたい場合など、パッケージの最新バージョンをインストールするにはどうすればよいでしょうか? 以下のセクションでは、ツールのコマンドラインでフラグをオーバーライドする方法を説明します。緊急の更新が必要なパッケージを特定するには、使用しているパッケージマネージャーに対応する監査コマンドを実行します。 npm audit または python3.14 -m pip_audit npm パッケージの場合 クールダウンをオーバーライドしてパッケージをインストールします。 npm-24 install <package-name> --min-release-age=0 pip パッケージの場合 クールダウンをオーバーライドしてパッケージをインストールします。 python3.14 -m pip install <package-name> --uploaded-prior-to="P0D" 緊急の更新が必要なパッケージを更新する 既知のセキュリティリスクがあるパッケージには、セキュリティ修正を適用することをお勧めします。セキュリティ修正を適用するために、クールダウンを完全に無効にする必要はありません。監査ツールで既知の問題があるパッケージを特定し、それらのパッケージに限ってクールダウンをオーバーライドします。 前提条件: Python 3 と pip-audit がインストールされていることを確認してください (python3.14 -m pip install pip-audit)。 重要: これらのスクリプトは考え方を示すためのものです。本番環境で使用する場合は、エラー処理、ログ記録、テストを追加してください。また、自動化されたパイプラインでパッケージを更新する前に、パッケージをレビューしてください。 npm パッケージの場合 次のスクリプトは、既知のセキュリティ修正がある npm パッケージを特定するために必要な手順を示しています。npm audit コマンドは、該当するパッケージを JSON 形式で出力します。次に、npm install コマンドでこのリストのパッケージを更新します。このとき、最新バージョンが取得されるようにクールダウンをオーバーライドします。 npm audit --json | python3 -c " import json, sys, subprocess data = json.load(sys.stdin) for pkg in data.get('vulnerabilities', {}): subprocess.run(['npm-24', 'install', f'{pkg}@latest', '--min-release-age=0']) " pip パッケージの場合 次のスクリプトは、既知のセキュリティ修正がある pip パッケージを特定するために必要な手順を示しています。pip_audit コマンドは、該当するパッケージを JSON 形式で出力します。次に、クールダウンをオーバーライドする pip install コマンドで、このリストのすべてのパッケージを更新し、最新バージョンを取得できるようにします。 python3.14 -m pip_audit --format=json | python3.14 -c " import json, sys, subprocess from packaging.version import Version data = json.load(sys.stdin) for dep in data.get('dependencies', []): pkg = dep['name'] vulns = dep.get('vulns', []) if not vulns: continue fix_versions = [v for vuln in vulns for v in vuln.get('fix_versions', [])] if not fix_versions: print(f'{pkg}: vulnerable but no fix published, skipping') continue fix = max(fix_versions, key=Version) print(f'Updating {pkg} -> {fix}') subprocess.run(['python3.14', '-m', 'pip', 'install', f'{pkg}=={fix}', '--uploaded-prior-to=P0D']) " ロックファイルベースのインストールとクールダウン 固定されたバージョンを指定して npm ci または pip install -r requirements.txt を使用する場合、クールダウンは適用されません。これらのコマンドは、パッケージが公開されてからの経過時間にかかわらず、ロックファイルで指定された内容をインストールします。クールダウンが影響するのは、新規または更新されたパッケージの解決のみです。 業界での採用: PyPI と Node.js のエコシステム全体で広がるクールダウンの利用 主要なパッケージマネージャーや企業が、依存関係のクールダウンを採用し始めています。2026 年 5 月時点で、広く使われている複数のパッケージ管理ツールにクールダウン機能が搭載されています。具体的には、pnpm (高速な Node.js パッケージマネージャー)、Renovate (依存関係の自動更新ツール)、StepSecurity (サプライチェーンセキュリティプラットフォーム) です。 pnpm 11 では、 minimumReleaseAge がデフォルトで有効になっています。pnpm は、クールダウンをオプトインではなくオプトアウト方式にした最初の主要なパッケージマネージャーの 1 つです。 Renovate の config best-practices プリセットには 2025 年から 3 日間の npm クールダウンが含まれており、多くの企業で採用されています。 StepSecurity Secure Registry は、エンタープライズ顧客向けに、設定可能なクールダウン期間を採用しています。StepSecurity は、デフォルトとして 10 日間の遅延を推奨しています。 AWS によるオープンソースサプライチェーンの保護への取り組み AWS は、予期しないパッケージがお客様に届く前に検出できるよう、アップストリームのパッケージレジストリをスキャンしています。 Amazon Inspector は、ソフトウェアの脆弱性とネットワークの露出がないかワークロードを継続的にスキャンするセキュリティ管理サービスで、AI 支援の検出ルールを使用してアップストリームのパッケージレジストリもスキャンしています。2025 年には、Amazon Inspector の研究者が、トークンファーミングキャンペーンに関連する 15 万件以上の予期しない npm パッケージを特定 しました。 AWS Security は、 Shai-Hulud ワーム と axios イベント に関する詳細な対応ガイダンスを公開しました。 AWS は、 Open Source Security Foundation の 1,250 万ドル規模のオープンソースセキュリティ助成金 に拠出し、エコシステム全体に利益をもたらすプロアクティブなスキャンインフラストラクチャに資金を提供しています。 予期しないパッケージは通常、公開から数時間以内に検出されます。1 日のクールダウンを設定しておけば、この検出期間中にそれらのパッケージをインストールしてしまうことはありません。 推奨事項 Amazon Linux 2023 の設定を保護するには、以下を実施してください。 1 日のクールダウンを設定する : 前述のセクションで示したとおり、npm と pip に設定します。外部レジストリには人によるレビューがないため、防御側が問題を検出できる時間を確保してください。 必要に応じてオーバーライドする : 緊急のセキュリティパッチを適用する場合は、コマンドごとのフラグを使用します。 npm audit または pip_audit を実行する : 定期的に実行し、すぐに対応が必要なパッケージを特定します。 クールダウンは 1 行の設定で有効にでき、すぐに保護が適用されます。 まとめ この記事で紹介したソリューションを実装すると、npm と PyPI の環境を、予期しないコードが入り込むケースの大半から保護できます。1 日の更新遅延により、最新のセキュリティ修正を適用できる状態を保ちながら環境を保護できます。環境をさらに保護する方法については、次のリソースを参照してください。 Node.js セキュリティのベストプラクティス npm min-release-age のドキュメント Pip Secure installs のドキュメント pip uploaded-prior-to のドキュメント OpenSSF Best Practices Amazon Linux 2023 のドキュメント Norbert Manthey Norbert は Amazon Linux チームのセキュリティエンジニアで、Amazon EC2 のハイパーバイザーとオペレーティングシステム全体にわたるプロアクティブなセキュリティに注力しています。オペレーティングシステムのデフォルト設定の強化、静的分析と AI 駆動の分析によるコードの問題の早期検出、Amazon Linux に同梱されるパッケージのサプライチェーンセキュリティの向上に取り組んでいます。また、これらのプロセス改善の自動化、ソフトウェア開発ライフサイクルへの組み込み、シフトレフトを提唱しています。 本ブログは Security Solutions Architect の 中島 章博 が翻訳しました。
























