【最新技術に振り回されない】 低レイヤーに強くなるための鉄板コンテンツ集
この記事は、エンジニアが低レイヤーを学ぶための様々なリソースを紹介するNuco Advent Calendar 2024の記事です。コンピュータアーキテクチャ、CPU、OS、システムプログラミング、コンピュータネットワーク、コンパイラ/インタプリタといった分野を網羅し、それぞれの分野に関連する書籍、動画、ゲームなどを多数掲載しています。初心者から上級者まで、レベルに合わせた学習コンテンツが提供されており、随時更新される予定です。低レイヤーの知識はソフトウェアの動作原理を理解し、パフォーマンス向上やバグ解決に役立つと述べられています。
保存版!プログラミング英単語リファレンス大全
この記事は、プログラミングにおける英語の単語・句・略語の包括的なリファレンス集です。動詞、名詞、形容詞、略語、慣用句、命名規約、コミュニケーションにおける専門用語を網羅し、具体的なコード例や解説付きで、初心者からベテランまであらゆる開発者の英語力向上を支援します。 技術領域別用語集(データベース、アプリケーション開発、インフラストラクチャ、AI/機械学習、クラウド/DevOps、DDDなど)や、コードレビュー、技術ドキュメント、GitHubでのやり取りで役立つ表現も掲載されています。
2024年版 Python標準ライブラリ完全網羅ガイド
この記事は、Python標準ライブラリを網羅的に解説したテックブログ記事です。テキスト処理、バイナリデータ処理、データ型、数値/数学モジュール、関数型プログラミング、ファイル/ディレクトリアクセス、データ永続化、データ圧縮、ファイルフォーマット、暗号関連サービス、OSサービス、並行処理、ネットワーク通信、インターネットデータ操作、マルチメディアサービス、国際化、GUIプログラミング、開発ツールなど、多数のモジュールを例を交えて詳細に説明しています。 各モジュールの主要な機能と使用方法が、コード例とともに示されています。
この記事の要点:
- Python標準ライブラリの包括的な解説
- テキスト処理、データ操作、ネットワーク、ファイル処理、GUIなど幅広い分野をカバー
- 各モジュールの機能説明とコード例による実践的な解説
- 標準ライブラリの機能を理解することで、サードパーティライブラリの依存を減らし、効率的な開発が可能になることを示唆
フフフ、ついに奥の手 javap を使う時が来たようだな・・・
本番環境のjarファイルのハッシュ値が、ライブラリ管理システム上のものと異なっていたため、稼働中のライブラリの整合性を確認する必要が生じた。jarファイルの展開とハッシュ値比較だけでは不十分な場合に備え、javap
コマンドを用いてclassファイルの逆アセンブルを行い、コードレベルでの比較を行う方法を紹介している。最終的にはjavap
コマンドを使用する必要はなかったものの、同様の状況に遭遇した際の対処法として役立つ情報を提供している。
AWS CLI、Terraformを試してみよう
この記事は、AWS環境でTerraformを始める初心者向けに、AWS CLIとTerraformのインストール、設定、基本的な使用方法を解説している。AWS CLIのインストールと設定方法、AWSリソースを管理するためのTerraformの基本構文(プロバイダー、リソース、変数、出力、データソース、ローカル、モジュール、環境変数)、そしてterraform init
, terraform validate
, terraform plan
, terraform apply
, terraform destroy
といった基本コマンドの使い方を説明している。具体的にはUbuntu環境でのインストール手順が記述されている。
作業効率を上げるために買って良かったもの7選(在宅エンジニア)
この記事は、リモートワークで働くエンジニアが作業効率向上のため、買ってよかった7つのアイテムを紹介するテックブログです。紹介されているアイテムは、高機能チェア(ハーマンミラー エンボディチェア)、リストレスト、アイマスク、スマートリモコン(SwitchBot)とスマートスピーカー、デュアルモニター、骨伝導ヘッドセット、そして1リットルの水筒です。それぞれ、腰痛軽減、手首の負担軽減、質の高い睡眠、家電操作の簡素化、作業効率の向上、快適なオンライン会議、十分な水分摂取といったメリットが挙げられています。著者は、これらのアイテムへの投資が作業効率の向上と快適なリモートワーク環境の構築に繋がったと結論づけています。
DuckDB Node Neo Client 試し撃ち
この記事は、MinIO (S3互換ストレージ)上のCSVデータをDuckDBを用いてRemixアプリでテーブル表示する手順を説明しています。Docker、Node.js、Remixを用いて、@duckdb/node-api
クライアントでMinIOからCSVデータを読み込み、bigintをstringに変換する処理を経てRemixで表示します。 最後にDockerfileを用いたコンテナ化についても触れています。 コードはGitHubに公開されています。
長く働くためには
70歳定年が義務化される中、長く働き続けるための対策として、著者は健康維持、頑張りすぎないこと、継続的な学習、そして会社以外の居場所を持つことの4点を挙げています。 これらの取り組みを通して、心身ともに健康で働き続けられるよう努力しているとのことです。
サイバーセキュリティ超初心者だった私が今までのことを振り返ってみて
この記事は、著者がサイバーセキュリティの専門家になるまでの道のりを振り返ったものである。小学生の頃、ウイルスに感染したPCに面白さを感じたことがきっかけで、中学生では「正義のハッカー」に憧れ、高校生では留学を機にプログラミングを本格的に学ぶようになった。大学では、UdemyやTryHackMe、書籍などを活用して独学で学習を進め、CTFチームに参加することで実践的なスキルを習得した。HackTheBoxにも挑戦し、WriteupをQiitaに投稿するなどアウトプットにも力を入れた。 しかし、学習の過程で心身の不調をきたし、一時休学する経験もした。 著者は、サイバーセキュリティを目指す人に向けて、焦らず自分のペースで学び、人との繋がりを大切にし、読む力と書く力を身につけることの重要性を訴えている。
Flaskで爆速プロジェクトスタート!Next.jsやNestJS風のテンプレート生成ライブラリを自作してみた
この記事は、Flaskプロジェクトの初期セットアップを自動化するコマンドラインツールflask-gen
を作成し、PyPIに公開した過程を説明しています。flask-gen
は、プロジェクト作成、最小構成プロジェクト作成、ページ追加の3つのコマンドを提供し、Typerライブラリとuv(Rust製のプロジェクト管理ツール)を用いて開発されました。 現在は一部バグが残っているものの、今後改善していく予定です。 著者は、コマンド作成とPyPIへの公開の容易さに驚き、積極的にツールを公開していく意欲を示しています。
5ヵ月で CISSP CCSP SSCP CC 全てに合格した話
この記事は、著者が5ヶ月でCC、CCSP、SSCP、CISSPの4つのISC2認定資格を独学で取得した経験に基づき、それぞれの資格取得への学習方法や難易度、推奨される学習順序などを解説している。特に、実務未経験者には無料のCCコースから始めることを推奨し、各資格の公式教材の活用方法や、Wiley電子書籍とSybex Test Banksを組み合わせた効率的な学習法についても詳細に説明している。 CISSPはグローバルでデファクトスタンダードな資格であり、取得後の継続的な学習の必要性も強調している。
現場に出て感じた質問の難しさ
この記事は、社会人1年目の著者が、リモートワークが中心の職場環境において、チャットによる質問の難しさについて述べている。 主な困難として、非同期コミュニケーションによる質問のタイミングや文章作成の難しさ、そしてチームメンバーとの信頼関係不足が挙げられている。 著者は、質問前に個人チャットでコミュニケーションを取り、画像を併用することで、質問の効率化と回答の精度向上に努めていると結論づけている。
Excelに負けない家計簿アプリ開発に挑戦してみた。※初心者の声付き
この記事は、著者が初めてWebアプリ開発に挑戦し、PHPとHTML、CSS、JavaScriptを用いて家計簿アプリ「夢をかなえるブタ。」(夢ブタ)を作成した過程を記したものです。フレームワークは使用せず、支出・収入の登録と表示、貯金機能(未完成)を実装しました。開発を通して、データベース連携の難しさ、コードの共通化の重要性、そして想定外の時間と労力を実感しました。現在はExcelの方が便利ですが、今後のバージョンアップで改良していく予定です。
現場作業でのSAP備忘録
この記事は、SAPシステムでのデータ移行作業において著者が頻繁に利用するトランザクションコードとテーブルをまとめたものである。 具体的には、テーブル参照(SE16N)、プログラム起動(SE38)、バックグラウンドジョブ確認(SM37)、ファイルダウンロード(CG3Y)、ファイル確認(AL11)といったトランザクションコードと、プロジェクト(PRPS, PROJ)、決済規則(COBRB)、原価センタ(CSKS)、資産(ANLA)に関するテーブルが紹介されている。 これらの情報は、SAPデータ移行作業の効率化に役立つ。
Misskeyで天気予報botを作ってみた
この記事は、AWS LambdaとMisskeyを使って毎朝天気予報をMisskeyに投稿するbotを作成した過程を解説したテックブログです。WeatherAPI.comから天気予報データを取得し、PythonとDockerを用いてLambda関数を作成、Terraformでインフラをコード化し、GitHub ActionsでCI/CDを構築しました。 機能は共通処理をクラス化することでコードの可読性と保守性を高めており、天気予報には絵文字も付与しています。 インフラ構築にはモジュール化されたTerraform構成を採用し、GitHub Actionsによる自動デプロイを実現しています。全体を通して、コードはGitHubで公開されています。
AIを使った画像認識と天気情報取得
エニプラのチームは、1年間のAI学習プロジェクトとして「画像認識」と「天気情報取得」の2つのテーマに取り組んだ。画像認識では、人物の顔認識と複数人物からの特定人物の認識を実現。天気情報取得では、地域を入力して現在の天気情報を音声で出力するシステムを開発した。両テーマともPythonを使用。時間制限があったものの、手応えを感じ、今後の発展に期待している。 プロジェクトを通してAIとPythonのスキルが向上し、業務への活用を目指す。
ぷよぷよプログラミングで遊んでみる
この記事は、著者が社内取り組みとして4年間ノベルゲーム制作を行ってきたが、今年は「ぷよぷよプログラミング」に挑戦したことを記している。セガが無料で公開している教材を用いて、最初は写経形式でぷよぷよゲームのコードを修正し、動作確認を行った。その後、社内のイラストレーターに依頼したオリジナルのキャラクターや背景、演出を追加し、完成させたという内容である。 プログラミング初心者でも取り組みやすく、楽しく学習できたと結論付けている。
短い期間で2つの現場を経験した新卒経験談
社会人1年目の三浦さんが2つの現場で経験したことをまとめた記事です。共通の学びとして、(1)想像以上に徹底した報連相の重要性、(2)セキュリティ考慮の上での紙媒体によるメモの徹底、(3)失敗を恐れず学ぶことの大切さ、の3点を挙げ、自身の成長を述べています。
【図解解説/初心者OK】たった1時間でNext.jsで最新AIを使ったチャットアプリを作ろう【RAG/LangChain/OpenAI/TypeScript】
この記事は、最新の情報を扱えるチャットボットをNext.jsとRAG(Retrieval Augmented Generation)を用いて作成する方法を解説したテックブログです。 GPTモデルの知識カットオフが最新情報に追いついていない問題点を提示し、RAGを用いて外部データ(今回は2024年アニメのWikipedia情報)をChatGPTに提供することで解決策を示しています。 具体的な手順として、Wikipediaからのデータスクレイピング、ベクトル化、Astra DBへの保存、Next.jsによるチャットボットUIとAPIの実装、Tailwind CSSを用いたデザイン調整などが詳細に説明されています。 読者は、最新のAI技術、Next.js、Reactの基礎知識を有していることが前提となります。
【GitHub Actions】Actions Runner Controllerのメトリクスを可視化してみた
この記事は、GitHub Actions Runner Controller (ARC) のメトリクスを有効化し、OpenTelemetry Collector を用いて Prometheus に送信、さらに Grafana で可視化する方法を解説しています。 具体的には、ARC の Helm Chart 設定変更、OpenTelemetry Collector の構築とデプロイ、Prometheus と Grafana のインストールと設定、そして Grafana でダッシュボードを作成し実行時間などのメトリクスを表示する手順を詳細に説明しています。 注意点として、一部のメトリクスは取得できない可能性があり、記事中にサンプル設定ファイルやダッシュボードインポート用の JSON が提供されています。
GitHub ActionsをIAMロールで実行する際のOIDC認証設定
この記事は、GitHub Actionsを用いたAWS S3へのデプロイ方法を、アクセスキーではなくIAMロールを用いて改善する方法を説明している。具体的には、AWSにOpenID Connectプロバイダを設定し、GitHub Actionsワークフローでaws-actions/configure-aws-credentials@v4
アクションを使い、IAMロールを指定してAWS認証を行うように変更する手順を示している。 セキュリティ強化のため、アクセスキーIDとシークレットアクセスキーの直接使用を廃止し、IAMロールによる認証に切り替えることで、より安全なデプロイを実現している。
日報半自動化ツール
要約:
エニプラアワード2024にて発表された「日報半自動化ツール」は、2022年度に作成されたExcel VBAによるOutlookからの日報送信自動化ツールの改良版である。2024年度版はJava, Spring Boot, HTMLを用いて、Roundcubeへのログイン、日報内容のテキスト出力までを自動化する。Roundcubeへの内容転記は未実装だが、テキスト出力された日報内容を手動でRoundcubeへ転記することで日報作成業務の効率化を図る。開発を通してプログラミング初心者メンバーの学習機会にもなったものの、要件定義の不足や技術的難易度から課題も残った。今後、更なる改良を検討している。
要約内容の身:
このプロジェクトは、既存の日報自動化ツールの機能向上と、チームメンバーのスキル向上を目的として行われました。Excel VBAからJavaへと開発言語を変更し、より洗練されたシステムを目指しました。 完成したツールはRoundcubeへのログインと日報内容のテキスト出力まで自動化することに成功しましたが、最終的なRoundcubeへの転記は手動で行う必要があります。この点は今後の改善点として挙げられています。全体として、業務効率化と学習機会の提供という二つの目標を達成したものの、要件定義の甘さや技術的な難易度によって、完全自動化には至らなかった点が反省点として挙げられています。 チームは、この経験を活かし、来年以降もツールの改良を継続していく予定です。
🎄X'masにRustで南無阿弥陀仏🙏
この記事は、RustとBaker link. Dev Rev. 1マイコンボードを用いた組み込み開発入門の体験記である。仏教音楽再生チップを制御し、ボタン押下で楽曲を切り替え、電源OFF時の状態をフラッシュメモリに保存して再開する機能を実装した。Homebrewのインストール場所に関する環境構築トラブルシューティングも記述されている。Rustの所有権や借用といった概念が初学者には難しい点も指摘されている。
原始、iPhoneは世界であった
この記事は、AndroidとiPhoneの違い、特にAndroidの方が柔軟な操作性を持つ点について、筆者の独自の視点から考察したものです。筆者はiPhoneユーザーでありながら、Androidの「右から左へのスワイプで戻る」機能や、アプリライブラリ、ウィジェット、アイコン配置の自由度の高さを認めます。しかし、Appleがこれらの機能を長らく導入してこなかったのは、「現実世界への忠実性」を重視してきたからだと主張します。具体的には、左から右への読み書き習慣、本の配置、アプリの単一インストールといった現実世界のアナロジーを用いて、iPhoneのデザイン哲学を説明しています。ただし、近年iPhoneもこれらの機能を導入し始めているのは、スマホが世界に浸透し、Android特有の機能が一般的になったためだと結論づけています。 要するに、Appleのデザインは現実世界のメタファーに基づいており、近年は現実世界とデジタル世界の融合を反映しているという主張です。
澤田先生と共に技術書典へ出展した話を振り返る
著者のMitsuo氏は、同僚の澤田氏と共に「技術書典17」にAWS CloudFront/Route53入門書「今さら聞けないAWSサービスのお話(CloudFront/Route53編)」を出展した。 執筆は多忙の中、数名の協力者を得て実現し、イベントは大盛況で多くの来場者と交流できた。 書籍制作を通して、技術ブログ執筆とは異なる、書籍出版における責任や読者への配慮を痛感し、大きな達成感と刺激を得た。 今後、Terraformコードの提供を予定している。
React 初心者がハマりがちな罠とその回避法 7 選
この記事は、React開発における7つのよくある間違いとその解決策を解説したテックブログです。具体的には、1. stateの非同期更新による誤動作とその解決策(更新関数を使う)、2. &&
演算子の左辺に数値を使う際の意図しないレンダリング問題と解決策(条件式を修正)、3. 複数のstateを個別に管理する非効率性と解決策(オブジェクトでまとめて管理)、4. 不要なuseEffectの使用と解決策(レンダー内で計算する)、5. カスタムフックの活用によるコードの重複排除、6. クロージャによる状態の参照エラーと解決策(依存配列の適切な設定とsetInterval
のキャンセル)、7. useEffectでのデータ再取得時のちらつきと解決策(AbortController
によるリクエストキャンセル)について、それぞれBad例とGood例を示しながら説明しています。 これらの改善策により、より効率的でバグの少ないReactアプリケーションを開発できるようになります。
【gifで解説!】サイトデザインが楽になるFigmaプラグイン5選
この記事は、Figmaのデザイン作業効率化に役立つ5つのプラグインを紹介している。具体的には、デザインの一貫性をチェックする「Design Lint」、色のコントラストをチェックする「Contrast」、オブジェクトを斜めに傾ける「Skew」、画像の背景を削除する「Icons8 Background Remover」、そしてWebサイトのデザインをFigmaに取り込む「html.to.design」である。 特に「Design Lint」はスタイルの一貫性を保つために頻繁に使用されると強調されている。 また、類似のスタイルを自動検出するプラグインの必要性も述べられている。
【GenU】RAGにS3バケットを追加する方法 - 権限設定でハマった話
AWSの生成AI活用アプリケーションGenUにおいて、Retriever Augmented Generation (RAG)機能にS3バケットを追加する際の設定手順と、発生する権限エラーの解決策について解説している。 エラー解決には、IAMロール「RagKnowledgeBaseStack-KnowledgeBaseRole」と「GenerativeAiUseCasesStack-APIGetFileDownloadSignedU-…」に、新規S3バケットへのアクセス権限(s3:ListBucket、s3:GetObject)を追加する必要がある。 記事では具体的なIAMポリシーの修正内容と、各修正後の動作確認方法を示している。 GenUのCDKによる構築の容易さと、セキュリティ設定の厳格さ、そしてインフラエンジニアの知見の重要性を強調している。
Next.jsでMarkdownを簡単に実装!react-markdown × TailwindCSSのコツを解説
このテックブログ記事は、Next.jsでreact-markdown
ライブラリを使ってMarkdownをレンダリングする方法を解説しています。remark-gfm
プラグインを用いてGitHub Flavored Markdownにも対応し、コード例と共に具体的な実装方法を示しています。特に、Tailwind CSSを使用する際にreact-markdown
の出力スタイルがリセットされる問題を、@tailwindcss/typography
プラグインを追加することで解決する方法を詳細に説明しています。
Digger + GitHub Actionsで作るTerraform/OpenTofuのCI/CD
この記事は、Terraform/OpenTofu用のサーバレスCI/CDツールDiggerを紹介する。GitHub Actionsと連携し、Atlantis風のApply-Before-Mergeワークフローを実現する。BackendlessモードではGitHub Actionsのみで完結し、ランニングコストが低い。OpenTofu対応やAWS OIDC認証、tfmigrateとの連携方法も解説しており、特にtfmigrate連携ではカスタムワークフローを用いた設定例を示す。GitHub ActionsとDiggerの設定例が示されているため、すぐに導入できる。 小規模環境でのTerraform CI/CD構築に最適なツールとして推奨している。