nchika(nao1215)の技術ブログ。OSS、Go、人生について書きます。
2025-11-06-ctf2025.jpg

Go Conference 2025 向けに CTF を作った話(会社のテックブログのリンクを引用)

会社で書いた記事を引用 Go Conference 向けに Capture The Flag を作成し、その内容に関して記事を会社で書いたので、リンクを貼ります。後者の記事は、Capture The Flag を作る時の思考が垣間見えるので、オススメです。 ...

November 6, 2025 · 1 min
技術ブログ debimate のお引越し

技術ブログ debimate のお引越し(X Server to GitHub Pages)

お引越し 2025年12月末に、debimate は X Server から GitHub Pages へ移転します。 2025年11月現在は、移行期間であり、不具合がないかのチェックをするために設けています。移行にかかった時間は、2.5時間ほどです。移行というより、ブログの見栄えの調整に時間かかりました。 ...

November 5, 2025 · 4 min
【TypeScript】ファイルを分割し、任意の分割ファイル数で復元できる nao1215/horcrux を作った話【分霊箱】

【TypeScript】ファイルを分割し、任意の分割ファイル数で復元できる nao1215/horcrux を作った話【分霊箱】

前書き: jesseduffield/horcrux を参考にした 「Yet Another Horcrux を作ったよ」というお話をします。 Horcrux は、ハリーポッターに登場する用語で、日本語では分霊箱と訳されています。闇の魔法使いが不死になるために自らの魂を分割して、自らの魂を隠した物体を指します。この物体が存在する限り、現世に留まれることができます。予め断っておきますが、私はハリーポッターがそこまで好きではありません。ネタとしては好き。「フォフォイのフォイさ」や「ハリー< 二次会は嫌だ、二次会は嫌だ…… 組分け防止 < フィリピンパァアアアアアアアブ!!! 」とか。 ...

October 5, 2025 · 4 min
【nao1215/prompt】コードを読むのが辛いから、放置されたOSSをforkせずに作り直した話

【nao1215/prompt】コードを読むのが辛いから、放置されたOSSをforkせずに作り直した話

前書き:OSSが放置されることは当然のようにある 「OSSは、人気があれば活発にメンテナンスされる」 そのように考えている方がいらっしゃるのではないでしょうか。現実は、そこまで甘くありません。私が利用していた c-bata/go-prompt(5.4 stars)は、ライブラリとして採用した時点でメンテナンスが滞っており、結局3年間殆ど更新はありませんでした。 ...

September 20, 2025 · 6 min
【Golang】CSV, TSV, LTSVをsql.DBで操作するfilesqlパッケージを作った話

【Golang】CSV, TSV, LTSVをsql.DBで操作するfilesqlパッケージを作った話

前書き:同じ機能を持つコマンドのメンテが面倒だった filesql パッケージは、SQL ドライバーであり、SQLite3 のSQL 構文を使用してCSV、TSV、LTSV ファイルにクエリを実行できます。リリースして1週間経っていませんが、過去2番目の勢いで GitHub Star を獲得できています。嬉しいことですね。 ...

August 28, 2025 · 8 min
夏休みの自由研究として自作プログラミング言語をClaudeでVibe Codingした話

夏休みの自由研究として自作プログラミング言語をClaudeでVibe Codingした話

前書き:妻と息子が不在の一足早い夏休み 仕事が谷間(= 夏休みが取れる状況)、かつ妻と息子が旅行で不在だったので、ある程度規模感があるOSSを作ろうと思いたちました。今回、実装期間2日で開発したのは、SNOW言語(関数型言語)です(補足:夏休みは2日以上あります) ...

August 7, 2025 · 9 min
GoユーザーがHaskell/OCamlのライブラリ配布で面食らった話

GoユーザーがHaskell/OCamlのライブラリ配布で面食らった話

前書き 本記事画像には、Gopherを用いています。オリジナルのThe Go gopher(Gopherくん)は、Renée Frenchによってデザインされ、CC BY 4.0ライセンスが適用されています。 ...

June 28, 2025 · 9 min
O'Reilly Learning PlatformをAudify(耳)で学習する

O'Reilly Learning PlatformをAudify(耳)で学習する

 前書き:O’Reilly Learning Platformは高め タイトルが全てなのですが、どのような経緯でAudifyを使い始めたかを記録として残します。 ...

May 25, 2025 · 4 min
GitHub Personal Access Tokenをコミットする人がいた話、類似例、漏洩対策ツール【GitHub Secret scanning、gitleaks、git-secrets、gitguardian】

GitHub Personal Access Tokenをコミットする人がいた話、類似例、漏洩対策ツール【GitHub Secret scanning、gitleaks、git-secrets、gitguardian】

 前書き:セキュリティのお勉強中 本記事は、ユーザー2376名のGitHub リポジトリ8017件を調べたら、GitHub Personal Access Token 16件(全て失効済み)が見つかったという話です。悪用されたら困るので、トークン探しに使ったコードは公開しません。 ...

April 27, 2025 · 5 min
【機能強化】RDBMS/CSV/TSV/LTSVクライアントであるsqluvをhttps/s3/圧縮フォーマットに対応させ、カラースキームを追加

【機能強化】RDBMS/CSV/TSV/LTSVクライアントであるsqluvをhttps/s3/圧縮フォーマットに対応させ、カラースキームを追加

前書き:大幅に機能追加 nao1215/sqluvは、2週間前に「【Go】sqluvコマンド:DBMS用のTUI + CSV/TSV/LTSVにSQLを実行可能【開発背景や使い方、生成AIの活用】」に記事で紹介しました。この記事に対する反応がそこそこあったので、「これはチャンスだ」と考えて、大幅に機能追加/バグ修正をしました。 ...

March 22, 2025 · 6 min
【稼ぐ力が上がらない】ソフトエンジニア向けの副業は労働時間が長く、OSS開発はリターンが少ない話

【稼ぐ力が上がらない】ソフトエンジニア向けの副業は労働時間が長く、OSS開発はリターンが少ない話

前書き:リアル人生ゲームに対する結論のないポエム まず前提を書くと、そこまでお金に困っていない。 しかし、私の脳内は以下のように漠然とパニパニしていた。 私は一馬力家庭の単一障害点。34歳。これから脳が衰えてパフォーマンスがでなくなる。もはや政治も信用できない。この状況で子供増やすのか?何にせよ、稼げるうちに稼ぎたい。凄腕のエンジニアは、自分の1.5倍ぐらい稼いでる。周囲の人は副業してるし、自分もすべきではないか。遊ぶお金も欲しい(自作PCを組みたい)。 ...

March 22, 2025 · 5 min
qhqで管理しているリポジトリをVS Codeで開くシェル関数

qhqで管理しているリポジトリをVS Codeで開くシェル関数

前書き 複数のリポジトリを用いて開発している人は、x-motemen/ghqでリポジトリを管理するケースが多いでしょう。本記事では、ターミナルからghqで管理しているリポジトリをVS Codeで開く方法を紹介します。 ツールインストール x-motemen/ghq および peco/peco を利用します。以下はgoコマンドを利用したインストール方法です。他のインストール方法を利用する場合は、公式サイトを確認してください。 ...

March 17, 2025 · 2 min
【Go】sqluvコマンド:DBMS用のTUI + CSV/TSV/LTSVにSQLを実行可能【開発背景や使い方、生成AIの活用】

【Go】sqluvコマンド:DBMS用のTUI + CSV/TSV/LTSVにSQLを実行可能【開発背景や使い方、生成AIの活用】

sqluvとは nao1215/sqluv は、DBMS(例:MySQLやPostgreSQL)クライアントの一種であり、Text User Interfaceを提供します。 sqluvは、ローカルのCSV/TSV/LTSVファイルをインポートし、それらのファイルに対してSQLを実行する機能も持ちます。この機能は、私が以前開発したnao1215/sqlyコマンドから移植しています。 ...

March 8, 2025 · 6 min
【Golang】fe3dback/go-arch-lintでアーキテクチャの破壊を防ぐ

【Golang】fe3dback/go-arch-lintでアーキテクチャの破壊を防ぐ

前書き:アーキテクチャは容易に壊される アーキテクチャリンターであるfe3dback/go-arch-lintをnao1215/sqlyに導入したので、使用方法のメモを記事として残します。結論としては、初期設定が面倒ですが、期待通りの効果が得られました。なお、既存コードがカオスなアーキテクチャの場合、go-arch-lintを採用できないと思われます。 まず、アーキテクチャをリンターでチェックする発想に至った理由から、説明します。以前、ペアプロ中にドライバ側(実装する人)がアーキテクチャルールに反しているのを偶然目撃しました。違反内容は、「外部サービス操作用パッケージ内でのみ使用できる構造体をユースケースレイヤーから呼び出した」というものです。構造体の定義場所が悪いと思いつつも、ルール違反してしまう理由はアーキテクチャを理解していないからだと考え、対策が必要と考えました(ちなみに、ドライバの方に「その使い方、ダメですよ」と声をかけたら、「そうなんですか?」と返答がありました) ...

February 13, 2025 · 7 min
【退職エントリ代わり】バケットリスト(死ぬまでにやりたいこと)を書き出し、目標達成に向けて動き出した話

【退職エントリ代わり】バケットリスト(死ぬまでにやりたいこと)を書き出し、目標達成に向けて動き出した話

前書き:今回は詳細な退職エントリを書きません 2025年2月28日付でフラー株式会社を退職します。 前職の退社エントリでは、詳細な情報を記録として残しました。しかし、今回は完全に個人都合の退職であるため、詳細情報を残しません。在籍した3年間が楽しかったのは、間違いありません。狭い業界なので再会できると考え、意図的に個別の挨拶を避けました。フラーの皆さん、また周年懇親会でお会いしましょう。 最終出社日に、花束、色紙、中華ゲーム機のMiyoo mini plusを貰いました。私は人間ができていないので、「花束持って電車乗るのかー」と軽口を叩いてしまいました。何故、素直にありがとうと言えないのか。この場を借りて、感謝申し上げます。帰宅したら、息子が「おはな、だいすきなの」と抱きしめていました。 ...

February 8, 2025 · 7 min
【何をどこに書く?】Pull Requestマージ速度を上げるためにドキュメンテーションコメントを書く

【何をどこに書く?】Pull Requestマージ速度を上げるためにドキュメンテーションコメントを書く

前書き:ドキュメンテーションコメントの書き方が分からん 本記事は、「【GitHub Actions】 github/issue-metrics でPRマージにかかる時間を分析」に関連する記事です。2024年は、Pull Request(以降PR)をマージするまでにかかる時間を如何に短縮するかに、課題感がありました。 ...

January 26, 2025 · 10 min
【GitHub Copilot】「もっとAIを使った方が良いですよ」とアドバイスする時代になった

【GitHub Copilot】「もっとAIを使った方が良いですよ」とアドバイスする時代になった

前書き:AIが当たり前の時代に OpenAIが2022年11月にChatGPTをリリースしてから、AIを利用した様々なツールが登場しました。AWS Summitに行けば、Amazon Bedrockを用いて業務生産を向上させた事例がメイントピックでした。直近の技術系の話題(例:ブロックチェーン、web3.0)と比較すると、AIの普及速度が早く感じました。 ...

January 25, 2025 · 6 min
【どうやって見積もりしてますか?】プロジェクト工数を見積もるときの私なりのやり方【ボトムアップ見積り】

【どうやって見積もりしてますか?】プロジェクト工数を見積もるときの私なりのやり方【ボトムアップ見積り】

前書き:超概算見積もり?KKD法でいいですか? 私は、立場上、プロジェクトの工数を見積もることが多いです。 しかし、自分が担当していない領域(例:iOSやAndroid)の見積もりは流石にできません。そこで、他メンバに作業を依頼します。そのタイミングで、次のような質問を受けることがあります。 ...

January 11, 2025 · 7 min
【GitHub Actions】 github/issue-metrics でPRマージにかかる時間を分析

【GitHub Actions】 github/issue-metrics でPRマージにかかる時間を分析

前書き:PRマージに時間がかかっていた 2024年は、私のPull Request(PR)がなかなかマージできない課題がありました。 このように書くと「あなたが書いたPRのサイズが大きかったり、色々と他者に配慮できていないだけでは?」と考える人もいらっしゃるかもしれません。その可能性は当然あります。 ...

December 31, 2024 · 5 min
【Golang】Value Objectを生成するvogenライブラリをお試しで作った話

【Golang】Value Objectを生成するvogenライブラリをお試しで作った話

前書き:GolangでValue Objectを作りづらい 2025年の抱負で「ブログのアウトプットを増やす(リンク先の末尾を参照)」と宣言したので、早速アウトプットします。 今回取り扱うValue Objectとは、主に以下のような特徴を持ちます(本記事の本題と関係ない要素は意図的に省略しています) ...

December 28, 2024 · 6 min
2024年の振り返り & 2025年の抱負

2024年の振り返り &amp; 2025年の抱負

前書き 2023年に引き続き、2024年の振り返りと来年の抱負をまとめます。 2024年は元旦に能登半島地震があり、息子を抱えながら坂を駆け上るところからスタートでした。新潟は、狭い範囲でも場所によって被害状況が異なり、私が当時住んでいた地区はそれなりに被害がありました。地震が発生した直後、まずはTVが倒れないように押さえていました。目の前で本棚が二つ倒れ(本棚が壁に穴を開け)、食器が盛大な音を立てながら一斉に割れたのを見て、「あっ、人生で一番大きい地震だ」と察しました。玄関を出たら、温水器タンクが倒れ、目の前の道路は割れ、水道管が破裂した影響で道路の一部が水浸しになっていました。2011年の津波が脳裏をよぎりました。最終的には無事でした。住まいの周辺は液状化や地盤沈下が見られ、電柱の押しボタンが足元まで沈んでました。断水が1週間程度続いたため、実家に避難していました。 ...

December 27, 2024 · 19 min
【寄稿】Software Design 2024年12月号 第1特集 第4章 落し穴に落ちないシェルスクリプト開発のススメ

【寄稿】Software Design 2024年12月号 第1特集 第4章 落し穴に落ちないシェルスクリプト開発のススメ

祝!Software Design 3回目の寄稿 技術評論社のSoftware Design 2024年12月号 第一特集に寄稿させていただきました。3回目です。びっくり!未読の方は、是非ご一読ください。 過去2回に引き続き、内容はシェルスクリプトに関する記事です。2022年1月号はPythonに関して説明していますが、シェルスクリプトと比較した記事になっています。過去の寄稿に関する感想は、別記事でまとめてあります。 ...

December 7, 2024 · 7 min
実装ではなく、Pull Requestレビューから経験値を得るようになった話

実装ではなく、Pull Requestレビューから経験値を得るようになった話

パワーワード:経験値泥棒 君は分かるだろうか。 「経験値泥棒」という単語に衝撃を受けたオッサンの気持ちが。 2024年時点で、私は34歳です。約10年、エンジニアとして働いてきました。 ...

December 7, 2024 · 7 min
【Golang】AWS Rainbowプロジェクト始めました - インタラクティブにS3操作するs3hubコマンド

【Golang】AWS Rainbowプロジェクト始めました - インタラクティブにS3操作するs3hubコマンド

前書き 2023年に「2024年のOSS活動は、AWSユーティリティツールに絞ること」と目標を立て、AWS関連のOSSをまとめるRainbowプロジェクト(nao1215/rainbow)を作り始めました。早いもので2024年も1ヶ月経ったので、何か作ってないと進捗上マズイですよね!一つ作りましたよ!(後述) Rainbowは、私の好きなRitchie Blackmore’s Rainbowから拝借しました。複数のツールやライブラリを集約する予定なので、虹というネーミングは無難なところだと思ってます。 ...

February 5, 2024 · 5 min
33歳児(1990年生)が愛聴しているアルバム(その1)

33歳児(1990年生)が愛聴しているアルバム(その1)

前書き 私は昔、ネットに書かれたアルバム批評を読むのが好きだった。書き手の思い出と一緒に綴られたアルバム評が好きだった。「最近見かけなくなったな、自分で書くか」と寝る前にふと思ったので、眠くなるまで書き殴ろうと思う。 ...

January 12, 2024 · 10 min
2023年の振り返り & 2024年の抱負

2023年の振り返り & 2024年の抱負

前書き:サクッと振り返って、来年も良い年に! 2022年に引き続き、2023年の振り返りと来年の抱負をまとめます。 OGP画像は、両親と一緒に行った弥彦菊祭りで「菊より珍しいな!」と思っておもむろに撮影した日本酒です。画像右上にある「景虎」は息子に名付ける予定だった名前の一つで、字面が強すぎるから見送りました。「虎雪」も候補でしたが同じ理由で却下。 ...

December 27, 2023 · 12 min
【Golang】hottest - ユニットテストのエラーメッセージを抽出するCLI/GitHub Actionsを作った話

【Golang】hottest - ユニットテストのエラーメッセージを抽出するCLI/GitHub Actionsを作った話

前書き 本記事は、フラー株式会社 Advent Calender 2023 の4日目の記事です。3日目は、@ujikawa1026さん の「マネージャーはなぜ忙しいのか。3年間やって少し分かってきたこと」です。 本記事の主題:hottestの紹介/宣伝 本記事では、2023年に私が開発したOSSの中で出来が良い部類のnao1215/hottest を紹介します。hottestは、E2Eテスティングフレームワークであるgo-spectest/spectestの開発中に生まれたサイドプロジェクトです。 ...

December 3, 2023 · 8 min
GitHub Actionsが全成功かつパッチ/マイナーアップデートの場合は、Dependabotが作成したPRを自動マージする設定

GitHub Actionsが全成功かつパッチ/マイナーアップデートの場合は、Dependabotが作成したPRを自動マージする設定

前書き 今どきは、zero dependency(依存なし)で開発を進めるよりも、便利なOSS(ライブラリ)を利用してサクッと開発する方が多いのではないでしょうか。他の人が開発したライブラリは日々改良されていくので、ライブラリ更新をサボっていると「自分のOSSが知らない間に動かなくなってしまった!」という状況になるかもしれません。 ...

October 11, 2023 · 5 min
DependabotでGitHub ActionsのActionを最新に保つ方法

DependabotでGitHub ActionsのActionを最新に保つ方法

前書き:絶滅へ向かうJenkinsオジサン 結論ですが、GitHub公式ドキュメント「Dependabot でアクションを最新に保つ」を読めば、GitHub ActionsのActionを最新に保つ方法が分かります。ちなみに私は、現職のテックリードから教えていただいて「なにこれ便利だ」と思った記憶があります。 ...

September 30, 2023 · 3 min
GitHub ActionsでBSD(FreeBSD、OpenBSD、NetBSD、Dragonfly BSD)のユニットテスト環境を構築する方法

GitHub ActionsでBSD(FreeBSD、OpenBSD、NetBSD、Dragonfly BSD)のユニットテスト環境を構築する方法

前書き:BSDはクロスプラットフォーム対応の鬼門 私は、GolangでOSSを開発することが多く、Golangは様々なOS向けの実行バイナリを簡単に作成できる特徴があります。この特徴を活かして、「クロスプラットフォーム対応しよう!」と考えるのは自然なことです。 ...

September 16, 2023 · 5 min
【Docker】DynamoDB localをローカル起動する方法【管理画面付き】

【Docker】DynamoDB localをローカル起動する方法【管理画面付き】

前書き:DynamoDB、はじめまして 本記事では、DynamoDBをローカルで起動する方法を説明します。DynamoDBは、AWSが提供するNoSQLデータベースです。サーバーレスのKey Valueストアであり、フルマネージドサービスです。 検証環境 本記事は、Ubuntu環境で検証しています。Docker Composeを使用するため、別途インストールが必要です。 ...

September 10, 2023 · 3 min
【golang】io.Readerを使いまわしてContentType判定、S3アップロードしたらハマった話

【golang】io.Readerを使いまわしてContentType判定、S3アップロードしたらハマった話

前書き:同じハマりを繰り返す Single Page Application(SPA)をAmazon S3にアップロードする機能を持つspareコマンドを開発しているとき、io.Readerの使い方を間違えて少しハマってしまいました。ハマりの原因はio.Readerで読み出すデータが欠損していたことであり、欠損の原因はio.Readerを使いまわしたことです。 このハマり方は2回目なので、備忘録として記事にします。 ...

September 10, 2023 · 6 min
Golangを用いたサーバーサイド:技術選定と現状の小さな課題

Golangを用いたサーバーサイド:技術選定と現状の小さな課題

前書き 本記事では、Golangを用いてRESTful APIを開発する上で私が使用している技術(OSS)を述べた後、より良い開発体験を得るための改善したい点(解消したい課題)について述べます。 ...

May 19, 2023 · 11 min
AndroidプラットフォームアーキテクチャでJavaが採用されている理由は、エンジニア人口が多いから

AndroidプラットフォームアーキテクチャでJavaが採用されている理由は、エンジニア人口が多いから

前書き:何故AndroidはC/C++がメインではないのか AndroidでJavaを採用した理由が気になって夜しか眠れなかったので、調べました。 まず、前提をおさらいします。Androidプラットフォームは、ハードウェアを制御するためにLinux Kernelを採用しています。その上にハードウェアを抽象化するためのHALレイヤーがあり、C/C++とJavaランタイム(Android Runtime)がHALの上にあります。最近では、NativeライブラリにRustも採用され始めたと聞いています。 ...

April 17, 2023 · 6 min
【マネージャー視点】エンジニアとして貢献できないもどかしさとメンバを不快にさせる恐怖

【マネージャー視点】エンジニアとして貢献できないもどかしさとメンバを不快にさせる恐怖

前書き:マネージャーと称されるお仕事、やってます 本記事はポエムです。答えが出ていない状態で、文章を書き始めています。息子を寝かしつけて、勉強する元気がなかったので思考の整理として記事を書いています。 ...

April 15, 2023 · 6 min
32歳の子持ちエンジニアがキャリアパスに悩んだ話(結論:フルスタックを目指します)

32歳の子持ちエンジニアがキャリアパスに悩んだ話(結論:フルスタックを目指します)

前書き:新築一戸建ての検討、迫りくる恐怖 マイホームの購入の検討を始めました!検討が加速しているだけですが! 家の購入を検討し始めた理由は、息子が1歳になった時期に「深夜はあなたが思うより音が響く。眠れない」旨の苦情の手紙を受け取ったことです。手紙を呼んだ時は精神的なダメージが大きく、かつ「親でさえ泣き声に参っているから他人なら尚更」と反省しました。 ...

April 2, 2023 · 7 min
【Android Studio】JSON To Kotlin ClassプラグインでAPIレスポンス用モデルの作成を楽に

【Android Studio】JSON To Kotlin ClassプラグインでAPIレスポンス用モデルの作成を楽に

前書き Androidアプリでは、RESTful APIの実行結果(≒ jsonデータ)に対応するdata classを作成し、kotlinx.serializationでjsonをdata classにデシリアライズする処理があります。 ...

April 1, 2023 · 4 min
2022年の振り返り & 2023年の抱負

2022年の振り返り & 2023年の抱負

前書き:サクッと振り返って、来年も良い年に! 会社の自席から見える景色と共にお届けします。 なお、弊社はフリーアドレスなので、座席は自由です。ここはこたつスペースであり、高頻度でサーバーサイド民(軟体生物)がぐでっとした感じで生息しています。 ...

December 24, 2022 · 7 min
【Golang】CSV/TSV/LTSV/JSONにSQLを実行するsqlyコマンドを作った話【開発背景/設計/使い方】

【Golang】CSV/TSV/LTSV/JSONにSQLを実行するsqlyコマンドを作った話【開発背景/設計/使い方】

前書き 本記事は、フラー株式会社 Advent Calendar 2022の5日目の記事です。4日目の記事は、「フラーを卒業していった優秀な学生アルバイトに向けたポエム(@furusax)」です。ポエムと言いつつ、技術的なお話でしたね。 本記事では、CSV/TSV/LTSV/JSONに対してSQLを実行する"sqly"コマンド(自作ツール)について解説します。sqlyの基本機能を簡単に説明した後、開発した背景、設計、使用しているパッケージについて説明し、利用例と今後の展望を説明します。 ...

December 2, 2022 · 11 min
【Golang】Windows対応でハマった箇所【ファイルパス、一時ファイル削除エラー】

【Golang】Windows対応でハマった箇所【ファイルパス、一時ファイル削除エラー】

 前書き:Windows君さぁ…… 私は、GolangでCLIツールをよく作ります。CLIツールの品質を担保するために、GitHub Actionsでユニットテスト(Linux、Mac、Windows向け)を継続的に実施しています。 ...

November 27, 2022 · 3 min
【golang】sqlcコマンドで「SQLクエリから型安全なGoコードを生成」し、生産性を上げたい

【golang】sqlcコマンドで「SQLクエリから型安全なGoコードを生成」し、生産性を上げたい

前書き:sqlcとは 本記事は、kyleconroy/sqlcの基本的な情報を紹介します。 sqlcは、DBスキーマ(DBテーブル定義)、SQLクエリ定義、設定ファイルの3点をインプットとして、型安全なCRUDコード + DBテーブルに対応したモデル(構造体)を自動生成します。ここでのモデルの自動生成には、複数テーブルをJOINしたクエリ用の構造体も含まれます。 ...

June 25, 2022 · 11 min
【入社エントリ】フラー株式会社に入社して約半年経ちました

【入社エントリ】フラー株式会社に入社して約半年経ちました

前書き:人生初の転職。その感想 2022年1月にフラー株式会社へ入社してから、約半年経ちました(実際は5ヶ月と少し)。参加プロジェクトも区切りが付きそうであり、良い節目なので記録を残します。社内の細かいことは書きません。 個人的な日記に近いので、SEO(検索エンジン最適化)を気にせず、文章多めです。 自己紹介と転職の経緯 転職経緯の詳細版は、別記事に書いています。 私は、前職で組み込みエンジニアとしてキャリアを歩んできました。しかし、使う技術が古く、業務内容もマネージメント寄りになってきていました。そのため、「エンジニアとして使えないオッサンになるのではないか(今31歳なのでオッサンなのは否定しない)」と漠然と不安を抱えていました。 ...

June 4, 2022 · 13 min
【勉強期間1ヶ月(60h)】LPIC Level3 303 (Security) 合格体験記【ping-t、黒本使用】

【勉強期間1ヶ月(60h)】LPIC Level3 303 (Security) 合格体験記【ping-t、黒本使用】

資格有効期限切れ 2週間前の滑り込み合格 LPIC有効期限2022年6月3日の約2週間前に、LPIC Level3 303-200(Version 2.0)に合格しました。「転職(組み込みからサーバサイドへのキャリアチェンジ)」「息子の誕生」「Software Designへの記事寄稿」と、生活の変化が多い中でギリギリ合格できて、安心しました。 ...

May 15, 2022 · 4 min
【寄稿】Software Design 2022年6月号 第1特集(第3章 シェルスクリプトの使い方)

【寄稿】Software Design 2022年6月号 第1特集(第3章 シェルスクリプトの使い方)

Software Design誌 2回目の寄稿! 技術評論社のSoftware Design 2022年6月号 第1特集 第3章 「シェルスクリプトの使い方」に寄稿する機会をいただきました!2022年1月号に続いて、2回目の寄稿です。表紙がワンちゃんからネコちゃんに戻っています! ...

May 15, 2022 · 4 min
【Golang】spf13/cobraが提供する入力補完(shell completion)をファイル形式でインストールする方法【bash, zsh, fish】

【Golang】spf13/cobraが提供する入力補完(shell completion)をファイル形式でインストールする方法【bash, zsh, fish】

前書き:spf13/cobraのシェル補完は便利 本記事は、spf13/cobraが提供する「シェル補完(文字列)」をファイルとしてシステムにインストールする例を紹介します。今回の例を実践すると、cobraを用いたCLIコマンドでシェル補完が有効になります。ここでのシェル補完とは、ターミナルでコマンド入力中に[TAB]キーを押すと、自動で単語を補完する機能です。 対象シェルは、bash、zsh、fishです。PowerShellは、私が詳しくないので除外します。 cobraは、Golang用のCLIコマンド作成補助ライブラリです。代表的な機能は、CLIコマンド実行時にオプション/サブコマンドが指定されたかどうかを判定する機能です。cobraを使用した場合、自動的にcompletionサブコマンドが追加され(例:以下に示すposixerコマンドのhelp参照)、このサブコマンドはシェル補完用の文字列を出力します。 ...

April 17, 2022 · 8 min
GitHubで初めてStar 50個以上を獲得した感想と実施した内容【Redditで宣伝】

GitHubで初めてStar 50個以上を獲得した感想と実施した内容【Redditで宣伝】

前書き:人生で初めてGitHub Star 50個超え “go install"したバイナリをアップデートするgupコマンドが、公開から一週間でGitHub Starを50個以上獲得しました!ちょっと嬉しい。最新の仕様は、Zennで説明しています。 ...

February 26, 2022 · 5 min
【Golang】go installで取得した$GOPATH/bin以下のバイナリを一括更新するgupコマンドを試作

【Golang】go installで取得した$GOPATH/bin以下のバイナリを一括更新するgupコマンドを試作

前書き:バイナリの更新が面倒 Golangでは、MacやLinuxのパッケージマネージャ(brew, apt, dnf, snap, etc)を利用せずに、"$ go install"でバイナリをインストールできます。"$ go install"は、開発者がパッケージのスペックファイルを作成せずにバイナリを配布できるメリットがあります。 ...

February 20, 2022 · 6 min
【Golang】goa(ver 1.x)frameworkのlinter(goavl)を試作【go/astを利用】

【Golang】goa(ver 1.x)frameworkのlinter(goavl)を試作【go/astを利用】

前書き:DSLに半日悩み、カッとなって作った goaは、DSLで記述されたデザインをもとに、Web APIホスティングに必要なベース処理(ルーティング、コントローラ、Swaggerなど)を生成するFrameworkです。goaを採用している会社の例は、DMM。goaを使うとコード記述量が減り、APIドキュメントが自動生成される利点があります。 私は、2022年1月からgoaを開発で使用するようになりました。goaは、DSLを覚えるコストが小さくはありません。DSLを書き間違えると、当然goa-designから各種ファイルの生成処理でエラーとなります。 ...

February 11, 2022 · 12 min
【Golang】2022年に開発した自作CLIコマンド/ライブラリに対する所感と宣伝【OSS】

【Golang】2022年に開発した自作CLIコマンド/ライブラリに対する所感と宣伝【OSS】

前書き:Golangでの開発が増えた 最近、Golangで小さいCLIコマンド/ライブラリを書き殴る事が増えました。 その理由としては、環境の変化が大きいです。前職では組み込みエンジニアとして複数言語を使用していましたが、現職ではGolang固定です。Golangを書けば書くほど現職に関係するスキルが上がるので、積極的にGolangを使うようになりました。 ...

February 5, 2022 · 16 min
【Golang】go:embedを用いて格言表示コマンド(subaru)を開発

【Golang】go:embedを用いて格言表示コマンド(subaru)を開発

前書き:go:embedを試したかった Golangでは、go:embedがVersion1.16から組み込まれています。 go:embedの利点は、「バイナリインストール(設定ファイルや関連ファイル含む)がより簡単になる事」でしょうか。go:embedを用いる事によって、バイナリの中に設定ファイルやスクリプトなどを埋め込めます。そのため、バイナリをシステムに置くだけで、インストール作業が完了となります。 ...

February 5, 2022 · 6 min
【解決方法】You don't have write permissions for the /var/lib/gems/2.7.0 directory【Ruby, Linux】

【解決方法】You don't have write permissions for the /var/lib/gems/2.7.0 directory【Ruby, Linux】

前書き:gem installでコケる 原因は単なる権限の問題。Ruby初心者なので自分用にメモします。 まずは、前提情報です。Ubuntu 21.10、Ruby 2.7.4[x86_64-linux-gnu]で、femパッケージ(パッケージ作成ツール)のインストールを試みました。結果は、/var/lib/gems以下のパーミッションエラー。 ...

February 5, 2022 · 4 min
【Golang】プロジェクトテンプレート生成ツール(ubume)を試作【改善案を募集】

【Golang】プロジェクトテンプレート生成ツール(ubume)を試作【改善案を募集】

前書き:プロジェクトを新規で作るのはダルい Golangの勉強中に、「サンプルコードを試すためのプロジェクト」や「検証用プロジェクト」を手動で作るのは、面倒だなと感じてきました。また、どこかのプロジェクトをコピーして流用すると、名称の変更忘れ(誤記、typo)が発生しがちです。 ...

January 11, 2022 · 4 min
【HR/HM】2021年に聴いてハマったアルバム9選+2【プログレ】

【HR/HM】2021年に聴いてハマったアルバム9選+2【プログレ】

前書き:学生時代の曲を振り返る機会が増加 「2020年に聴いてハマったメタルバンド4選」に引き続き、今年は2021年に聴いてハマったアルバムを取り上げようと思います(1年の振り返り)。 31歳という年齢のせいか、最近は学生時代(90年代後半、2000年代前半)の曲が刺さります。GLAY、B’z、Kinki Kids……しかし、なるべく聴かないようにしています。理由は、以下のツイートの通りです。 ...

January 8, 2022 · 11 min
【Vala言語】優れた点、Linuxにおける立ち位置、物足りなさとその対策(coreライブラリ開発)

【Vala言語】優れた点、Linuxにおける立ち位置、物足りなさとその対策(coreライブラリ開発)

マイナーなプログラミング言語:Vala言語とは あなたはVala言語をご存知でしょうか? Vala言語は、プログラミング言語ランキングでは圏外(50位以下)であり、クロスプラットホーム言語にも関わらずLinux環境のGUIプログラミングでしか用いられる機会がありません。GUIに強みを持つ言語であるため、Linuxでシステムプログラミング開発する人でも、Vala言語の存在を知らない可能性があります。THE マイナー言語。 ...

January 5, 2022 · 7 min
Software Design 2022年1月号 第2特集(第1章、第2章)に寄稿【キッカケ、感想、書き足りない内容】

Software Design 2022年1月号 第2特集(第1章、第2章)に寄稿【キッカケ、感想、書き足りない内容】

前書き:人生初!ソフト雑誌への寄稿 技術評論社のSoftware Design 2022年1月号 第2特集(第1章、第2章)に寄稿させていただきました。 間違いなく、2021年で最も嬉しい出来事です!(エンジニア人生の中でトップクラスの嬉しさ) ...

December 17, 2021 · 7 min
【golang】errorsパッケージ New(), Unwrap(), Is(), As()の使い方と注意点

【golang】errorsパッケージ New(), Unwrap(), Is(), As()の使い方と注意点

前書き:君、err != nilしかできないの? Golangでは、errorがnilでなければ上位関数にそのままerrorを戻す処理が頻繁にあります。 f, err := os.Create(path) if err != nil { return err } 「エラーが発生した事実」を上位関数へ伝えるだけであれば、上記コードの対応で問題ありません。しかし、エラーの種類によって異なる対応をしたい場合は、nilチェックだけでは物足りません。 ...

December 13, 2021 · 12 min
「Log4j2の脆弱性から垣間見えたOSS開発の厳しさ」と「OSS開発者に投げ銭する文化(未来)」について

「Log4j2の脆弱性から垣間見えたOSS開発の厳しさ」と「OSS開発者に投げ銭する文化(未来)」について

前書き:災害レベルの脆弱性 本記事は、紛うことなきポエム記事です。Log4j2の脆弱性問題を追っている間に「OSS開発の醜い部分」を目の当たりにしたので、本記事では「せめてOSS開発者が金銭的もしくは他の手段で報われればいいのに」と主張します。 ...

December 12, 2021 · 6 min
MimixBox(BusyBoxインスパイア)の概要、開発時の気づき、PR募集について【Golang学習】

MimixBox(BusyBoxインスパイア)の概要、開発時の気づき、PR募集について【Golang学習】

MimixBoxはGolang学習用アプリとして開始 Golang製のMimixBoxは、BusyBox(多数のUnixコマンドをシングルバイナリに詰め込んだCLIアプリ)と共通点を持ちつつ、独自の目標を持つCLIアプリとして開発しています。 開発のキッカケは、Golangを学習するためです。前職を退職して、新しい会社では開発経験のないGolangがメイン言語となりました。即戦力となれるよう、私は勉強のためにCLIツールや独自シェルを作り始めましたが、「全部混ぜて開発すればプロジェクト数が増えず、管理が楽では?それなら、BusyBoxを真似するか」という考えに至りました。 ここまで来れば「MimixBox - Mimic BusyBox on Linux(Linux上でBusyBoxを模倣する)」という名称を考えつくのは、一瞬でした。ちなみに、同様のプロジェクトにはtoyboxとgoboxがあります(皆、考える事は大体一緒)。 ...

November 28, 2021 · 9 min
【OS/Linux系多め】組み込みエンジニア時代(7年間)に役立った良書9選

【OS/Linux系多め】組み込みエンジニア時代(7年間)に役立った良書9選

前書き:技術レイヤーが変わる前に振り返り 2021年12月に新卒入社した会社を退職しました。 退職前の会社では、組み込みエンジニアとして働いていましたが、次の職場ではバックエンドエンジニアとして働きます。組み込みエンジニアは、ハード(機密情報)と近い関係からか、あまり情報発信しない印象があります。情報発信しようにも、「会社独自技術のネタしか無い」という業界な気がしています。 ...

November 23, 2021 · 10 min
Golangで無名パイプからデータを受け取る方法【term.IsTerminalによる判定】

Golangで無名パイプからデータを受け取る方法【term.IsTerminalによる判定】

前書き:os.Args[1]にはパイプのデータがない 無名パイプは、Terminal上で用いる"|“の事です。例えば、以下の例ではechoコマンドがパイプで"PIPE test"を渡し、受け取り側のcatコマンドがパイプから受け取ったデータを標準出力しています。 ...

November 23, 2021 · 3 min