【作業効率3倍UP】VSCodeチートシートの永久保存版
この記事は、MacとWindows両方のVSCodeにおける多数のショートカットキーを一覧形式で紹介している。 矢印キー連打やマウス操作など非効率な作業を減らし、作業効率を向上させることを目的としている。 各ショートカットキーは、全般、編集、マルチカーソル、検索置換、言語編集、ナビゲーション、エディタ管理、ファイル管理、表示、デバッグ、統合ターミナルといったカテゴリーに分類され、コマンドと説明が記述されている。 記事内には実践動画へのリンクも含まれる。
ソフトウェアは捨てやすく作ろう
この記事は、ソフトウェア開発における仮説検証の重要性と、それを効率的に行うための「捨てやすいソフトウェア開発」手法を紹介しています。 不要な機能の削除を容易にするため、開発チーム全体で「捨てやすい」という意識を共有し、機能単位でディレクトリを切る(Package by Feature)ことで、コードの削除と保守性を向上させる方法を提案しています。 特に、大規模開発においては、機能を更に細かい単位で階層化することで管理しやすくなると説明しています。 最終的には、捨てやすい設計がプロダクトの競争優位性を高めると結論付けています。
プロキーターの俺が選ぶ2024年の良記事まとめ
この記事は、忙しいエンジニア向けにQiitaの厳選記事を紹介するNuco Advent Calendar 2024の投稿です。 紹介されている記事は、プログラミング、データベース、AI、フロントエンド開発、マネジメントなど幅広い分野を網羅しており、実践的なテクニックや知識が学べます。 具体的には、コードの可読性向上、Git、SQL最適化、Dockerイメージサイズ削減、JWT、API設計、AWS操作、データ分析、DB設計、AIツール選定、アクセシビリティ、Webパフォーマンス改善、デザイントレンドなどに関する記事が挙げられています。 効率的な業務遂行やスキルアップを目指すエンジニアにとって役立つ内容となっています。
趣味開発Webアプリケーションのほぼ0円インフラ構成
この記事は、趣味で開発したWebアプリケーションを低コストで運用する方法を紹介している。アクセス数の少ない小規模アプリケーションを想定し、静的サイト生成(SSG)とクライアントサイドレンダリング(CSR)を用いたフロントエンド、コンテナ化されたバックエンドという構成で、月額2円程度の費用に抑えている。
具体的には、データベースにTiDB Serverlessの無料枠、バックエンドにCloud Runのゼロスケール機能、フロントエンドの静的配信にCloud Storageを使用。Cloud Load Balancingの代わりに、CloudflareのDNS ProxyモードとCloud Connectorを組み合わせることで、リクエストの振り分けを実現している。Cloud Runのコールドスタート対策としてCloud Monitoringの稼働時間チェック機能を利用している点がポイント。
ただし、この方法はアクセス数やデータサイズが小さいアプリケーションに限定され、パフォーマンスを犠牲にしている点を理解する必要がある。また、Cloud Run domain mappingはプレビューリリース段階で、レイテンシ増加などの問題がある。
8時間夜通しのテックイベント「朝までFigma」に参加してみた
新卒2年目のデザイナーが、「朝までFigma」というFigma活用法オンラインイベントに参加した体験談。8時間の長丁場にも関わらず、3000人以上が参加した盛況ぶりだった。印象に残ったセッションとして、「実装しやすいモックアップの作り方」と「デザインシステムの実例から見るFigma Component設計の流儀」を紹介。前者ではFigjamのConnector Line機能を用いた画面フロー作成の効率化、後者ではBoolean propertyとInstance swap propertyを使った直感的なコンポーネント設計の改善策を学んだ。イベントを通してFigmaの可能性を再認識し、自身のデザインスキル向上に繋げると述べている。
転職活動はお見合い
この記事は、10年iOSエンジニアとして1度転職経験のある著者が、転職活動で「やってよかったこと」を2点紹介するものです。
1つ目は、転職活動前から勉強会に参加し、人脈を築いたこと。スキル向上だけでなく、友人関係構築や転職活動での情報交換、さらには共著執筆など、予想外の大きな収穫があったと述べています。
2つ目は、「転職活動はお見合い」という心構えを持つこと。ありのままの自分を出し、無理に自分を良く見せようと嘘をつくべきではないと主張。面接では自身の正直な気持ちを伝え、それが誠実さとして評価された経験を共有しています。また、求職者と企業は対等な立場であることを強調し、お互いを尊重した上で転職活動に臨むべきだと結論づけています。
世界一安いGPUを求めて2024冬
この記事は、GPUリソースの入手方法と各サービスの比較を解説したテックブログです。スポット利用にはGoogle ColabとRunpodが、継続利用にはゲーミングPCの購入またはBREAJONのサブスクが推奨されています。クラウドGPUサービスでは、Runpodが価格と性能のバランスが良いと評価されています。 A100を安く利用したい場合はVast.aiやRunpodが選択肢となります。ビジネス用途にはGCPなどの大手クラウドサービスが適しています。
男性育休を1年取ってみた〜いつ報告した?周りの反応は?育休はよかった?
朝日新聞社の山本氏は、男性として1年間の育休を取得した経験を報告している。仕事で男性育休推進の企画に携わったことがきっかけで育休取得を決意し、妻の妊娠を機に上司に5ヶ月前に1年間の育休取得を報告。後任者確保に苦労しながらも、育休2ヶ月前に異動を経験するなど、準備期間は慌ただしかった。育休中は新生児の育児に奮闘する一方、SNS運用でフォロワーを増やすなど成果も得た。育休を通して得られた最大のものは妻からの信頼であり、育児の大変さと喜びを経験したと結論づけている。
WordPress で学ぶ Cloud Run のストレージとデータベース
この記事は、Google Cloud Runを用いた低頻度アクセス型のWordPress構築方法を解説しています。従来、Cloud RunとCloud SQLの連携はコスト面で課題がありましたが、Cloud Storage FUSEとサイドカーコンテナの活用により、Cloud Storageをストレージ、Cloud SQLをデータベースとして、コスト効率よくWordPressを運用できることを示しています。具体的には、静的ファイル(themes、plugins)はコンテナ起動時にCloud Storageからコピーし、動的ファイル(uploads)はCloud Storageに直接アクセスすることで、コストを抑えつつ、高速なレスポンスタイムを実現しています。また、Cloud SQL Auth Proxyをサイドカーコンテナとして実行することで、Cloud RunとCloud SQLの安全な接続を実現しています。これにより、低頻度アクセスサービスに最適な、スケーラブルでコスト効率の良いWordPress環境を構築できます。
【前編】ガバメントクラウドの論点に対する対策を考えてみた
このテックブログは、国立国会図書館のレポート「ガバメントクラウドの概要と主な課題、論点」を基に、ガバメントクラウド導入における課題と対策を考察している。前編では、運用経費削減効果の不足と、特定クラウドサービスの寡占化の懸念という2つの論点を取り上げる。
運用経費削減については、FinOpsというクラウドコスト最適化フレームワークの導入を提案。寡占化については、現状では対策を講じる時期尚早としながらも、中長期的な視点ではクラウドサービスモデルの選定における移行性と先端性(トレードオフ)の検討、Switching Costの考慮を提唱している。 主に地方公共団体を対象としたレポートに基づいているが、一般的なガバメントクラウド利用にも参考となる内容である。
【最新版】エンジニア向けUdemyおすすめ講座16選
この記事は、Udemyのプログラミング講座のおすすめを紹介するテックブログ記事です。Web制作、フロントエンド、バックエンド、インフラ、全般の5分野に分け、各分野で役立つ講座を複数解説付きで紹介しています。具体的には、HTML/CSS/JavaScript、React、Node.js、PHP、Ruby on Rails、AWS、Terraform、Git/GitHubなどに関する講座が挙げられています。初心者から中級者レベルまで幅広いスキルレベルに対応した講座が選定されており、コストパフォーマンスを重視して学習したいエンジニアにとって有益な情報となっています。
説明されてもピンとこないのでインデックスを実際に張ってみた
この記事は、PostgreSQLを用いてデータベースのインデックスの効果を検証したエンジニア1年生によるハンズオンレポートです。10万件のテストデータを投入し、EXPLAIN ANALYZE
コマンドを用いて、年齢、性別、コードの各カラムにインデックスを作成した場合と作成しない場合の検索速度を比較しました。その結果、検索頻度が高く、絞り込みに有効なカラム(年齢、コード)にインデックスを作成することで、検索速度が大幅に向上することが確認されました。一方、絞り込み力の低いカラム(性別)にインデックスを作成しても、効果は限定的であることが示されました。 さらに、複合インデックスを用いることで、より高速な検索を実現できることも確認しています。 記事では、インデックスの概念説明は外部リソースに委ね、実践的な検証結果に焦点を当てています。
Kaggleに特化したChatGPTのカスタムインストラクションの紹介
この記事は、ChatGPTのカスタムインストラクションを活用してKaggleコンペでの効率を上げる方法を紹介しています。著者は、Kaggleコンペの具体的な概要、評価指標、ベースラインモデルなどをChatGPTのカスタムインストラクションに記述することで、ChatGPTがコンペの文脈を理解し、型ヒント、テストコード、適切なDocstring付きの、高品質なPythonコードを生成できるようにしました。 カスタムインストラクションを設定することで、ChatGPTがコンペに特化した回答を迅速に生成し、開発時間を短縮、ひいてはKaggleでの成績向上に繋がることを実例を交えて示しています。
JavaScript が ECMAScript なわけ
Netscape Navigator 2.0 で生まれたJavaScriptは、Microsoftが独自実装JScriptを開発したことで標準化の必要に迫られた。W3Cが標準化を拒否したため、NetscapeはECMAに標準化を依頼。ECMAは「ECMAScript」という名称で標準化を受け入れたという経緯がある。 この要約は、記事の脚色された記述に基づいています。
Goで認可サーバーことはじめ
この記事は、Go言語を用いてOAuth 2.0認可サーバーの簡易実装を紹介するテックブログです。認可コードフローに焦点を当て、クライアント登録、認可コード発行・検証、アクセストークン生成といった主要機能のコード例と、E2Eテストによる検証方法を示しています。 Confidential Clientを用いたWebアプリケーションを想定した実装で、認可サーバーとクライアントの双方の実装例と、それらを検証するE2Eテストコードが掲載されています。 OAuth 2.0の基本的な理解を深めるための実践的なチュートリアルとなっています。
D言語でAtCoderを解きたい!
この記事は、TRIAL&RetailAI Advent Calendar 2024の7日目の記事で、D言語を用いてAtCoder(競技プログラミングサイト)の問題を解く方法を紹介している。D言語のインストール方法(Homebrew利用)と、AtCoderで役立つD言語の文法(UFCS、標準入出力、配列操作、高階関数など)を解説し、FizzBuzz問題の実装例を示している。著者はD言語の簡潔さとAtCoderでの利便性を強調し、競技プログラミングの楽しさを共有している。 さらに、D言語を選んだ理由としてC言語からの移行のしやすさを挙げている。
起業するならElixirシリーズSTEP7.メディアを狙え
この記事は、テックスタートアップがプロトタイプを販売し、ユーザーフィードバックを得てサービスを改善していく過程について説明している。完全な製品ではなく、最小限の機能で価値を提供し、ユーザーの声を収集、メディア露出を増やすことで、サービスを改善し、顧客エンゲージメントを高める戦略をとっている点がポイントである。 プロトタイプ販売によるフィードバック収集とメディア戦略の重要性が強調されている。
Kaggle画像コンペでやっていること①
この記事は、Kaggleの画像コンペティションにおける取り組み方を初級者向けに解説したものである。著者はGrandmasterで、画像コンペで常に実施する基本事項と、コンペ特有の工夫の2点に焦点を当てている。
いつもやること: パラメータ調整、アンサンブル、データの確認(解像度変更、正規化、augmentationなど)、サブタスク学習、閾値調整、疑似ラベル・ドメイン適応、外部データ探索など。これらは基本だが、熟練が必要で上位入賞に不可欠。
そのコンペだからやること: データ特性に合わせた工夫、特徴量作成、モデルアーキテクチャ検討など。コンペ毎に必要で、差別化を図る上で重要。
記事では、解像度調整、augmentationの種類、アンサンブル手法(特にWeighted Box Fusion)についても具体例を交えて説明している。これらの基本事項を習得することが、画像コンペで上位を目指すための第一歩であると結論付けている。 今後の記事では、「そのコンペだからやること」について詳細に解説する予定。
要件定義書にUMLを使ってみよう
このQiitaアドベントカレンダーの記事は、小規模〜中規模システム開発における要件定義書作成とUML活用の実践的な方法を紹介している。UML(統一モデリング言語)を用いて、クライアントとの認識合わせを重視した要件定義を行うことを提案。具体的には、クラス図、ユースケース図、アクティビティ図を用いた例を示し、アクター定義、機能要件、業務フローの記述方法を解説している。非機能要件についてはUMLはあまり使わないものの、重要性を強調している。全体を通して、厳格なUML規約ではなく、クライアントを含む関係者間の理解を最優先する柔軟なアプローチを推奨している。
大切なあなたの時間を奪うクソゲーム
筆者は、AIプログラミングツールCursorを用いて、スマホのジャイロセンサーでボールを転がし画面を塗りつぶすブラウザゲーム「ボール転がし」を開発した。コーディングはほぼ全てCursorに任せ、自身は指示を出すのみで1文字もコードを書かずにゲームをリリースできた。ゲームには自由モードとタイムアタックモードがあり、ボールのサイズも選択可能。開発にはSvelteKit、DeviceOrientation API、Vercelを使用。開発時間はゲームプレイに費やされたとユーモラスに締めくくっている。
ペアプロで掴んだ成長の鍵:新人エンジニアが壁を突破するために実践した5つのステップ
この記事は、新人エンジニアの中島氏が6~9月間に著しい成長を遂げた経験を共有するものです。当初、コミュニケーション不足やタスク遂行における曖昧さを抱えていた中島氏は、以下の5つのステップを経て成長しました。(1)ペアプログラミングを通してエンジニアとしての会話能力を向上、(2)タスク遂行における目的、完了条件、スコープ等の観点を明確化、(3)プロダクトコードのリーディングによりコード理解を深め、(4)Paizaを活用してコード記述能力を高め、(5)自己肯定感と自己効力感を向上させました。これらのステップにより、曖昧な理解や手戻りを減らし、タスク遂行能力と自己効力感が向上、結果として仕事への満足度も高まりました。 成長の鍵は、ペアプログラミングによる継続的なフィードバックと、具体的な学習ツール(CodeTour, Paiza)の活用にあったと結論付けています。
GoのクロスプラットフォームGUIライブラリのGioを触ってみた
この記事は、Go言語のクロスプラットフォームGUIライブラリGioを使ったデスクトップGUI作成のチュートリアルです。Gioのインストール方法、シンプルな「Hello, Gio」を表示するサンプルコードとその解説、そしてGioの利点(ドキュメントが充実しており初心者にも扱いやすい)が紹介されています。 サンプルコードではイベントループ処理、テーマ設定、テキスト表示などが解説されており、より複雑なGUI作成への導入として役立つ内容となっています。
Supabase Cron & Queues を用いた非同期処理の実装
この記事は、Supabaseの新しいキューイングサービスとCron機能を使って非同期処理(メール送信)を実現する方法を説明している。SupabaseのIntegrationsでQueueとCronを有効化し、設定を行うことで、CronジョブがEdge Functionを呼び出し、Queueにメッセージを投入、処理を実行する仕組みを構築している。GitHub上のサンプルコードも公開されている。
【GraphQL】そのApollo ClientのキャッシュIDは一意ですか?
この記事は、Apollo ClientにおけるキャッシュIDの一意性の重要性と、その確保方法について解説したものです。 不適切なキャッシュID設定により、異なるデータが同一IDで上書きされる問題が発生することを、具体例を用いて説明しています。解決策として、①Apollo Clientの設定でキャッシュキーをカスタム設定する(idとstudentIdをキーとする)、②サーバーサイドで一意なIDを生成してクライアントサイドで使用する、の2つの方法を提案。②の方法が保守性が高いと結論付けています。
AtCoderで入青したのでいろいろなことを書く
AtCoderで青コーダーになった中1の競技プログラミング経験者が、その過程と今後の目標を記している。青コーダーになるために、ライブラリ整備、タイピング練習、過去問演習、AtCoder Daily Trainingへの参加が重要だったと述べている。今後は黄色コーダーを目指し、情報オリンピックの本戦出場を目指すとしている。
TeamsからAmazon Bedrock Agents にServiceNowのインシデント起票をしてもらおう - 2024年12月版
このテックブログ記事は、Microsoft TeamsからServiceNowへのインシデント登録を自動化するAIエージェントシステムの構築手順を詳細に解説している。 Teamsからのユーザーのインシデント報告を、Azure Bot Service、Amazon API Gateway、AWS Lambda、Amazon Bedrock Agents、そしてカスタム作成されたLambda関数などを経由してServiceNowに送信するシステムだ。構築にはServiceNow、Amazon Bedrock Agents、AWS Lambda、Amazon API Gateway、Azure Bot Serviceの各サービスを使用し、PythonでLambda関数を記述している。記事では各サービスの設定方法、Lambda関数のコード例、そしてMicrosoft Teamsアプリの作成手順まで詳細に説明されている。最終的に、Teamsからインシデント報告を行い、ServiceNowに自動的に登録されるシステムが完成する。 記事の目標は、ServiceNowの操作に慣れていないユーザーの負担を軽減することにある。
初心者でもわかる!「オンラインゲームにおける仕組み」を学んでみよう【前編】
この記事は、オンラインアクションゲーム開発における基礎知識を非エンジニア向けに解説したテックブログの前編です。フレームレート、遅延(ネットワーク遅延、処理遅延、表示遅延)、レスポンスといった基本用語を説明し、非同期型オンラインゲームにおける課題として「ワープ現象」と「アイテムデュープ」を取り上げています。非同期型では、プレイヤー間でゲームの状態にずれが生じ、それがこれらの問題を引き起こすことを、格闘ゲームの例を用いて具体的に解説しています。後編では同期型、C/S/P2Pモデル、NAT問題、リレーサーバ方式などが解説される予定です。
todo.txtを布教したい
この記事は、シンプルなTodo管理システムとしてtodo.txt
形式のテキストファイルと、それを扱ういくつかのクライアントツールを紹介している。todo.txt
は1行に1タスクを記述するシンプルなテキストフォーマットで、OS非依存、検索可能、ポータブル、軽量といった利点を持つ。著者は、CUIツールであるtodo.txt-cli
、topydo
を紹介した後、自身の開発したWebアプリtokaido
とNeoVimを組み合わせた独自のワークフローを紹介。tokaido
ではタスクの詳細を別ファイルで管理し、Gitで管理することで、オフライン環境でも利用可能な堅牢なシステムを実現している。 PriorityやContextは使用せず、Projectとdue: を活用している。
Google Apps Scriptでslackに通知を送ってみよう
このテックブログ記事は、Google Apps Script (GAS)を使ってSlackへの通知機能を備えたウェブアプリを作成する方法を説明しています。Slack側ではIncoming WebHooksを設定し、GAS側ではdoGet関数でHTMLを表示、doPost関数でSlackへの通知(notifySlack関数)を行い、ボタンクリックで通知を送信する仕組みです。 HTMLはシンプルなボタン付きのページで、ボタン押下時にPOSTリクエストでdoPost関数を呼び出します。notifySlack関数は、指定したWebhook URL、ユーザー名、アイコン、メッセージを使ってSlackに通知を送信します。記事では、Slackのメンション方法や絵文字アイコンの設定方法についても解説しています。
Laravelにおけるクエリ改善
この記事は、Laravel Eloquentを用いたデータベースクエリの最適化について、初心者向けに解説したものです。 記事一覧表示において、ユーザー名とコメント数を表示する際に発生するN+1問題を、Eager Loadingのwith()
メソッドとwithCount()
メソッドを用いて解決しています。with()
メソッドはユーザーとコメント情報を一度に取得し、withCount()
メソッドはコメント数を効率的に取得することで、クエリ数を削減し、パフォーマンスを向上させています。 さらに、withCount()
を用いることで、不要なデータのロードを減らし、メモリ消費量も削減できることを示しています。