【2024年末最新】AWS 学習におすすめの技術書 厳選12冊(初級者から上級者まで)
この記事は、AWSに関する12冊の技術書を、入門、インフラ、開発、特定サービスの4つのカテゴリーに分類し、それぞれのおすすめ書籍を紹介している。各書籍のレビュー、構成、価格、Amazonレビューなどを掲載し、初心者から上級者まで幅広く対応できるよう配慮されている。特に「AWSの仕組みとサービスがたった1日でよくわかる」「AWS運用入門」「AWSで実現するモダンアプリケーション入門」の3冊はおすすめとして挙げられている。記事では、著者の個人的な経験に基づいたレビューと、各書籍のメリット・デメリットが明確に記述されている。 最終的には、AWS学習の際に技術書を活用することを推奨している。
【最新技術に振り回されない】 低レイヤーに強くなるための鉄板コンテンツ集
この記事は、エンジニアが低レイヤーを学ぶための様々なリソースを紹介する。コンピュータアーキテクチャ、CPU、OS、システムプログラミング、コンピュータネットワーク、コンパイラ/インタプリタといった分野を網羅し、各分野に関連する書籍、動画、ゲームなどを多数掲載している。 初心者から上級者まで、自身のレベルや興味に合わせて学習できるよう、多様な選択肢を提供しているのが特徴である。 低レイヤーの理解は、ソフトウェアの動作原理を深く理解し、パフォーマンス改善やバグ解決に役立つと強調されている。
【保存版】フロントエンド初心者がまず読むべき資料まとめ【2024年最新】
この記事は、2024年現在のフロントエンド開発に必要な知識と学習リソースを初心者向けにまとめたものです。HTML、CSS、JavaScript、TypeScriptといった基礎言語に加え、React、Vue.js、Next.js、Nuxt.js、Svelte、Lit、Angular、Ember.jsといった主要フレームワーク、React Router、Redux、Axios、Lodashといったライブラリ、そしてWebpack、Viteといったビルドツール、テスト手法、SEO、サイトパフォーマンス改善、監視ツール、ホスティング、アプリケーション構造といった幅広いトピックを網羅しています。それぞれのトピックについて、具体的な学習に役立つ資料(公式ドキュメント、チュートリアル、解説記事など)を多数紹介しており、さらに学習ロードマップやAI支援ツールの活用方法についても触れています。初心者から中級者、そしてさらにスキルアップを目指すベテランエンジニアまで、自身のレベルに合わせた学習を進めるための包括的なガイドとなっています。
リーダー1年目の懺悔
この記事は、開発チームリーダー1年目の著者が、リーダーとしての経験と反省、そして「リーダーの仮面」という書籍からの学びをまとめたものである。 著者は、突然リーダーを任され、当初はチャットでの指示、フラットな関係性、優しい指摘、お願いベースの作業依頼などを行っていたが、これらが非効率で部下の成長を妨げていることに気づいた。 書籍を参考に、指示方法を明確化し、上司と部下の関係性を意識した指示、作業依頼を「言い切る」スタイルに変更するなど、改善に取り組んでいる。 また、書籍から「いい人」で終わらないか、部下の成長を待つ忍耐、部下との競争意識、マネジメント優先、自身の辞任への過剰な心配といった5つの自省点を挙げ、自身の改善への取り組みを記述している。
アセンブラ言語プログラミングテクニック【基本編】
この記事は、ベテランITエンジニアが、アセンブラ言語と、特に古いCPUにおけるプログラミングの苦労と工夫を語るものです。古いCPUはレジスタ数が少なく、乗算・除算命令も無いなどの制約があったため、シフト演算を用いた乗算・除算、ループ展開、インデックスインダイレクトモードなどの高度な最適化技法が用いられたと説明しています。これらの技法は、現代のCPUでは不要になったものですが、当時限られたリソースの中で性能を最大限引き出すための必須技術だったと強調しています。
シンプルなサイネージを作りながら考えたこと
この記事は、税理士である著者がPower BIを用いて作成したデジタルサイネージについて記述している。クライアントへの会計報告にPower BIを使用する中で、詳細な分析よりも経営層の意思決定を促すための簡潔な情報提示の重要性に着目した。そのため、複数のPower BIページを自動で切り替えるサイネージを作成し、さらにAlexaによる音声操作も可能とした。このサイネージは、シンプルながらも時間経過による情報更新と音声によるインタラクションによって、効率的な情報伝達を実現している。最終的には、AIと連携し、AIがネクストアクションを提案するシステムを目指している。
インテグレーションテストをもっと楽に!Testcontainers はじめました
この記事は、Go言語を用いたWebアプリケーションの自動テストにおいて、Testcontainersライブラリを用いたデータベース(PostgreSQL)コンテナの動的な管理方法を紹介している。Testcontainersを使うことで、テストコード内でDockerコンテナを起動・停止し、モックやスタブを用意することなく、本番環境に近い環境でのテストが可能になる。具体的な例として、TODOアプリのAPIテストを記述し、Testcontainersを用いたテストコードと、その実行結果を示している。 記事では、テストコンテナの起動、接続、終了処理を簡潔に記述する方法が解説されており、自動テストの効率化に役立つことを主張している。
長く働くためには
70歳定年が義務化される中、長く働き続けるための対策として、著者は健康維持、頑張り過ぎないこと、継続的な学習、そして会社以外の居場所を持つことの重要性を述べている。 これらの実践を通して、心身ともに健康で働き続けられるよう努力している、という内容である。
UnrealEngineでアバターを動かす方法
このテックブログ記事は、Unreal Engine 5.1.1でVRM形式のアバターをモーションキャプチャで動かす方法を解説している。必要なツール(VRM4U、VMC4UE、ueOSC、UniVRM、VRMMapExporter)のダウンロードとUnreal Engineへの追加、Unityを用いたVRMMapファイルの作成、アバターのインポートと設定、Webcam Motion Captureまたはmocopiを使ったモーションキャプチャによるアバターの動作、さらに高度な動きを実現するためのバーチャルモーションキャプチャーの利用についても説明されている。初心者にも分かりやすいよう、詳細な手順と画像付きで解説されている。
作業効率を上げるために買って良かったもの7選(在宅エンジニア)
この記事は、リモートワークで生産性向上を目指すエンジニアが、4年間のリモートワーク経験に基づき、買ってよかった7つのアイテムを紹介するテックブログです。紹介されているアイテムは、エルゴノミクスチェア、リストレスト、アイマスク、スマートリモコン(SwitchBot+スマートスピーカー)、デュアルモニター、骨伝導ヘッドセット、そして1リットル水筒です。それぞれ具体的なメリットが述べられており、快適なリモートワーク環境構築のための具体的な提案となっています。特に、腰痛対策の椅子や、手首の負担軽減、睡眠の質向上、そして効率的な作業環境の構築に焦点を当てています。
デスクトップフローの Power FxとRobinの処理速度をチョットだけ比較してみた
この記事は、Power Automate for desktopのPower Fx(新しい記述式)と従来のRobin(記述式)のデスクトップフローの実行速度を比較検証したものです。テキスト、日付、データテーブルの処理を10回、100回、1000回繰り返し実行し、処理時間を計測しました。結果、10回ではRobinがわずかに速かったものの、100回、1000回と回数を増やすと両者のパフォーマンス差は無視できるレベルになりました。Power Fxは学習コストは高いものの、Power Apps等と記述式が統一されているメリットがあり、業務利用に耐えうる性能であると結論付けています。 既存のRobinフローをすぐにPower Fxに移行する必要はないものの、Power Fxの動向を注視していくべきだと述べています。
【GitHub Actions】Actions Runner Controllerのメトリクスを可視化してみた
この記事は、GitHub Actions Runner Controller (ARC) のメトリクスを有効化し、OpenTelemetry CollectorとPrometheus、Grafanaを用いて可視化する方法を解説しています。具体的には、ARCのvalues.yml
を修正してメトリクスを出力させ、OpenTelemetry CollectorでPrometheusに送信、そしてGrafanaでダッシュボードを作成して実行時間等のメトリクスを確認する手順を、Dockerfile、Kubernetesマニフェスト、Grafanaの設定例と共に詳細に説明しています。 一部メトリクスは取得できない可能性がある点にも触れています。
TerraformからEC2のインスタンスタイプを変更したときの挙動
Terraformを用いてEC2インスタンスのインスタンスタイプを変更する検証を行った。aws_instance
リソースのinstance_type
パラメータを変更しterraform apply
を実行した結果、既存インスタンスがin-placeで更新され、約50秒で停止、インスタンスタイプ変更後、起動が完了した。新しいインスタンスは作成されず、マネジメントコンソールからの操作と同様の挙動を示した。よって、Terraformを用いた方が効率的であると結論づけた。
Power Apps Studio 画面 新旧比較
この記事は、2024年10月に行われたPower Apps StudioのUI変更を記録したものです。日本語のドキュメントは古いUIのまま残っているため、新旧のUI比較を掲載しています。新UIではアプリ作成メニューが省略されたり、プロパティペインの表示/非表示が変更になるなど、使い勝手が悪くなった点も指摘されています。著者は、この変更記録が将来Power Apps利用者の参考になればと考えています。
Siv3Dで「待つ」処理を簡単に書けるC++20コルーチンライブラリCoTaskLibの紹介
Siv3D向けコルーチンライブラリ「CoTaskLib」の紹介記事です。C++20のコルーチンを用いて、ゲーム内の「待ち」を含む処理(アニメーションの連続再生など)を、通常の関数のように記述できるようにします。co_await
で他のタスクの完了を待ち、co_return
で結果を返す「タスク」を定義できます。Co::Delay
による時間待ち、Co::WaitUntil
による条件待ち、Co::Any
/Co::All
による複数タスクの同時実行(疑似並列)、描画処理を含むシーケンス、イージング機能、シーン遷移機能などを提供し、より直感的なゲーム開発を支援します。 runScoped
関数の過剰使用は避け、co_await
とco_return
による値の受け渡しを推奨しています。また、全ての処理をタスクで実装する必要はなく、update
関数との併用も有効です。
メール認証をAIデコーディングしたら失敗した話
高校生がAIコーディングでGmailを用いたAIエージェント管理システムを作成中に、Pythonのリストの参照渡しによるバグが発生し、500件以上の承認メールが誤送信されたという事例。原因はAIが生成したコードの不備と、コーダー自身のコードレビュー不足。対策として、高性能AIモデルの使用、コードの二重チェック、AIへの指示の明確化、サーキットブレーカーの実装、段階的な本番運用などを提案している。 本記事はAIコーディングにおける潜在的なリスクと、その対策について学ぶための貴重な失敗談である。
「削除されたフローを管理者として復元する」アクションを使ってみた
この記事は、Microsoft Power Automateで誤って削除されたフローを管理者権限で復元する方法について検証したものです。Power Automate管理コネクタの「削除されたフローを管理者として復元する」アクションを使用する方法を説明していますが、削除済みフローの一覧を取得する「管理者としてフローの一覧を取得 (V2)」アクションで、改ページ設定を有効にしないと削除済みフローが取得できない場合があることを発見しました。 このアクションは削除後21日以内、Power Platform管理者のみが利用可能です。 最終的に、改ページを有効化することで削除済みフローの取得と復元が可能になり、ユーザーIDを指定して特定ユーザーの削除済みフローのみを復元する応用例も示しています。
個人開発時にも気をつけておけばよかった、と感じたこと
この記事は、プログラミング未経験からRUNTEQを経てWEBエンジニアになった著者が、個人開発とチーム開発の違いを経験し学んだことをまとめたものである。 具体的には、チーム開発においては「git add .
」による無差別コミットの弊害と、他人のコードを誤って変更した場合の対処法について述べている。前者では、不要なファイルのコミットはチームの作業効率を低下させることを、後者ではVSCode拡張機能GitLensの「Open Changes with Previous Revision」機能を用いた修正方法を紹介している。 個人開発経験者にとって、チーム開発におけるGitの使い方やコード管理の重要性を再認識させる内容となっている。
PDFMathTranslate と Ollama による PDF のローカル翻訳
この記事は、ローカルLLMであるOllamaと連携したPDF論文翻訳ツール「PDFMathTranslate」の使い方を解説しています。PDFMathTranslateは数式や図表のレイアウトを維持したまま多言語翻訳を行うツールで、Ollamaを使うことでプライバシー保護、コスト削減、オフライン利用が可能になります。 インストールはuv
ツールを使用し、pdf2zh
コマンドで翻訳を実行します。複数のOllamaモデルを指定することで処理の安定性を高められますが、処理時間はハードウェアに依存し、CPU利用時はページ数に制限があります。翻訳結果はキャッシュされるため、中断からの再開や、定期的な削除が可能です。
Misskeyで天気予報botを作ってみた
この記事は、毎朝指定都市の天気予報を個人所有のMisskeyサーバーに投稿するbotの作成過程を解説したテックブログです。WeatherAPI.comから天気データを取得し、PythonとMisskeyのSDKを用いてbotを作成、AWS LambdaとTerraformでインフラを構築、GitHub ActionsでCI/CDを自動化しています。Dockerイメージを使用し、環境変数による設定管理、モジュール化されたTerraform構成、Reusable workflowによるGitHub Actionsワークフローなどが紹介されています。 コードはGitHubで公開されています。
QGISでのQDuckDBプラグイン活用ガイド
この記事は、QGIS上でDuckDBデータベースを使用可能にするプラグイン「QDuckDB」の使い方を解説しています。Windows以外での使用には事前準備が必要で、MacOSの場合はターミナルからpip
コマンドでDuckDBをインストールする必要があります。QDuckDBプラグインをインストール後、DuckDBデータベースを作成し、ShapefileなどをSQLクエリで読み込み、QGIS上に表示できます。データ編集はQGIS上ではできず、DuckDBを直接操作する必要があります。記事では、都道府県Shapefileの読み込みと北海道の名称変更を例に、具体的な手順とSQLクエリを示しています。さらに、Overture Mapsデータの読み込みについても、SQLクエリを用いた方法を紹介しています。 QGISとDuckDBの連携、特にデータの読み込みと表示に焦点を当てた解説です。
ActiveRecordの便利なクエリメソッド集
このテックブログ記事は、RailsにおけるActiveRecordの便利なクエリメソッドを解説している。where
、find_by
、pluck
、order
、limit
/offset
、exists?
、find_each
、group
/count
、select
、update_all
、joins
/left_outer_joins
、includes
といったメソッドについて、具体的なコード例とともに説明されている。特に、pluck
はメモリ効率が良いこと、find_each
は大規模データ処理に適していること、joins
とleft_outer_joins
の違い、includes
がN+1問題を解決する手法として紹介されている点が重要である。
Pure C# で作るODBC ドライバー
この記事は、C#とNative AOTを用いてODBCドライバーを自作する過程を記述したテックブログです。 SQLite ODBCドライバーを参考に、Windows上でA5:SQL Mk-2から接続しSQLを実行、結果を返すシンプルなODBCドライバーを作成しました。 Native AOTによるネイティブコード生成、Windows API(特にODBC関連関数)の利用、ポインタ操作、ログ出力機構の構築など、具体的な実装方法と課題、解決策を詳細に解説しています。 最終的には、"Hello, World!"レベルのODBCドライバーの作成に成功しました。
【PostgreSQL】JSON データを SQL クエリで絞り込みする方法
この記事は、PostgreSQLでJSONBデータの絞り込み方法を解説したものです。JSONB型とJSON型の違い、->
, ->>
, #>,
#>>,
?,
@>,
?|,
&>`といった演算子を使った絞り込み方、数値や日付へのキャスト方法、そしてGINインデックスを使ったパフォーマンス改善について、具体的なSQLクエリ例と共に説明しています。JSONBの利便性と、正規化とのトレードオフについても触れられています。
【闇】力技によるメンバ変数名取得
この記事は、C++にリフレクションがないことを逆手にとり、コンパイル時処理を駆使して集約体構造体のメンバ変数の数と名前を取得し、JSONなどの文字列形式との相互変換を実現するテクニックを紹介している。具体的には、AnyCastable
構造体によるメンバ数カウント、構造化束縛と再帰テンプレートによるタプルへの変換、__PRETTY_FUNCTION__
/__FUNCSIG__を用いた関数シグネチャからの情報抽出、そしてそれらを組み合わせたメンバ名取得とデータの紐付けを行う方法を解説している。 静的リフレクションの代替手段として、コンパイラの内部動作に依存した高度なテクニックを用いている点が特徴である。
Kaggle画像コンペでやっていること③
この記事は、Kaggle画像コンペティションにおける上級者向け戦略として、タスク固有のLoss関数とAugmentationの設計について解説している。
具体的には、物理現象を反映したLoss関数(例:奥行き推定におけるDepth Smoothness Loss、気象予測における保存則)、サブタスクをLossとして利用する方法(例:クジラ識別コンペでの種族分類、医療画像コンペでの位置情報の活用)、そしてAugmentationの選定と作成について、様々な事例を交えながら説明している。 左右反転によるラベルの誤解釈や、文脈を考慮したAugmentationの必要性なども指摘している。 ただし、LossやAugmentationの追加が必ずしも精度向上に繋がるわけではなく、場合によっては悪影響を与える可能性もあるため、注意が必要であると述べている。 最終的には、これらの工夫は劇的なスコア向上には繋がらないものの、比較的容易に実装でき、コンペへの理解を深める上で有効であると結論付けている。
Datadog を使いこなす 7 Tips
この記事は、DatadogのSales EngineerがDatadogに関する実践的な小ネタとTipsを紹介するものです。具体的には、ロゴに描かれた犬の名前「Bits」に関する豆知識、Cmd/Ctrl+Kを使った検索やショートカット、検索条件を保存できるViews機能、課金対象外機能(Dashboard、Notebook、Case Management、Monitor、Integrations、IDE Plugin)の概要とTips、ステータスページの確認方法、Preview機能の申請方法、Topology Mapの隠しコマンド(Datadog Star Map)などを解説しています。これらの情報を通して読者はDatadogの知識を深め、効率的に活用できるようになることを目指しています。
Material Designのこれまでとこれから(2024)
この記事は、Androidのデザインシステムの進化を、Holo Theme、Material Design 1・2・3、そしてAndroid XRへの対応までを概説しています。初期のバラバラなデザインから、Holo Themeによる統一性、Material Designによるブランド表現と多様なプラットフォーム対応、Material Youによるパーソナライズ、そして空間コンピューティングへの拡張へと、Androidのデザインシステムがユーザー体験向上を目指して進化してきた過程が説明されています。特にMaterial Design 3は、Dynamic Colorによるパーソナライズやアクセシビリティへの配慮が特徴です。
Splunk Cloudでrestコマンドを使用してリソース一覧を抽出する方法
Splunk Cloudで大量のリソース一覧を効率的に取得する方法として、rest
コマンドを用いた検索クエリを紹介している。具体的には、ダッシュボードや保存済み検索の一覧をREST APIから取得し、必要に応じてプライベートリソースを含めたり、表示フィールドを絞り込んだり、CSV出力する方法を説明している。
TypeScriptで『関数型ドメインモデリング』をやってみよう
この記事は、LIFULLにおけるレガシーシステムのクリーンアーキテクチャ(CA)への移行プロジェクトで、TypeScriptを用いたドメインモデル実装に「関数型ドメインモデリング」の「型によるドメインモデリング」を適用した事例を紹介している。 従来のオブジェクト指向的なドメインモデル(状態をフラグで管理)を、状態を型で表現することで、状態遷移の可読性向上、コンパイル時エラーによるバグ防止、ユニットテストの削減を実現した。 メリットとして状態遷移の明確化、不正な状態の排除、テストコード削減が挙げられ、デメリットとして型定義増加と学習コストが挙げられている。 記事では具体的なTypeScriptコード例を示し、それぞれのメリット・デメリットを詳細に解説している。 最後に、「関数型ドメインモデリング」書籍の他の内容についても言及している。