【最新技術に振り回されない】 低レイヤーに強くなるための鉄板コンテンツ集
この記事は、エンジニアが低レイヤーを学ぶための様々なリソースを紹介するテックブログ記事です。コンピュータアーキテクチャ、CPU、オペレーティングシステム、システムプログラミング、コンピュータネットワーク、コンパイラ/インタプリタといった分野を網羅し、それぞれの分野に関する書籍、動画、ゲームなどを多数掲載しています。初心者から上級者まで、レベルに合わせた学習コンテンツが豊富に紹介されており、随時更新される予定です。低レイヤーの知識は、ソフトウェアの動作原理を理解し、パフォーマンス改善やバグ解決に役立つと主張しています。
保存版!プログラミング英単語リファレンス大全
この記事は、プログラミングにおける英単語の適切な使い方が解説されたリファレンス大全です。動詞、名詞、形容詞、略語、慣用句、命名規則、コミュニケーション、技術領域別用語を網羅的に説明し、具体的な例と解説、そしてNG例も提示することで、より明確で保守性の高いコード、そしてチーム開発における円滑なコミュニケーションを促進することを目的としています。 初心者からベテランまで、全ての開発者にとって役立つ内容となっています。
作業効率を上げるために買って良かったもの7選(在宅エンジニア)
この記事は、リモートワーク中のエンジニアが作業効率を上げるために「買ってよかったもの7選」を紹介するテックブログです。紹介されているのは、エルゴノミクスチェア(エンボディチェア)、リストレスト、アイマスク、SwitchBotとスマートスピーカー、デュアルモニター、骨伝導ヘッドセット、1リットル水筒です。これらのアイテムによって、腰痛や手首の負担軽減、睡眠の質向上、家電操作の効率化、作業環境の改善、クリアな音声通話、水分補給の容易化を実現し、リモートワークの生産性と快適性を向上させたと述べています。 記事では各アイテムのメリットと具体的な使用例、そして購入の際の注意点なども解説されています。
2024年版 Python標準ライブラリ完全網羅ガイド
この記事は、Python標準ライブラリのテキスト処理、バイナリデータ処理、データ型、数値と数学、関数型プログラミング、ファイルとディレクトリアクセス、データ永続化、データ圧縮とアーカイブ、ファイルフォーマット、暗号関連サービス、汎用OSサービス、並行実行、ネットワーク通信とプロセス間通信、インターネットデータ操作、構造化マークアップツールといった様々なモジュールの機能と使用方法を網羅的に解説したものです。 各モジュールについて、主な機能と具体的な使用例がコード付きで説明されています。
フフフ、ついに奥の手 javap を使う時が来たようだな・・・
本番環境のjarファイルのハッシュ値が、ライブラリ管理システム上のものと異なっていた。原因は言及されていないが、稼働中のシステムのため、安易に更新できず、jarファイルの展開とハッシュ値比較、必要ならjavapコマンドによる逆アセンブルとソースコード比較によるデグレード箇所の特定という対応策を検討した。最終的にはjavapコマンドを使用する必要はなかったものの、同様の事態に備えて、これらの手順が役立つことを示唆している。
サイバーセキュリティ超初心者だった私が今までのことを振り返ってみて
この記事は、著者がサイバーセキュリティの知識が全くない状態から、1年余りで現在のレベルに到達するまでの道のりを振り返ったものです。小学生時代にPCウイルスに遭遇したことがきっかけでPCに興味を持ち、高校留学を経てプログラミングを本格的に学び始めました。大学ではCTFチームに参加したり、HackTheBoxに挑戦したりする中でスキルを向上させ、脅威インテリジェンスに興味を持つようになりました。しかし、過度な努力と周囲との比較からうつ病を発症し、休学を経験しました。 著者は、サイバーセキュリティを学ぶ上で、自己比較を避け、人との繋がりを大切にし、読解力と記述力を磨くことが重要だと結論づけています。
DuckDB Node Neo Client 試し撃ち
この記事は、MinIO (S3互換ストレージ)上のCSVデータをDuckDBを用いてRemixアプリで表示する手順を説明しています。 Docker、Node.js、Remixを用いて、@duckdb/node-api
クライアントライブラリでMinIOからCSVデータを読み込み、Remixでテーブルとして表示します。BigIntのシリアライズ問題への対処も記述されています。 最終的には、Remixアプリ全体をDockerコンテナ化する手順も示されています。
【図解解説/初心者OK】たった1時間でNext.jsで最新AIを使ったチャットアプリを作ろう【RAG/LangChain/OpenAI/TypeScript】
この記事は、最新のアニメ情報にアクセスできるチャットボットをNext.jsとRAG(Retrieval Augmented Generation)を用いて構築する方法を解説したテックブログです。 ChatGPTなどの大規模言語モデルは学習データの限界があり最新情報に弱い点を克服するため、RAGを用いて外部データ(今回はWikipedia)から情報を取得し、ChatGPTで回答を生成するシステムを構築しています。具体的な手順として、Wikipediaのスクレイピング、ベクトル化、Astra DBへの保存、Next.jsを用いたチャットボットフロントエンドとAPIバックエンドの作成、Tailwind CSSを用いたUIデザインの改善などが詳細に説明されています。 読者は、最新のAI技術、Next.js、Reactの基本的な知識を有していることが前提となっています。
長く働くためには
70歳定年延長を見据え、長く働き続けるための対策として、著者は健康維持(規則正しい生活)、頑張りすぎないこと、継続的な学習、そして会社以外の居場所を持つことの4点を挙げている。 これらの取り組みを通じて、心身ともに健康を維持し、スキルアップを図り、精神的な安定を保つことで、長期的な就労を目指している。
Share Your Lessons in AWS re:Invent 2024 ~ なぜ re:Invent に現地参加するのか ~
AWS re:Inventへの現地参加経験に基づき、著者は現地参加の3つのメリットを述べている。1つ目は、AWSアップデートに関する疑問を、現地参加者との交流を通して専門家から直接聞けること。オンライン視聴では時差や情報量の多さから、疑問の解消や深い理解が難しい点を指摘している。2つ目は、参加者との交流を通して仲間が増え、AWSコミュニティとの繋がりを強められること。人との繋がりを重視し、積極的に頼ることで得られるメリットを強調している。3つ目は、非日常的な体験から得られる刺激とモチベーションの向上。海外でのイベント参加による独特の経験が、今後の活動への意欲を高める効果があると述べている。 著者は、これらのメリットがオンライン視聴では得難いとし、現地参加の価値を強調している。
🎄X'masにRustで南無阿弥陀仏🙏
この記事は、RustとBaker link. Dev Rev. 1マイコンボードを用いた組み込み開発入門の体験記である。 AliExpressで購入した仏教音楽再生チップを制御し、ボタン押下で楽曲を切り替え、マイコン再起動時にも前回再生位置を復元するプログラムを作成した。 環境構築では、Apple Silicon MacでのHomebrewのインストールパスに関する問題が発生したが、解決策を見つけて開発を進めた。 プログラムでは、Flashメモリへのデータ読み書きや割り込み処理、Rustの所有権・借用といった概念が重要な役割を果たしている。 著者は、Rustの基礎を学ぶ必要性を痛感しつつ、今後の学習と開発継続を表明している。
Excelに負けない家計簿アプリ開発に挑戦してみた。※初心者の声付き
エンジニア初心者が、Excelで作成していた家計簿をWebアプリ「夢をかなえるブタ。(夢ブタ。)」として開発した過程を記したブログ記事である。PHP、HTML、CSS、JavaScript、chart.jsを用いて、支出・収入登録、データ表示(円グラフ含む)、貯金機能を開発しようとしたが、貯金機能は断念。 DB設計はSQLを使い容易に進んだ一方、PHPでのDB連携は変数のべた張りとなり、コードの見通しが悪くなった。完成度は6割程度と自己評価し、現時点ではExcelの方が使い勝手がよいと結論付けている。しかし、今後の発展に期待し、継続的に改善していく意欲を示している。
AIを使った画像認識と天気情報取得
エニプラのチームは、1年間のAI学習プロジェクトとして「画像認識」と「天気情報取得」の2つのテーマに取り組んだ。画像認識では、人物画像から顔部分を切り出し、複数人物の画像から特定の人物を認識するシステムをPythonで開発。天気情報取得では、地域を入力して現在の天気情報を音声で出力するシステムをPythonで開発した。 時間的な制約があったものの、手ごたえを感じ、今後の発展に期待している。 得られたAIとPythonの知識・スキルを実際の業務に活用したいと考えている。
アセンブラ言語プログラミングテクニック【基本編】
この記事は、ベテランITエンジニアがアセンブラ言語、特に旧式のCPUにおけるアセンブラプログラミングの経験を振り返る内容です。旧式CPUの制約(レジスタ数、命令セット、クロック速度、乗算・除算命令の欠如)と、それらを克服するための工夫(シフト演算による乗算・除算、ループ展開、インデックスインダイレクトモードの活用)を、具体的なコード例を交えながら解説しています。 高速化のためのテクニックとして、ループ展開とインデックスインダイレクトモードを詳細に説明し、それぞれのメリットと注意点に触れています。全体として、アセンブラ言語プログラミングの難しさ、工夫、そしてその面白さを伝えています。
短い期間で2つの現場を経験した新卒経験談
社会人1年目の三浦氏が2つの現場を経験し、以下の3点を学んだ。1. 報連相の徹底(想像以上に意識が必要)。2. 紙媒体でのメモの重要性(セキュリティ対策のため)。3. 失敗を恐れず学ぶこと(先輩のフォローがある)。
ぷよぷよプログラミングで遊んでみる
この記事は、著者が4年間ノベルゲーム開発を社内取り組みとして行ってきたが、今年は「ぷよぷよプログラミング」に挑戦した経験を記したものです。 無料で公開されているSEGAの教材を用いて、最初は写経形式でぷよぷよゲームのコードを修正し、動作確認を行いました。その後、社内のデザイナーに協力を得て、マスコットキャラクターや背景、演出などを変更し、オリジナルのぷよぷよゲームに仕上げました。プログラミング初心者でも楽しく取り組める教材だったと結論づけています。
AWS CLI、Terraformを試してみよう
この記事は、AWS環境でTerraformを始める初心者向けに、AWS CLIとTerraformのインストール、設定、基本的な使用方法を解説している。AWS CLIのインストールと設定方法、AWSリソースへのアクセス方法を具体的に説明し、Terraformの基本構文(プロバイダー、リソース、変数、出力、データソース、ローカル、モジュール、環境変数)と基本操作(terraform init
, terraform validate
, terraform plan
, terraform apply
, terraform destroy
)を例示している。ローカル環境でのTerraformテスト方法に悩む初心者をターゲットに、AWS CLIとTerraformの連携によるインフラ管理の基礎を分かりやすく説明している。
5ヵ月で CISSP CCSP SSCP CC 全てに合格した話
このテックブログ記事は、著者が5ヶ月でCC、CCSP、SSCP、CISSPの4つのISC2認定資格を独学で取得した経験を共有し、各資格の学習方法や難易度、受験戦略について解説している。特に、実務未経験者には無料のCC資格取得を推奨し、各資格の公式教材(ガイドブック、問題集)の活用方法、Wiley電子書籍とSybex Test Banksの併用による効率的な学習法などを具体的に紹介している。 CISSPはCyber Security業界のグローバルスタンダードであり、学習内容は非常に有益だが、取得だけではProfessionalとは言えず、継続的な学習が不可欠であると結論付けている。
現場作業でのSAP備忘録
本記事は、SAPシステムにおけるデータ移行作業で特に役立つトランザクションコード(Tr-cd)とテーブルをまとめた備忘録である。 Tr-cdとしては、テーブル参照(SE16N)、プログラム起動(SE38)、バックグラウンドジョブ確認(SM37)、ファイルダウンロード(CG3Y)、ファイル確認(AL11)などを紹介。 よく使用するテーブルとして、プロジェクトテーブル(PRPS, PROJ)、決済規則テーブル(COBRB)、原価センタテーブル(CSKS)、資産テーブル(ANLA)を挙げている。 SAPシステムの複雑さを指摘しつつ、データ間の関連性を理解することで作業効率が向上すると結論付けている。
GitHub ActionsをIAMロールで実行する際のOIDC認証設定
このテックブログ記事は、GitHub Actionsを用いたAWS S3へのデプロイにおいて、セキュリティ強化のため、アクセスキーではなくIAMロールを利用する方法を説明しています。具体的には、OpenID Connect (OIDC)連携によるIAMロールの指定方法を解説し、AWS側のIDプロバイダ設定、IAMロールの信頼ポリシー設定、GitHub Actionsワークフローの修正手順を詳細に示しています。 修正後のワークフローでは、aws-actions/configure-aws-credentials@v4
アクションを用いてIAMロールARNを指定し、アクセスキーIDとシークレットアクセスキーの利用を廃止しています。最終的に、修正したワークフローでS3へのデプロイが成功したことを確認しています。
現場に出て感じた質問の難しさ
新卒エンジニアの中西氏は、週1回の出社とチャットでのコミュニケーションが中心の職場環境において、質問の難しさを感じている。その理由は、非同期コミュニケーションによる質問のタイミングや文章作成の難しさ、そしてチームメンバーとの信頼関係不足にある。そこで、質問前に個人チャットで挨拶する、画像を用いて質問内容を明確にするなどの工夫を行い、質問の精度向上と効率化を目指している。 要約すると、非同期コミュニケーション環境下での質問の難しさとその改善策について述べている記事である。
原始、iPhoneは世界であった
この記事は、AndroidとiPhoneの機能の違い、特にAndroidの「右から左へのスワイプで戻る」「アプリライブラリ」「ウィジェット」「アイコンの配置間隔調整」といった機能がiPhoneで遅れて実装された理由について考察している。著者は、Appleがこれらの機能を長らく導入しなかったのは、「現実世界への忠実性」を重視したためだと主張する。具体的には、左から右への記述習慣に則った戻る操作、1つのアプリを1つだけインストールする感覚、本棚に例えたアプリの配置などを根拠として挙げている。しかし、最終的にはiPhoneもこれらの機能を導入した点を踏まえ、スマホが世界に浸透し、Androidの機能が一般的に認知されたためだと結論付けている。 Appleのデザイン哲学が、現実世界を模倣することに重きを置いているという著者の見解を示す記事である。
React 初心者がハマりがちな罠とその回避法 7 選
この記事は、React開発における7つのよくあるアンチパターンと、それに対する改善策を解説しています。具体的には、(1) stateの非同期更新を更新関数で対処する、(2) &&
演算子の左辺の0による意図しないレンダリングを避ける、(3) 複数のstateをオブジェクトにまとめることでstate管理を簡素化する、(4) 不要なuseEffect
を避け、計算はレンダー内で直接行う、(5) カスタムフックでロジックを再利用する、(6) クロージャによる状態の非同期問題を依存配列とクリーンアップ関数で解決する、(7) AbortController
を用いてuseEffect
内のデータフェッチの重複リクエストを防止する、という内容です。 各アンチパターンに対して、悪い例と良い例がコード付きで示されています。
Next.jsでMarkdownを簡単に実装!react-markdown × TailwindCSSのコツを解説
この記事は、Next.jsでreact-markdown
ライブラリを使ってMarkdownをレンダリングする方法を解説しています。remark-gfm
プラグインでGitHub Flavored Markdownにも対応し、コード例と共に具体的な実装方法を示しています。特に、Tailwind CSSを使用する際の注意点として、tailwindcss/typography
プラグインの導入が必要であることを説明し、その解決策を提示しています。
澤田先生と共に技術書典へ出展した話を振り返る
この記事は、著者のMitsuoさんが「技術書典17」に、先輩の澤田さんと共著でAWS入門書「今さら聞けないAWSサービスのお話(CloudFront/Route53編)」を出展した体験記です。 技術書典への出展は、仕事に追われる中で技術へのモチベーションを高めるためであり、CloudFrontとRoute53を使ったハンズオン形式の本を通して、AWS入門者に役立つ情報を提供することを目指しました。 イベントは盛況で、様々なエンジニアと交流し、書籍を販売する喜びや、書籍作成の大変さを実感する貴重な経験となりました。 今後、Terraformコードの提供を予定しています。
【gifで解説!】サイトデザインが楽になるFigmaプラグイン5選
この記事は、Figmaのデザイン作業効率化に役立つ5つのプラグインを紹介している。
- Design Lint: デザインの一貫性をチェックし、スタイルの適用漏れや重複を検出する。スタイル変更時の影響確認にも利用できる。
- Contrast: WCAG基準に基づいた色のコントラスト比をチェックし、アクセシビリティを向上させる。
- Skew: オブジェクトやテキストを斜めに傾けることで、立体感や動きのあるデザインを作成する。
- Icons8 Background Remover: 画像の背景を簡単に透過できる。
- html.to.design: ウェブサイトのデザインをFigmaに取り込む。無料版は月10サイトまで。レスポンシブデザインでないサイトは、画面幅指定に注意が必要。
筆者は特にDesign Lintを推奨しており、同じスタイルの重複検出プラグインの必要性も述べている。
日報半自動化ツール
エニプラアワード2024にて発表された「日報半自動化ツール」は、2022年度版のExcel VBAツールを改良したJavaベースのツールである。Roundcubeへの半自動ログインと日報内容のテキスト出力機能を実装したが、Roundcubeへの内容転記は未実装。 既存ツールの改良により開発目標が明確になり、チームでの開発・共有が容易になった反面、要件定義の不足や技術的課題が残った。 プログラミング初心者メンバーの学習機会にもなったと評価され、今後の継続開発が検討されている。
GitLabからGitHubに移行した時に直面した課題と対策
この記事は、GitLabからGitHubへのリポジトリ移行手順と、その際に発生した課題とその解決策について記述している。移行計画では、休日を選んでCI/CDのトリガーを無効化することを決定。移行手順は、1. 必要な権限の取得、2. CIの無効化、3. git clone --mirror
によるローカルクローン、4. remote URLの変更、5. git push --mirror
によるGitHubへのプッシュ、6. GitLabリポジトリのアーカイブ化、という流れで行われた。 git push --mirror
実行時に100MBを超えるファイルの存在によるエラーが発生したが、git filter-repo
コマンドを使って大容量ファイルを削除することで解決した。 最後に、CI/CDアーキテクチャの違いによる手順変更の可能性に言及している。
【GitHub Actions】Actions Runner Controllerのメトリクスを可視化してみた
このテックブログ記事は、GitHub Actions Runner Controller (ARC) のメトリクスを有効化し、OpenTelemetry Collector、Prometheus、Grafana を用いて可視化する方法を解説しています。具体的には、ARC のメトリクスを出力するよう Helm Chart を更新し、OpenTelemetry Collector を用いて Prometheus にメトリクスを送信、最後に Grafana でダッシュボードを作成して可視化するという手順です。 Dockerfile と Kubernetes マニフェスト例も提供されており、Grafana ダッシュボードの作成方法についても詳細に説明されています。 一部のメトリクスは取得できない可能性がある点も注意喚起されています。
Misskeyで天気予報botを作ってみた
この記事は、毎朝自分のMisskeyサーバーに天気予報を投稿するbotを開発した過程を説明している。WeatherAPI.comから天気予報データを取得し、PythonとMisskeyのSDKを用いてアプリを作成、AWS LambdaとTerraformでインフラを構築、GitHub ActionsでCI/CDを自動化した。ローカル環境での動作確認、Dockerイメージの作成、環境変数を利用したLambda関数の実装、Terraformによるインフラ構築(ECR、IAMロール、Lambda関数)、GitHub ActionsによるCI/CDワークフローの実装について詳細に解説している。全体を通して、モジュール化されたTerraformコードやReusable workflowを用いたGitHub Actionsワークフローの構築方法も示している。