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