ソフトウェアは捨てやすく作ろう
このテックブログ記事は、ソフトウェア開発における仮説検証の迅速化のため、「捨てやすいソフトウェア」の開発を提唱している。 PMF到達前のスタートアップにおいては不要な機能が生まれやすく、それらを容易に削除できる設計が重要であると主張。具体的には、開発チーム全体で「捨てやすい」という方針を共有し、10分以内に機能削除可能な設計を目標とする。 技術的には、レイヤー別(Package by Layer)ではなく機能別(Package by Feature)のディレクトリ構成を採用することで、機能単位でのコード削除を容易にする方法を紹介している。さらに、大規模開発への対応として、機能内をさらに細分化する階層構造も提案している。 要約すると、迅速な仮説検証のための、機能単位で削除しやすいコード設計とチーム体制の重要性を訴えている記事である。
【作業効率3倍UP】VSCodeチートシートの永久保存版
この記事は、MacとWindows両方のVSCodeにおける様々なショートカットキーを網羅的に紹介するテックブログ記事です。矢印キー連打など非効率な作業を解消し、作業効率を劇的に向上させることを目的として、全般、編集、マルチカーソル操作、検索・置換、言語編集、ナビゲーション、エディタ・ファイル管理、表示、デバッグ、統合ターミナルといったカテゴリー別にショートカットキーとその機能をリストアップしています。 記事内には実践動画へのリンクも含まれています。
プロキーターの俺が選ぶ2024年の良記事まとめ
この記事は、Nuco Advent Calendar 2024の7日目記事として、忙しいエンジニア向けにQiitaの厳選良記事を紹介している。 内容は、プログラミング、データベース、AI、フロントエンド、マネジメント、英語学習など幅広い分野を網羅し、実践的なテクニックや効率化のノウハウ、セキュリティ対策、チーム開発における注意点などが解説されている。 具体的な例として、SQL最適化、Dockerイメージサイズ削減、JWT(JSON Web Token)の解説、アクセシビリティ、Webパフォーマンス改善、効果的な会議運営などが挙げられている。 記事全体を通して、エンジニアのスキルアップと業務効率向上に役立つ情報を提供している。
趣味開発Webアプリケーションのほぼ0円インフラ構成
この記事は、趣味で開発したWebアプリケーションを月額2円で運用する方法を紹介している。アクセス数の少ない小規模なアプリケーションを想定し、パフォーマンスをある程度犠牲にすることで低コストを実現している。
具体的には、バックエンドにCloud Run(ゼロスケール設定とCloud Run domain mappingでコスト削減)、データベースにTiDB Serverlessの無料枠、フロントエンドの静的配信にCloud Storageを使用する。リクエスト振り分けには、Cloud Load BalancingではなくCloudflareのDNS ProxyモードとCloud Connectorを組み合わせることで実現している。コールドスタート対策として、Cloud Monitoringの稼働時間チェック機能を利用した定期的なリクエスト送信を行う。
ただし、この構成はアクセス数やデータサイズが小さいアプリケーションにのみ適しており、パフォーマンス低下やコスト増加のリスクがあることを注意喚起している。また、Cloud Run domain mappingはプレビューリリース段階のため、レイテンシ増加などの問題点も指摘されている。
男性育休を1年取ってみた〜いつ報告した?周りの反応は?育休はよかった?
朝日新聞社エンジニアの山本氏が、1年間の男性育休を取得した経験を報告している。仕事で男性育休推進のウェブサイト開発に携わったことがきっかけで、妻の妊娠を機に1年間の育休取得を決意。妊娠初期の妻の苦労を目の当たりにし、育休取得を上司に報告。5ヶ月前に1年間の取得を伝え、上司からは当初戸惑いながらも賛同を得た。後任者の確保が難航する中で、徹底的な業務引き継ぎに奔走し、育休2ヶ月前に異動も経験するなど、準備期間は慌ただしかった。育休中は新生児の育児に奮闘したが、子どもの成長を間近で見ることができ、妻からの感謝と信頼を得たことが大きな収穫だった。育休中にSNS運用スキルを向上させ、復帰後の業務に役立つ知見も得た。山本氏は、男性育休取得はハードルが高いものの、子どもの成長を間近で見たいと思うなら、積極的に取得することを推奨している。
要約した内容の身:
この記事は、朝日新聞社で働くエンジニアである著者が、1年間の育児休暇を取得した経験談を紹介したものです。 仕事を通じた男性育休の啓発活動が、自身の育休取得の大きな動機となりました。 取得までの過程では、後任者確保の困難や異動など様々な課題がありましたが、周囲の理解と協力のもと、1年間の育休を実現。育休中はハードな育児と並行してSNS運用スキルを向上させるなど、自己研鑽にも励みました。 結果的に、子どもの成長を間近で見守り、妻からの感謝を得るなど、大きな充実感と新たなスキルを獲得できたと結論付けています。 最後に、男性の育休取得を推奨するメッセージで締めくくられています。
世界一安いGPUを求めて2024冬
この記事は、GPUリソースの入手方法と各サービスの比較について解説しています。スポット利用にはGoogle ColabとRunpodが最強で、継続利用にはゲーミングPCの購入またはBREAJONでのサブスクが推奨されています。クラウドGPUサービスでは、Runpodが価格と機能のバランスが良いと評価されています。 コストや利用目的、セキュリティ要件に応じて、Google Colab、Runpod、BREAJON、Vast.ai、GCPなどから最適なサービスを選択することが重要です。
8時間夜通しのテックイベント「朝までFigma」に参加してみた
新卒2年目のデザイナーが「朝までFigma」というFigma活用オンラインイベントに参加した体験記。8時間に渡り23組のスピーカーがFigmaの新機能などを実演形式で解説。特に「実装しやすいモックアップの作成方法」と「デザインシステムにおけるFigmaコンポーネント設計」のセッションが印象的で、FigjamのConnector Line機能やBoolean propertyとInstance swap機能の活用方法を実例と共に紹介している。これらの機能により、画面フローやコンポーネント設計がより分かりやすく、効率的になったと報告している。イベント全体を通してFigmaの可能性を再認識し、今後の業務への活用意欲を高めたと結論付けている。
readmeが読めないのでAHC040に参加できないニキを救いたい
この記事は、競技プログラミングコンテストAHC030(AHC040でも同様)のローカルテスト実行方法に関する解説です。Windows環境で配布されたコンパイル済みバイナリ(./tester.exe
)を用いて、自身のコード(例:Pythonのa.py
)をテストする方法を、cmd < in.txt > out.txt
コマンド(Powershell環境ではcat in/0000.txt | ./tester.exe python3 a.py > out.txt
)を用いて具体的に説明しています。cmd
は実行コマンド、in.txt
は入力ファイル、out.txt
は出力ファイルです。READMEの記述が不親切な点も指摘しつつ、ローカルテスト実行手順を丁寧に解説し、Powershellでの実行方法についても補足しています。最後に、IT業界における環境構築の重要性と、問題解決に向けた建設的な姿勢の必要性を述べています。
WordPress で学ぶ Cloud Run のストレージとデータベース
この記事は、低頻度アクセスなWordPressサイトをGoogle Cloud Run上で動作させるための構成例を紹介している。Cloud Runのスケーラビリティと、コスト効率の良いストレージ/データベース連携を実現するために、以下の技術を用いている。
- ストレージ: 静的ファイル(themes, plugins)はコンテナ起動時にCloud Storageからコピー、動的ファイル(uploads)はCloud Storage FUSEを使って直接アクセスする。
- データベース: Cloud SQLと、サイドカーコンテナとして動作するCloud SQL Auth Proxyを利用して安全に接続する。Global IPアドレスを使用し、Serverless VPC Accessは使用しない。
- コスト最適化: Cloud Runの最小インスタンス数を0に設定することで、アクセスがない際の費用を最小限に抑える。
これにより、オンデマンドでスケールし、低頻度アクセス時のコストを抑えつつ、高頻度アクセス時にも対応可能なWordPress環境を構築できることを示している。
うつ病で障害を持ったエンジニアが、障害のない社会を作る会社で働くまでを振り返る
この記事は、うつ病を患いながらLITALICOに入社し、現在元気に働いている著者の体験談です。過労、人間関係、コロナ禍の引きこもりなどが原因でうつ病を発症し、休職・復職を繰り返した後、就労移行支援施設で体調管理やITスキルを習得。LITALICOへの転職を決めたのは、障害者への理解が深く、自身の配慮要望にも柔軟に対応してくれたためです。LITALICOでは、モブワークやフレックス制度、充実したサポート体制により、安心して働けていると述べています。 著者は、自己管理、無理をしないこと、会社の配慮を仰ぐことの重要性を強調し、うつ病と上手く付き合いながら長期就労を目指していることを明らかにしています。
【完全ガイド】CSS論理プロパティから見る 新しいCSSの考え方
この記事は、CSSの論理プロパティについて解説しています。論理プロパティは、コンテンツの流れに基づいてレイアウトを定義するもので、従来の物理プロパティ(top, right, bottom, left)とは異なり、書字方向(LTR/RTL/縦書き)に依存しないため、多言語対応やアクセシビリティの向上に役立ちます。inline-start
, inline-end
, block-start
, block-end
といったキーワードを用いて、マージン、パディング、ボーダー、サイズ、位置などを指定できます。 主なメリットは国際化対応の簡素化、メンテナンス性の向上、レイアウトの一貫性確保、コード量の削減、レスポンシブ対応の簡略化、将来的な変更への対応力です。 ただし、古いブラウザのサポート状況に注意が必要で、フォールバック策(@supports
や従来の物理プロパティ併用)が推奨されています。 Tailwind CSSなどのモダンなCSSフレームワークでもサポートされており、使い方の例も紹介されています。
JavaScript が ECMAScript なわけ
Netscape Navigator 2.0で独自開発されたJavaScriptは、MicrosoftがJScriptを開発したことで標準化の必要性が生じた。NetscapeはW3CやISOへの標準化提案を断られた後、ECMAに標準化を依頼し、ECMAScriptとして規格化された。 ECMAが名前をECMAScriptに変更したことが、記事の主題となっている。
D言語でAtCoderを解きたい!
この記事は、TRIAL&RetailAI Advent Calendar 2024の7日目の記事で、AtCoderでD言語を使う方法を紹介している。D言語のインストール方法(Homebrew利用)、標準入出力、UFCS(Uniform Function Call Syntax)による簡潔な記述、配列操作、高階関数、FizzBuzzの実装例などを解説している。著者はD言語の簡潔さ、AtCoderへの適性を高く評価しており、競プロでの利用を推奨している。 また、著者のAtCoder挑戦記やD言語への愛着も記されている。
AtCoderで入青したのでいろいろなことを書く
AtCoderで青コーダーになった中1の競技プログラミング経験者が、その過程と今後の目標を記した記事である。ライブラリ整備、タイピング練習、過去問演習(AtCoder Daily Trainingを含む)、ARC問題演習などを継続的に行い、レートを上げた経験を共有している。今後の目標は、黄色コーダーになることと、情報オリンピックの本戦出場である。
起業するならElixirシリーズSTEP7.メディアを狙え
この記事は、スタートアップにおけるプロトタイプ販売とメディア戦略について説明している。開発初期段階では、完璧な製品を目指さず、顧客に価値を提供することに重点を置くミニマムバイアブルプロダクト(MVP)を限定販売する。これにより顧客フィードバックを得て製品を改善し、同時にユーザーエンゲージメントを高める。 その後、得られたユーザーの声を元に、オウンドメディア、アーンドメディア、ペイドメディアといった様々なメディアを活用した広報活動を行う。 Elixir言語の特性についても触れているが、詳細は割愛している。
【前編】ガバメントクラウドの論点に対する対策を考えてみた
本記事は、国立国会図書館のガバメントクラウドに関するレポートを元に、その中で指摘されている課題への対策を考察したテックブログの前編である。前編では、レポートで挙げられた4つの論点のうち、①ガバメントクラウド移行による運用経費削減効果の不足、②ベンダーロックインと特定クラウドサービスの寡占化の懸念、の2点を取り扱っている。
①については、クラウド利用料管理の難しさを指摘し、FinOpsというフレームワークを活用したコスト最適化を提案。②については、現状ではAWSのシェアが圧倒的に高いものの、公共部門のクラウド利用拡大フェーズであるため、当面はマルチクラウド化の議論は時期尚早と結論づけている。ただし、中長期的な視点からは、クラウドサービスモデルの選定における「移行性/運用自由度」と「先端性/アジリティ」のトレードオフを考慮する必要性を強調し、Switching Costの概念も紹介している。
Goで認可サーバーことはじめ
この記事は、Go言語を用いたOAuth 2.0認可サーバーの簡易実装例を紹介するテックブログです。認可コードフローに焦点を当て、クライアント登録、認可コード発行・検証、アクセストークン生成といった主要機能の実装と、E2Eテストによる検証方法をコード例と共に解説しています。 OAuth 2.0の基本概念と重要性についても触れられています。
GoのクロスプラットフォームGUIライブラリのGioを触ってみた
この記事は、Go言語でクロスプラットフォームGUI開発を可能にするライブラリGioの紹介と、簡単なサンプルプログラムを用いた使い方解説です。 Gioを用いて「Hello, Gio」と表示するシンプルなデスクトップアプリを作成し、イベントループ処理やUI要素の描画方法を説明しています。 作者はGioのドキュメントが充実しており、Go初心者でも容易に扱えると結論づけています。
Supabase Cron & Queues を用いた非同期処理の実装
この記事は、Supabaseの新しいQueueとCron機能を使って非同期処理(メール送信)を実現する方法を紹介している。SupabaseのIntegrationsからQueueとCronを有効化し、設定を変更することで、CronジョブがEdge Functionを呼び出し、Queueにメッセージを追加、最終的にメール送信を行う構成になっている。サンプルコードはGitHubで公開されている。
入社前に学んだ効率的な業務の進め方
ITベンチャーでインターン中の学生が、業務効率化について学んだ経験を共有している。完璧を目指して作業を進めていたため非効率だったと気づき、「60〜70%の完成度でレビューしてもらう」「コードが書けない場合は紙芝居で設計を共有する」という2点を意識するようになった。これにより、早期のフィードバックを受け、修正に時間を割くことで効率的に成果物を作成できるようになったという内容。
説明されてもピンとこないのでインデックスを実際に張ってみた
この記事は、PostgreSQLを用いたデータベースのインデックスに関する検証実験の報告です。10万件のテストデータを生成し、age
、gender
、code
列にインデックスを作成することで、EXPLAIN ANALYZE
コマンドを用いてSQL実行時間の変化を計測しました。その結果、検索頻度が高く、絞り込み能力の高い列(age
、code
)にインデックスを作成することで、実行時間が大幅に短縮されることを確認しました。一方で、絞り込み能力の低い列(gender
)にインデックスを作成しても、効果は限定的であることを示しています。 実験を通して、インデックス設計の重要性と、EXPLAIN ANALYZE
コマンドによる実行計画の確認が有効であることを実証しています。
わからないことを理解するための知識ネットワーク
この記事は、新卒エンジニアが未経験分野の請求基盤開発で直面した「わからないこと」への対処法を紹介している。著者は、専門用語や概念を「点(ノード)」、それらの関係性を「線(エッジ)」として捉え、知識をネットワークのように整理する方法を考案した。 この方法により、全体像の把握、柔軟な学習、新たな視点の発見、そして未知へのストレス軽減を実現したという。具体的には、用語をメモし、その関連性を繋げて可視化することで、学習の進め方が明確になり、効率的に知識を習得できたとしている。
ペアプロで掴んだ成長の鍵:新人エンジニアが壁を突破するために実践した5つのステップ
この記事は、リンクアンドモチベーションの新人エンジニアが、6〜9月を過去最高の成長期間とした理由と具体的なステップを紹介するものです。著者は当初、コミュニケーション不足やタスク遂行における曖昧さを抱えていましたが、以下の5つのステップで克服しました。(1) ペアプロを通じた正確なコミュニケーション能力の向上、(2) タスク遂行における目的、完了条件、スコープ等の観点の明確化、(3) プロダクトコードのリーディングによるコード理解力の向上、(4) Paizaを用いた実践的なコーディングスキル習得、(5) 自己肯定感と自己効力感の向上です。これらのステップにより、知識の断片が繋がり、自信とモチベーションを持って仕事に取り組めるようになりました。
PreviewActivityをHackする
この記事は、Jetpack ComposeのUIプレビュー機能を高度に活用する方法について解説しています。Android Studioの@Preview
アノテーションによるプレビューはLayoutlibを使用するため、実機と表示が異なる問題があるため、実機プレビューを実現するPreviewActivity
をハックすることで、より正確なUI確認を行う方法を提案しています。 具体的には、AndroidManifest.xml
を修正してテーマやパーミッションを変更したり、PreviewActivity
内でComponentActivity
の機能を利用することで、WindowInsetsやPicture-in-Pictureモードといった機能の確認を可能にする方法を紹介しています。さらに、XMLレイアウトのインフレートもPreviewActivity
で行う方法も示しています。 要約すると、@Preview
アノテーションとPreviewActivity
を組み合わせ、AndroidManifest.xml
とComposable関数を調整することで、実機環境に近いUIプレビューを実現し、より正確なUI開発を可能にするテクニックが紹介されています。
Plannerを救いたい with Power Automate
この記事は、Power AppsとPower Automateを用いてPlannerとSharePointリストのデータ整合性を保つ方法について記述しています。Power AppsからPlannerへのタスク作成は既に実現済みですが、ユーザーがPlanner単体でタスクを作成・更新・削除した場合の整合性を確保するために、Power Automateで定期的な同期処理を行う仕組みを構築しました。新規作成タスクはSharePointに存在しない場合削除、更新・削除は定期的に同期し、Get a task失敗時のエラー処理でSharePointからの復元機能も追加しています。 強引な方法ながらも、PlannerとSharePointリストのデータ整合性を維持することに成功しています。
EKS Auto ModeとEKS on Fargateの違いを調べてみた
この記事は、AWS re:Invent 2024で発表されたEKS Auto ModeとEKS on Fargateの機能比較を詳述しています。EKS Auto ModeはAWSがノード管理を行うため、k8sクラスタ運用が容易になります。一方、EKS on FargateはFargateがノード管理を担当します。主な違いは、Auto Modeがノードのバージョンアップを自動化し、GPUノード、DaemonSet、特権コンテナ、Public IPを持つPodなどをサポートするのに対し、Fargateはこれらの機能をサポートしない点です。課金方法も、Auto Modeはインスタンス単位、FargateはPod単位です。記事では、それぞれの機能比較表と詳細な解説、そしてそれぞれのメリット・デメリットが示されています。小規模な運用にはFargate、より高度な機能が必要な場合はAuto Modeが適しているという結論が示唆されています。
Kaggleに特化したChatGPTのカスタムインストラクションの紹介
この記事は、KaggleコンペでChatGPTを効果的に利用するためのカスタムインストラクション設定方法を紹介している。 著者は自身のKaggle戦略として、コンペ概要、ベースライン情報、好むコーディングスタイル(型ヒント、テストコード、関数化、リファクタリング、日本語でのDocstring/コメント、How/What/Why/Why notの記述)などをChatGPTのカスタムインストラクションに登録。これにより、ChatGPTがコンペの文脈を理解し、高品質なコードを生成するようになり、開発効率が向上したと報告している。 フィボナッチ数列生成の例を用いて、カスタムインストラクションあり・なしでのChatGPTの出力結果を比較することで、その効果を実証している。
TeamsからAmazon Bedrock Agents にServiceNowのインシデント起票をしてもらおう - 2024年12月版
この記事は、Microsoft TeamsとServiceNowを繋ぎ、AIエージェントを用いてServiceNowへのインシデント登録を自動化するシステム構築手順を詳細に解説したテックブログです。 Teamsへのインシデント報告をトリガーに、Azure Bot Service、Amazon API Gateway、AWS Lambda、Amazon Bedrock Agentsなどを連携させ、ServiceNow APIを呼び出してインシデントを登録します。 具体的な各サービスの設定手順やコード例(Python)が掲載されており、ServiceNow操作に不慣れなユーザーの負担軽減を目指しています。
LLMの推論部分を理解してみよう!
この記事は、大規模言語モデル(LLM)の推論過程を解説したテックブログ記事である。LLMがテキストをトークン化し、Transformerモデルを用いて次のトークンの確率分布を計算し、デコード戦略(貪欲法、サンプリング法、top-kサンプリング、top-pサンプリングなど)によってトークンを決定することでテキストを生成する仕組みを、Llama 3の実装例を交えながら説明している。 特に、top-pサンプリングやtemperatureパラメータによる確率分布の制御方法、そしてそれらが生成テキストの多様性や自然さにどう影響するかを詳述している。 ただし、予定していたハルシネーションに関する実験には触れられていない。
確信度を出してくれるOCRを作ってみる!
このテックブログ記事は、レシートや請求書などの画像からテキスト情報を抽出する際の誤認識問題とその解決策について述べています。Google Document AI、GPT-4o、Gemini 1.5 Pro 002といった複数のAIモデルを用いて、5つのサンプル画像に対するテキスト抽出精度をF値を用いて評価しました。その結果、モデル間で精度に差があり、画像の種類(PDF、スキャンデータ、手書き文字など)によって得意不得意があることが判明しました。
さらに、誤認識を軽減するために、複数のモデルの出力を組み合わせ、確信度スコアを表示するアプリケーションを作成しました。このアプリケーションは、OCRで抽出したテキストの座標情報と、大規模言語モデル(LLM)によるテキスト抽出結果を組み合わせ、各テキスト要素の確信度スコアを算出し、校正作業の負担軽減を目指しています。 実装には、Google Document AI, GPT-4o, Gemini 1.5 Pro 002と、Gradioを用いたGUIが使用されています。