セキュリティエンジニアって200職あんねん(分類とキャリアの話)
この記事は、セキュリティエンジニアの多様な役割を「オフェンシブ(攻撃的)/ディフェンシブ(防御的)」と「上流(計画・設計)/下流(実行・運用)」の2軸で4象限に分類し解説しています。 各象限には具体的な業務例(レッドチーム演習、ペネトレーションテスト、セキュリティポリシー策定、インシデント対応など)と関連資格が紹介されており、セキュリティエンジニアを目指す際のキャリアパス検討に役立つ内容となっています。 特に、攻撃と防御の両方の視点を持つ「パープルチーム」についても言及しています。
エンジニア向け数学・統計知識総復習【50選】
この記事は、エンジニアにとって役立つ数学・統計の知識を、基礎から発展的な内容まで幅広く紹介している。剰余演算、自然対数、対数関数、シグマ・パイ記号、有効数字、論理演算、集合・論理記号、二項係数、N進法、ベクトルと類似度、微分、積分、極限、双曲線関数、分散と標準偏差、変動係数、データの標準化、偏差値、相関係数、確率変数と確率分布、期待値、正規分布、大数の法則、モンテカルロ法、ベイズの定理、時系列分析、マルコフ連鎖、様々な確率分布、データ分析手法、最小二乗法、交差検証、浮動小数点数、文字コード、探索アルゴリズム、Antsの問題、黄金比・白銀比、グラフ理論、最短経路問題、1%ガチャ問題、誕生日のパラドックス、最適停止問題、72の法則、ピケティの不等式、ナッシュ均衡、降水確率、有限オートマトン、逆ポーランド記法、BNF記法といったトピックが、簡潔な説明と例題と共に解説されている。 特に後半は、エンジニアの仕事に直接的に役立つだけでなく、興味深い数学的知識も含まれている。
【全エンジニア必見?】仕事で使えないLinuxネタコマンド大全
この記事は、Linuxのコマンドラインで使える、実用的ではないが面白いコマンドを多数紹介している。 テキスト装飾(cowsay、xcowsay、ponysay、fortune、yes、rev、banner、figlet、toilet、boxes)、アニメーション(cmatrix、hollywood、no-more-secrets、asciiquarium、bb、aafire、cbonsai、cacademo、nyancat、oneko、xeyes)、タイポ&パロディ(sl、gti、apt-get moo)、そして少し実用的なコマンド(cal、curl wttr.in、factor、wtf、screenfetch、welcome2l)やtelnetを使ったゲーム(スターウォーズ、チェス、囲碁)、コマンドラインゲーム(スペースインベーダー、テトリス、パックマン、スネーク、マインスイーパー、月面車ゲーム、ソリティア、2048、戦略ゲーム、nethack)などが紹介されている。 記事の目的は、読者にLinuxコマンドの面白さを伝え、楽しみを提供することにある。
かわいいだけじゃだめですか?(:3」∠)
この記事は、新卒エンジニアが絵文字より1行AA(顔文字)を好む理由を説明するテックブログです。著者は、1行AAの方が絵文字より種類が多く(424個対106個)、表情表現が豊かで、意味の取り違えが少ない点をメリットとして挙げています。さらに、おじさん構文に1行AAを適用することで、印象が改善される例を示し、1行AAの可愛らしさを強調して、自身の1行AA愛を表明しています。
新卒が業務を通して感じたこと・学んだこと
新卒1年目の塩谷さんは、業務の中で質問の仕方、作業の認識齟齬、言葉遣いに苦労したと報告している。 質問では相手に気を遣いすぎて聞きそびれることが多く、作業では認識違いによるやり直しや遅延が発生した。また、曖昧な言葉遣いが誤解を招いた経験もある。 これらの経験から、話す前に内容を整理し言語化する、フィードバックを受け入れる、そして実践を通して学ぶことの重要性を学んだと結論づけている。
Gemini APIを使用して愛犬がコードレビューしてくれるVSCode拡張機能を自作する
この記事は、Google Gemini APIを利用して、VSCode上でコードレビューを犬の口調で返す拡張機能「dog-reviewer」を作成する手順を説明しています。Yeomanでプロジェクトを作成後、Gemini APIキーを設定し、WebViewとコマンドを登録することで、選択したコードをGemini APIに送信し、結果をサイドバーに表示します。進捗状況に応じて画像も切り替わる演出も含まれています。 開発過程では、@google/generative-ai
ライブラリを使用し、vscode.window.registerWebviewViewProvider
やvscode.commands.registerCommand
などのVSCode APIを用いています。
スクラム開発導入成果
チーム開発における継続的な参加を課題に、スクラム開発を導入した取り組みの報告。1ヶ月を1スプリントとし、月に1回全体会でプランニング、レビュー、レトロスペクティブを実施。デイリースクラムは週1回、3チームに分けてリモートで行った。Jira, Confluence, Bitbucket を使用。結果、軌道修正が容易になり、作業の明確化に繋がった一方、役割分担の不備や、このチームにはスクラムが必ずしも最適ではないことが判明した。今後は役割分担の改善と、得られた知見に基づく新たな開発フレームワークの構築を目指す。
非公式のHTTPステータスコードまとめ
この記事は、公式規格にはない非公式のHTTPステータスコードとその説明を一覧で紹介している。 Apache、Laravel、Spring Framework、Twitter、Shopify、Microsoft、Esri、Qualys、Pantheon Systems、LinkedInといった様々なサービスやプラットフォームで使用されている、エラーや制限に関するコードが具体例と共に解説されている。
人の話の聞き方
本記事は、社会人にとって重要な「人の話を聞くスキル」について解説している。 要点として、①メモを取りながら聞き、正確な情報と後からの参照性を確保する、②話を聞いた後に疑問点を質問するが、事前に何を理解すべきかを意識し、作業手順などを具体的にイメージすることで的確な質問ができる、③相手の話を最後まで遮らずに聞くことで、良好なコミュニケーションを維持し、仕事への影響を避ける、の3点が挙げられている。 要は、メモ、質問、傾聴の3点を意識することで、仕事のパフォーマンス向上と評価アップに繋がる と結論づけている。
コードレビューの必須ガイド:要チェックポイント41選
この記事は、Pythonコードを例に、コードレビューにおける様々なチェックポイントを初心者からベテランまで活用できるよう網羅的に解説したテックブログです。 チェックポイントは、コーディング規約の遵守、コードの可読性と保守性、安全なコーディング、最適化とパフォーマンス、テストの充実とPR作成、APIレビューの6つのセクションに分類され、それぞれ具体的な項目と改善例が提示されています。 各項目では、問題点とその解決策、そして関連するベストプラクティスが具体例付きで説明されており、コードレビューの質向上に役立ちます。
RustバインディングでPython Lambdaを高速化
この記事は、AWS Lambda上で動作するPythonアプリケーションのパフォーマンスをRustバインディングを使って向上させる方法を解説しています。具体的には、Rustで記述した計算負荷の高い処理を、Pythonから呼び出すことで、Pythonの簡潔さを維持しつつ、Rustの高い処理速度を実現する方法を示しています。 手順として、Rustとmaturinのインストール、Rustプロジェクトの作成とビルド、Python Lambda関数でのRust関数の呼び出し、Lambda Layerの作成とデプロイ、そしてPython実装とRust実装のパフォーマンス比較(Rust実装が圧倒的に高速であることを示す結果)が記載されています。 最終的に、1000万回ループ処理において、Pythonの実装が約3秒かかったのに対し、Rust実装は約3マイクロ秒で完了したと報告されています。
新卒が5ヶ月働いて感じた良かった習慣
この記事は、新卒5ヶ月目の著者が、仕事で効果的な習慣として「手書きノートによるメモ」を紹介している。会議メモ、タスク管理、疑問点の記録、調べたことの整理など、あらゆる情報を手書きノートに記録することで、過去の事例の参照や、情報の整理・可視化が容易になり、業務効率が向上したと述べている。手書きノートのメリットとして、すぐに書き込めること、図表が描きやすいこと、視覚的に分かりやすいこと、文具選びでモチベーションを上げられることなどを挙げ、具体的な活用方法やおすすめのノート、メモのポイント(日付記載、記号の統一、1冊にまとめる、感情のメモ)も紹介している。
JUnitを用いた単体テストについて
この記事は、JUnitを用いた単体テスト、特にMockKとMockitoを使ったモック化について説明した備忘録である。JUnitのアノテーション(@Test
, @Before
)、アサーション(assertEquals
, assertThat
)、MockKのevery {} returns
、Mockitoのwhen().thenReturn()
によるモックの振る舞い定義方法を具体例と共に解説している。
Wordの便利なオプション設定について
このテックブログ記事は、Microsoft Wordの3つの便利な設定について解説しています。1つ目は編集記号(段落記号、スペース、タブ記号)の表示設定、2つ目はオートコレクト機能の設定、3つ目はフィールドの網かけ表示の設定です。それぞれ設定方法は「ファイル」>「オプション」メニューから行うことができ、記事では具体的な手順が記述されています。 これらの設定により、Wordの操作性や文書の確認が容易になることを説明しています。
SVGについて理解が曖昧なあなたへ
この記事はSVG(スケーラブルベクターグラフィックス)の概要と可能性を解説したテックブログ記事です。SVGがXMLベースのベクター画像フォーマットで、解像度非依存の高画質、テキストエディタでの編集、CSS/JavaScriptによるアニメーション作成が可能であることを説明しています。 JPG、PNG、GIF、WebPといった他の画像フォーマットとの違い(ベクター形式かラスター形式か、アニメーション対応の有無、ファイルサイズ、適した用途など)を比較し、SVGのロゴ、アイコン、Webアニメーション、UIなどへの活用例を示しています。 さらに、SVGを用いた簡単な円描画とJavaScript、CSSによるアニメーションのコード例も掲載されています。 最後に、SVGの今後の活用を検討する著者の結論が述べられています。
初めてデータベースを触る方向けのデータベース豆知識 🫛
この記事は、データベースの基礎概念を解説したものです。データとデータベースの違い、データベースの重要な特徴(リアルタイムアクセス、継続的変化、同時共有、内容による参照)、データベース設計の3段階(概念設計、論理設計、物理設計)、スキーマの定義と使用方法、データベース管理システム(DBMS)とその機能(DDL、DML、DCL)、データベースモデリング(ERモデル、リレーションモデル)、トランザクション管理(ACID特性)について説明しています。SQLを用いた具体的な例も示しながら、データベースの基本的な知識を分かりやすく解説している点が特徴です。
無形商材を売るということ、或いはコンサルティングとは何か、或いはプロフェッショナルとは
この記事は、システム開発会社における顧客への提案について、著者の見解を述べている。 著者は、システム、技術、ツールはあくまで手段であり、顧客は自身の課題を正確に理解していないことが多いと主張する。そのため、顧客の要望に沿った手段を提供するだけでは付加価値が低く、真の課題解決に繋がらないと指摘する。
代わりに、顧客の課題を深く理解し、その本質を捉えた上で、当初の要望をはるかに超える広範な提案を行うべきだと提言している。 具体的には、顧客のビジネス目標や経営状況を踏まえ、より効果的な解決策を提案することで、顧客と開発会社双方にとってより良い結果を得られると主張している。 最終的には、顧客の課題解決と日本のIT業界の発展に貢献することを目指している。
ブラウザがちょっとドキドキ!脆弱性体験 XSS攻撃やってみた
本記事は、意図的に脆弱性を仕込んだWebアプリケーション「DVWA」を用いたセキュリティ脆弱性の学習方法を紹介している。DVWAはブルートフォース攻撃、SQLインジェクションなど様々な脆弱性を含み、セキュリティレベルをHigh、Medium、Lowに設定できる。記事では、Mediumレベルで反射型クロスサイトスクリプティング(XSS)攻撃の実践例を説明し、悪意のあるスクリプトをURLに埋め込み、Webサーバがそれをそのまま出力することでユーザーのブラウザでスクリプトが実行される過程を解説。対策として、入力値の適切なサニタイズとエスケープ処理の重要性を強調している。
AWSコンソール上からWindowsServerにユーザを作成する
AWS Systems Managerを使用して、AWSコンソールからWindows Serverにユーザーを作成する方法を紹介する記事である。EC2インスタンス、SSM Agent、KMSキー(パスワード設定する場合)の準備の後、IAMロールに適切なポリシー(AmazonSSMManagedInstanceCore
とKMSアクセス権限)を付与する。その後、Systems Managerのフリートマネージャからユーザーを作成し、必要に応じてグループ(例:Remote Desktop Users)に追加する。最後に、リモートデスクトップ接続で作成したユーザーを確認する。 パスワードを必要としない場合はKMS設定は不要となる。
これを知らないと損!開発者なら知っておきたいGitコマンド10選
この記事は、Gitの基本コマンドだけでなく、開発効率を劇的に向上させる高度な10個のGitコマンドを紹介している。具体的には、バグ特定に役立つgit bisect
、作業状態の一時保存に便利なgit stash
、コミット履歴の確認や操作を行うgit reflog
, git cherry-pick
, git reset
、ファイル差分表示のgit diff
、リポジトリクリーンアップのgit clean
、コミット履歴の可視化git log --oneline --graph
、ファイル変更履歴の確認git blame
、そして特定コミットのエクスポートgit archive
などである。これらのコマンドを活用することで、開発スピードの向上やデバッグの効率化が期待できる。
SalesForceのデータをPleasanterに連携してみるお話
このテックブログ記事は、SalesforceのレポートデータをPleasanterに連携させる方法を説明しています。Salesforce側では、レポートAPIを利用し、必要なカスタムレポートを作成します。Pleasanter側では、データ格納用のテーブルを作成し、Salesforceのアクセストークンを取得後、HttpClientを用いたサーバースクリプトでレポートデータを取得、商品コードをキーにUpsert関数でPleasanterにデータを登録します。記事では具体的なコード例と、関連するSalesforce、Pleasanterのマニュアルへのリンクが提供されています。 効率化のため、bulkupsertの使用も提案されています。
大学生の息子が授業の課題に生成AIを利用したと言うので、どなんものか聞いてみて、やってみた
この記事は、著者の大学生の息子がプログラミング課題で生成AI(Code Copilot)を使ったことをきっかけに、プログラミング教育における生成AI利用の意義について考察したものである。 文部科学省のガイドラインを調べ、自身もMicrosoft Copilotを用いて元号と西暦を変換するWebアプリ作成を試みた結果、生成AIは強力な補助ツールになり得るものの、出力の正確性や倫理的な側面への配慮、そして学習者の主体的な学習姿勢が不可欠であると結論づけている。 生成AIの活用は便利さを生む一方で、思考能力の低下や社会格差拡大のリスクも孕んでいるため、その活用方法を慎重に検討する必要があると警鐘を鳴らしている。
【Ruby】1行パターンマッチを使って複雑なハッシュの中身を検証する
この記事は、Ruby 3.0以降で導入された1行パターンマッチを用いて、lazy_high_charts
gemで生成される複雑なハッシュ構造のテストを簡潔に記述する方法を紹介するテックブログです。 従来のRSpecによる冗長なテストコードを、パターンマッチを用いることで1行に削減し、可読性と保守性を向上させる手法を解説しています。 具体的には、options[:yAxis]
や series
の内容をパターンマッチで検証し、必要に応じてデータ部分をローカル変数に格納して後続のテストを行う方法を示しています。 =>
と in
の両方の書き方、エラーハンドリング、変数への代入方法なども例示されています。 ただし、パターンマッチのエラーメッセージが冗長である点や、in
を使用する場合の注意点についても触れられています。
【AWS Amplify × Cognito】サインインオプション変更で大苦戦! Authを作り直すプロセスまとめ
AWS Amplifyを用いてCognitoの認証設定(auth)をサインインオプション「ユーザー名」から「メールアドレス」に変更する際に発生した問題と解決策を記した記事である。Cognitoはユーザープールのサインインオプション変更をサポートしていないため、新しいユーザープールを作成する必要があった。既存のユーザープールを維持しつつ、Amplifyで新しいauthに切り替えるには、amplify remove auth
コマンド実行前に、CloudFormationの削除ポリシーをoverride.ts
で設定し、authに依存するリソース(Lambda, AppSync, Analytics等)の依存関係を解消する必要があった。 その後、amplify import auth
コマンドで既存のユーザープールをインポートし、新しいauthをAmplifyに紐づけた。さらに、CSVファイルによるユーザー情報の移行方法と、サードパーティ認証情報の移行(AdminLinkProviderForUserメソッド利用)についても解説している。フロントエンドの認証処理では、signIn
等のメソッドでusername
としてemail
を渡す必要がある点にも注意が必要である。
要約した内容の身:この記事は、AWS AmplifyとCognitoを用いた認証設定変更における実践的なトラブルシューティングガイドである。Cognitoの制約、amplify
コマンドの活用方法、CloudFormationの削除ポリシー設定、リソース間の依存関係解消、ユーザーデータ移行方法、そしてフロントエンドでの認証処理変更まで、具体的な手順と注意点が詳細に説明されている。既存システムを運用しながら認証設定を変更する際の参考となる情報が豊富に含まれている。
プロダクトを横断するSREチームの実践ベストプラクティス
メタップスホールディングスのSRE組織の6年間の実践例を紹介する記事。Google SRE本のベストプラクティスを完璧に実行できない現実を踏まえ、インフラ基盤の安定性向上に注力。AWSを中心としたインフラ、Datadog/PagerDutyによる監視、TerraformによるIaC、Fluentd/Datadogによるログ管理、Sentryによるエラートラッキング、GitHub ActionsによるCI/CDなどを採用。Embedded SREとPlatform SREの二つの役割で組織を構成し、プロダクトの柔軟性と組織全体のスケーラビリティを両立。SLOの監視にはDatadogと独自ダッシュボードを活用。トイル削減、インシデント対応、ポストモーテム、プレイブック作成、年間スケジュールの策定、若手育成などにも取り組み、継続的な改善を繰り返している。 記事では、特にTerraformのディレクトリ構成の変更や、ログ管理におけるコスト最適化の取り組み、オンコール体制の課題などが詳細に記述されている。
顔画像を切り抜きたい!~ Google Mediapipeを使って顔検知編 ~
この記事は、Google MediaPipeを用いて画像から顔を検出し、その座標を取得する手順を解説したテックブログです。 MediaPipeのインストール、顔ランドマーク検出モデルの読み込み、顔のランドマーク座標の取得、そしてOpenCVを用いた座標の可視化まで行っています。 ただし、取得した座標から顔画像を切り抜く処理は時間不足により未実装で、次回への課題となっています。 記事では、顔の表情を表すブレンドシェイプの特徴量も可視化しており、MediaPipeの機能を詳細に示しています。
【Java】クラスが特定のメソッドを持っているか判定する
このテックブログ記事は、Javaのリフレクションを用いてクラスが特定のメソッドを持つかの判定方法を解説しています。 まず、clazz.getMethod()
を用いた基本的な方法を示し、そのパフォーマンスの低さを指摘。 その後、ConcurrentHashMap
を用いたキャッシュ機構を実装することで、リフレクションによるパフォーマンス劣化を改善する方法を提示しています。 最後に、リフレクション使用時の安全性と可読性の低下といった注意点についても触れています。
【壁】新卒1年目にぶち当たった頻出エラーを振り返ってみる
この記事は、新卒エンジニアが2024年に遭遇した頻出エラーをランキング形式で紹介している。1位は変数やプロパティが未定義であるUndefinedError
、2位はコマンドが見つからないcommand not found
(実行ファイル未インストールまたはパス未設定)、3位はデータ型が期待値と異なるTypeError
である。各エラーの原因と解決策が具体例とともに解説されており、エラーを解決するための考え方についても述べられている。 特にcommand not found
については、パスを通す方法が例示されている。
リーダーになるのが不安なTE(テクニカルエンジニア)のあなたへ
この記事は、テクニカルエンジニア(TE)として高い技術力を持つものの、リーダーシップ経験に乏しくリーダー就任に不安を感じている人を対象に、その不安を解消するためのアドバイスを提供している。 記事では、TEとしての経験(ベストプラクティスの調査、新しい技術への挑戦)がリーダーシップにも活かせることを強調し、リーダーシップに「ベストプラクティス」はないものの「グッドプラクティス」は存在し、それらを探求し続ける姿勢が重要だと述べている。 また、自身の経験から得られる「TRY & ERROR」による学習能力が、リーダーシップスキル向上に繋がる点を指摘し、不安を抱えるTEが自身の経験と能力を活かしてリーダーとして成功できる可能性を示唆している。
ソフトウェアエンジニアの相棒!キーボードにこだわろう! - 方式の違いから自分にピッタリの一台を見つけよう編
この記事は、Schooのソフトウェアエンジニアが、キーボードの種類と選び方について解説したものです。 キーボードの信号感知方式の違いに着目し、メンブレン、パンタグラフ、メカニカル、静電容量無接点方式の特徴をそれぞれ解説。特にメカニカル方式のカスタマイズ性の高さや、静電容量無接点方式の耐久性と独特の打鍵感を強調しています。 最後に、自分に合ったキーボードを見つけることでQOL向上に繋がる、という結論を述べています。