ソフトウェアは捨てやすく作ろう
この記事は、ソフトウェア開発における仮説検証の高速化のため、「捨てやすいソフトウェア開発」を提唱するものです。不要な機能を迅速に削除できるよう、チーム全体で「捨てる勇気を持つ」「10分以内に機能削除可能にする」ことを目標に、ディレクトリ構造を機能単位(Package by Feature)で分割し、さらに必要に応じて細分化することで、コードの可読性と削除容易性を高める手法を紹介しています。 これにより、コードベースの認知負荷を軽減し、ビジネスへの悪影響を防ぐことを目指しています。
【作業効率3倍UP】VSCodeチートシートの永久保存版
この記事は、MacとWindows両方のVSCodeにおける多数のショートカットキーを網羅したものです。 矢印キー連打やマウス操作など非効率な作業を改善し、作業効率を向上させることを目的として、全般、編集、マルチカーソル操作、検索・置換、言語編集、ナビゲーション、エディタ管理、ファイル管理、表示、デバッグ、統合ターミナルといったカテゴリー別にショートカットキーが一覧で紹介されています。 記事中には実践動画へのリンクも含まれています。
プロキーターの俺が選ぶ2024年の良記事まとめ
この記事は、Nuco Advent Calendar 2024の7日目として、忙しいエンジニア向けの実践的なQiita記事を厳選して紹介している。内容は、プログラムの可読性、Git、SQL、Docker、英語、バックエンド(セキュリティ、API実装、AWS、データ分析、DB)、AIモデル(AIツール選定、LLM活用、CodeAGI、社内chatbot)、フロントエンド(Web開発、デザイン)、マネジメントといった幅広い分野を網羅しており、それぞれの分野で役立つ具体的な記事が複数紹介されている。 効率的な業務遂行やスキルアップに役立つ情報を提供している。
趣味開発Webアプリケーションのほぼ0円インフラ構成
この記事は、趣味で開発したWebアプリケーションを低コストで運用する方法を紹介している。アクセス数の少ない小規模なアプリケーションを想定し、静的サイト生成(SSG)とクライアントサイドレンダリング(CSR)によるフロントエンド、コンテナ化可能なバックエンドという構成を前提とする。
具体的な構成は、データベースにTiDB Serverless(無料枠利用)、バックエンドにCloud Run(ゼロスケール設定とCloud Run domain mappingでコスト削減)、フロントエンドの静的配信にCloud Storageを使用する。Cloud Load Balancingの代わりに、CloudflareのDNS ProxyモードとCloud Connectorを組み合わせることで、リクエストをCloud RunとCloud Storageに振り分ける。コールドスタート対策として、Cloud Monitoringの稼働時間チェック機能による定期的なリクエスト送信を行う。
これにより、月額2円程度の低コスト運用を実現するが、アクセス数増加や高可用性・安定性を求める用途には適さない点に注意が必要である。 Cloud Run domain mappingはプレビュー版であり、レイテンシ増加などの問題があることも考慮すべき点だ。
男性育休を1年取ってみた〜いつ報告した?周りの反応は?育休はよかった?
朝日新聞社エンジニアの山本氏は、仕事で男性育休促進企画に関わったことがきっかけで、自身も1年間の育休を取得した。妊娠初期は妻の体調不良や仕事の負担で苦しい時期もあったが、妻の負担を軽減するため、育休取得を決意。5ヶ月前に会社に報告し、上司も理解を示した。しかし、後任者の確保が難航し、育休2ヶ月前に異動も経験するなど、引き継ぎ作業は困難を極めた。育休中は慣れない育児に奮闘したが、子どもの成長を間近で見られたこと、妻からの信頼を得られたことが大きな喜びだった。育休中はSNS運用に時間を割きフォロワーを増やし、広報業務への活用も視野に入れている。山本氏は、男性の育休取得を推奨し、事前に貯蓄しておくことをアドバイスしている。
世界一安いGPUを求めて2024冬
この記事は、GPUリソースの入手方法と、その最適な選択肢を比較検討したものです。スポット利用にはGoogle ColabとRunpodが最強で、継続利用にはゲーミングPCの購入もしくはBREAJONでのサブスクが推奨されています。クラウドGPUサービスではRunpodがコストパフォーマンスに優れ、Vast.aiもA100を安く利用したい場合に適しています。用途や予算に応じて最適な方法を選択する必要があると結論づけています。
8時間夜通しのテックイベント「朝までFigma」に参加してみた
新卒2年目のデザイナーが、「朝までFigma」というFigma活用オンラインイベントに参加した体験記。8時間の長丁場にも関わらず、3000人以上が参加した大盛況のイベントで、実演形式のセッションを通してFigmaの新機能や実践的な活用法を学んだ。特に、「実装しやすいモックアップ作成」と「デザインシステムにおけるFigma Component設計」の2つのセッションが印象的で、FigjamのConnector Line機能やBoolean propertyとInstance swap propertyの組み合わせによるコンポーネント設計の改善方法を実践し、作業効率の向上とデザインの分かりやすさを実感した。イベントを通してFigmaの可能性を再認識し、今後の業務に活かしていくとしている。
readmeが読めないのでAHC040に参加できないニキを救いたい
この記事は、競技プログラミングコンテストAHC030(AHC040でも同様)のローカル環境でのテスト実行方法について解説したものです。Windows環境で提供されたコンパイル済みバイナリ(tester.exe
)を使用し、Powershell上でPythonコード(a.py)をテストする方法を、./tester.exe python3 a.py < in/0000.txt > out.txt
(またはPowershell対応版cat in/0000.txt | ./tester.exe python3 a.py > out.txt
) のコマンド実行を通して具体的に説明しています。 READMEの記述が不親切な点も指摘しつつ、解決策を示し、ローカルテスト環境構築における問題解決能力の重要性を強調しています。
WordPress で学ぶ Cloud Run のストレージとデータベース
この記事は、Google Cloud Runを用いてWordPressを低頻度アクセス向けにデプロイする方法を解説しています。従来、Cloud RunとCloud SQLの連携はコスト面で課題がありましたが、Cloud Storage FUSEとサイドカーコンテナの活用により、低コストで実現可能になったと主張しています。具体的には、静的ファイル(themes, plugins)はコンテナ起動時にCloud Storageからコピーし、動的ファイル(uploads)はCloud Storageに直接アクセスする構成とし、Cloud SQLへの接続にはCloud SQL Auth Proxyをサイドカーコンテナとして利用することで、グローバルIPアドレスの利用を回避しています。これにより、Cloud Runのスケーラビリティとコスト効率を両立したWordPress環境を構築できることを示しています。
うつ病で障害を持ったエンジニアが、障害のない社会を作る会社で働くまでを振り返る
この記事は、うつ病を患いながらLITALICOに入社し、現在元気に働いている著者の体験談である。過労、人間関係、コロナによる引きこもりなどが原因でうつ病を発症し、休職・復職を繰り返した後、就労移行支援施設で訓練を受け、転職活動を経てLITALICOに入社した。LITALICOでは、自身の状態を理解し、配慮のある職場環境、フレキシブルな勤務体系、そして障害福祉サービスに関わる仕事へのやりがいが、長期就労を実現できていると述べている。 自身の経験から、うつ病と上手に付き合うために、自己管理、無理をしないこと、会社への適切な配慮の依頼の重要性を強調している。
【完全ガイド】CSS論理プロパティから見る 新しいCSSの考え方
この記事は、CSSの論理プロパティについて解説しています。論理プロパティは、コンテンツの流れに基づいてレイアウトを定義するもので、従来の物理プロパティ(上下左右)とは異なり、言語や書字方向(LTR/RTL/縦書き)に依存せず、国際化対応やアクセシビリティの向上に役立ちます。inline-start
、block-start
などの新しいプロパティを使い、margin-inline
、padding-block
のように記述します。メリットとして、国際化対応の簡素化、メンテナンス性の向上、レイアウトの一貫性確保、コード量の削減、レスポンシブ対応の簡略化、将来の変更への耐性、直感的なデザインフローなどが挙げられています。主要ブラウザは広くサポートしていますが、古いブラウザや一部のプロパティではフォールバックが必要な場合もあります。Tailwind CSSなどでも利用可能で、設定によっては既存のクラス名との併用も可能です。最初は直感的ではないと感じても、グローバル化が進む現代においては、積極的に活用すべき技術であると結論づけています。
JavaScript が ECMAScript なわけ
JavaScriptはNetscape Navigatorで誕生し、Microsoftが独自実装(JScript)したことで標準化の必要性が浮上した。NetscapeはW3CやISOへの標準化提案を断られた後、ECMAに標準化を依頼し、ECMAScriptとして規格化された。ECMAが名称を決定したため、現在の名称になったという経緯がある。 ただし、記事の内容は脚色を含むため、正確な歴史とは異なる可能性がある。
D言語でAtCoderを解きたい!
この記事は、TRIAL&RetailAI Advent Calendar 2024の7日目記事として、AtCoderでD言語を使う方法を紹介している。D言語のインストール方法(Homebrew使用)、標準入出力、UFCS、高階関数、配列操作、FizzBuzz実装例などを解説し、AtCoderでD言語を使用するメリットを強調している。著者はD言語に魅力を感じており、AtCoderでD言語を使い、競技プログラミングを楽しんでいる。C言語からの移行が容易で、競プロでの記述のしやすさを評価している。
AtCoderで入青したのでいろいろなことを書く
AtCoderで青コーダーになった中1の競技プログラミング経験者が、その過程と今後の目標を記述している。青コーダーになるために、ライブラリ整備、タイピング練習、過去問演習、AtCoder Daily Trainingへの参加を重視したと述べている。今後の目標は黄色コーダーへの昇格と情報オリンピック本戦出場としている。
起業するならElixirシリーズSTEP7.メディアを狙え
この記事は、プロトタイプ販売を通じてサービスを検証・改善し、顧客とのエンゲージメントを高める方法について解説している。完璧な製品ではなく、顧客にとって価値のある最小限の機能を持つプロトタイプを限定販売し、フィードバックを得て改善を繰り返す。同時に、得られたユーザーの声を元にメディア露出を図り、サービスの認知度向上を目指す、という流れである。 プロトタイプ販売の目的は顧客からのフィードバック取得とエンゲージメント向上であり、メディア戦略の重要性も強調されている。
【前編】ガバメントクラウドの論点に対する対策を考えてみた
このテックブログは、国立国会図書館のレポート「ガバメントクラウドの概要と主な課題、論点」を基に、ガバメントクラウド導入における課題とその対策を考察している。前編では、運用経費削減効果の不足とベンダーロックインの懸念という2つの論点を取り上げている。
運用経費削減については、FinOpsの導入によるクラウドコスト最適化を提案。ベンダーロックインについては、現時点での対策は時期尚早としながらも、将来的にはクラウドサービスモデルの選定における「移行性/運用の自由度」と「先端性/アジリティ」のトレードオフを考慮し、Switching Costを踏まえた検討が必要だと主張している。AWSのシェアが高い現状についても、公共部門のクラウド利用拡大という文脈で理解を示している。
Goで認可サーバーことはじめ
この記事は、Go言語を用いてOAuth 2.0認可サーバーの簡易実装方法を解説したテックブログです。認可コードフローに焦点を当て、クライアント登録、認可コード発行・検証、アクセストークン生成といった主要機能の実装例と、E2Eテストによる検証方法を示しています。 Confidential Clientを用いたWebアプリケーションベースの実装と、Goのgolang.org/x/oauth2
ライブラリを使ったテストコードが紹介されています。 OAuth 2.0の基礎知識と、セキュリティを考慮した実装の重要性が強調されています。
GoのクロスプラットフォームGUIライブラリのGioを触ってみた
この記事は、Go言語のクロスプラットフォームGUIライブラリGioを使ったデスクトップGUI作成の入門記事です。Gioのインストール方法、簡単なサンプルコード(「Hello, Gio」を表示するプログラム)の実行方法、そしてコードの解説が説明されています。サンプルコードはイベントループを用いてウィンドウの生成、イベント処理、テキストの描画を行い、material.H1
関数でタイトルをカスタマイズしています。作者はGioのドキュメントが分かりやすく、Go初心者でも扱いやすいと結論づけています。
Supabase Cron & Queues を用いた非同期処理の実装
この記事は、Supabaseの新しいキューイングサービスとCronジョブを用いて非同期処理(メール送信)を実現する方法を紹介している。SupabaseのIntegrationsからQueueとCronを有効化し、設定を行うことで、Supabase Clientからキューにメッセージを送り、CronジョブでEdge Functionを呼び出し、メール送信処理を実行できる。サンプルコードはGitHubで公開されている。
入社前に学んだ効率的な業務の進め方
ITベンチャーでインターンをしている学生が、業務効率化について学んだ経験を共有している。完璧な成果を目指して時間をかけていたことが非効率だったと気づき、「60~70%の完成度で早めにレビューしてもらいフィードバックを得る」「コードが分からなければ紙芝居のようなラフを作成して共有する」という2つの方法を実践するようになった。これにより、修正に時間を割き、効率的に作業を進められるようになったという内容である。
説明されてもピンとこないのでインデックスを実際に張ってみた
この記事は、PostgreSQLを用いてデータベースのインデックスの効果を実験的に検証した結果を報告するものです。10万件のテストデータを用いて、age
, gender
, code
カラムにインデックスを作成し、EXPLAIN ANALYZE
コマンドで実行計画と実行時間を比較しました。その結果、検索頻度が高く、絞り込みに効果的なカラム(age
, code
)にインデックスを作成することで、実行時間が大幅に短縮されることを確認しました。一方、絞り込み効果の低いカラム(gender
)にインデックスを作成しても、効果は限定的であることが示されました。 さらに、複合インデックスを作成することで、複数の条件での検索を高速化できることも実証しています。 全体として、インデックス設計の重要性と、EXPLAIN ANALYZE
コマンドによる検証方法を紹介しています。
わからないことを理解するための知識ネットワーク
この記事は、新卒エンジニアが未経験のレセプト基盤開発で遭遇した「わからないこと」への対処法として、「知識ネットワーク」という手法を紹介している。これは、専門用語や概念を「点(ノード)」、それらの関係性を「線(エッジ)」として捉え、ネットワーク状に整理することで、全体像を把握し、学習を進める方法である。 具体的な手順として、用語・概念をメモ(ノード)、それらの関係性を記述(エッジ)、全体を可視化することを挙げ、この方法によって全体像の把握、柔軟な学習、新たな視点の発見、未知へのストレス軽減といったメリットが得られると結論づけている。
ペアプロで掴んだ成長の鍵:新人エンジニアが壁を突破するために実践した5つのステップ
この記事は、新人エンジニアが6~9月で飛躍的に成長できた過程を5つのステップで解説している。
- エンジニアとしての会話力向上: ペアプログラミングを通して、専門用語の正確な使用と認識のすり合わせを習得。
- タスク遂行観点の獲得: 目的、完了条件、スコープ、手順、動作確認、時間見積もりといった観点を意識し、タスク分解と事前レビューを行うようになった。
- コードリーディング能力向上: プロダクトコードを50本読み解き、「CodeTour」などのツールを活用することで、綺麗なコード、正しいコードの理解を深めた。
- コーディング能力向上: Paizaを用いた練習とPDCAサイクルを通して、0→1でコードを書く経験を積んだ。
- 自己肯定感・自己効力感の向上: コードを読み書きできるようになり、ハッカソンでの貢献なども相まって、自己肯定感と自己効力感が高まった。
これらのステップを経て、曖昧な理解や手戻りが減り、成長を実感し、仕事へのモチベーションも向上したと結論付けている。
PreviewActivityをHackする
この記事は、Jetpack ComposeにおけるUIプレビューの高速化と正確性の向上を目的とした、PreviewActivity
の活用方法について解説しています。Android Studioのプレビュー機能はLayoutlibを使用するため、実機と異なる表示になる問題点を指摘し、より正確なプレビューを得るためにPreviewActivity
を用いることを提案しています。 PreviewActivity
をハックすることで、WindowInsets、Picture-in-Pictureモード、XMLレイアウトの確認など、Android Studioプレビューでは不可能な検証を可能にすると説明しています。 具体的なハック方法は、AndroidManifest.xml
の編集と、PreviewActivity
内で実行されるComposable関数の工夫によって実現し、いくつかの実践例を示しています。 PreviewParameterProvider
の使用は、Scaffold
でラップされるためWindowInsets確認には不向きである点も注意喚起しています。
Plannerを救いたい with Power Automate
Power AppsとPlannerの双方向同期を実現するためのPower Automateフロー構築についての記事。Plannerでタスクが新規作成された場合は、SharePointリストにデータが存在するか確認し、存在しなければPlannerタスクを削除、またはSharePointリストに追加する。更新・削除は定期実行で同期し、Plannerのタスク取得に失敗した場合はSharePointリストから復元する処理を追加することで、データ整合性を維持する。 強引な方法ではあるものの、Power AppsとPlannerの連携強化を試みている。
EKS Auto ModeとEKS on Fargateの違いを調べてみた
この記事は、AWS re:Invent 2024で発表されたEKS Auto ModeとEKS on Fargateの比較を詳細に解説しています。EKS Auto ModeはAWSがノードを管理するサービスで、Fargateと比較して、GPUノード、DaemonSet、特権コンテナの使用、イメージキャッシュ、Public IPを持つPod、Spotインスタンス、RI/Savings Planの利用、GuardDuty runtime monitoringに対応している点が大きな違いです。一方、FargateはPod単位のセキュリティグループやPodごとの課金が可能です。どちらを選択するかは、クラスタ規模や必要な機能によって異なり、小規模な運用にはFargateが、より高度な機能が必要な場合はAuto Modeが適していると言えるでしょう。 Auto ModeはノードへのSSHアクセスが不可である点に注意が必要です。
Kaggleに特化したChatGPTのカスタムインストラクションの紹介
この記事は、KaggleコンペティションでChatGPTを効率的に利用するためのカスタムインストラクション設定方法を紹介しています。 著者は、コンペの概要、ベースラインモデル、自身のコーディングスタイル(型ヒント、テストコード、関数化、リファクタリング、日本語のコメントとDocstringなど)をChatGPTに指示することで、質の高いコードを迅速に生成できるようになったと報告しています。 具体的なカスタムインストラクション例と、それによるコード生成の違い(ON/OFF比較)を示し、ChatGPTのカスタムインストラクションがKaggleでの開発効率向上に大きく貢献することを結論づけています。
TeamsからAmazon Bedrock Agents にServiceNowのインシデント起票をしてもらおう - 2024年12月版
この記事は、Microsoft TeamsとServiceNowを連携させ、AIエージェント経由でServiceNowへのインシデント起票を自動化するシステム構築手順を詳細に解説したテックブログです。 AWS Lambda、Amazon Bedrock Agents、Amazon API Gateway、Azure Bot Serviceなどを用いたシステムアーキテクチャと、各サービスの設定、コード例が提示されています。 最終的には、Teamsからの自然言語によるインシデント報告をAIエージェントが解釈し、ServiceNowに自動的にインシデント登録するシステムが完成します。 ユーザーは複雑なServiceNow操作を学ぶ必要がなくなり、業務効率が向上する点が強調されています。
LLMの推論部分を理解してみよう!
この記事は、大規模言語モデル(LLM)の推論プロセスについて解説したテックブログ記事です。LLMがテキストをトークン化し、Transformerを用いて次のトークンの確率分布を計算し、デコード戦略(貪欲法、サンプリング法、top-kサンプリング、top-pサンプリングなど)によってトークンを決定し、テキストを生成する過程を、Llama 3の実装例を元に詳細に説明しています。 特に、デコード戦略の違いによる出力結果への影響と、temperatureパラメータによる確率分布の調整について解説し、具体的な例を用いて説明しています。 最後に、予定していたハルシネーションに関する実験は割愛されたことが述べられています。
確信度を出してくれるOCRを作ってみる!
この記事は、レシートや請求書などの画像からテキスト情報を抽出する際のOCRの誤認識問題と、その誤り訂正を支援するアプリケーション開発について記述しています。
まず、Google Document AI、GPT-4o、Gemini 1.5 Pro 002の3つのモデルを用いて、5つのサンプル画像に対するテキスト抽出精度をF値で評価しました。その結果、モデルによって精度に差があり、画像の種類(PDF、スキャンデータ、手書き文字など)によって最適なモデルが異なることが示されました。
次に、より正確なテキスト抽出と誤り訂正のための処理フローを提案しました。具体的には、OCRによるテキスト抽出後、複数のLLM(GPT-4o、Gemini 1.5 Pro 002)を用いて抽出結果を検証し、確信度スコアとともに表示することで、校正者の負担軽減を目指します。 画像にバウンディングボックスとID番号を付加し、LLMに渡すことで、それぞれのテキスト抽出結果の対応付けを行い、最終的に誤り訂正を行う手法を提案し、Gradioを用いた実装例も示しています。
要約した内容を箇条書きにすると以下のようになります。
- OCRの誤認識問題に着目: レシートなどの画像からのテキスト抽出におけるOCRの誤認識と、その訂正の困難さを指摘。
- 複数モデルを用いた精度評価: Google Document AI、GPT-4o、Gemini 1.5 Pro 002の精度をF値で比較。画像の種類によるモデルの得意不得手を分析。
- 誤り訂正支援アプリケーション開発: 複数のLLMとOCRを組み合わせ、確信度スコアを表示する誤り訂正支援アプリケーションを提案。
- 処理フローと実装例: OCR、LLMによるテキスト抽出、バウンディングボックスとIDによる対応付け、確信度スコアの算出、Gradioを用いたUI実装について説明。