私は組み込みからバックエンドにキャリアチェンジしており、Go、AWSをメインに使っています。現在は、プリカアプリ不正対策、機械学習、React Nativeをメインに勉強しています。
私は組み込みからバックエンドにキャリアチェンジしており、Go、AWSをメインに使っています。現在は、プリカアプリ不正対策、機械学習、React Nativeをメインに勉強しています。

Fear of Job Displacement by LLMs
Introduction In 2026, LLM (Large Language Model) can develop almost anything I can imagine. This is terrifying. For example, Claude Code developed web scraping tool and apk(android package)/ipa(iOS package) parser in less than half a day. It used to take me over two weeks that develop same tools. Coding skills are no longer as important as they used to be. This is good news for anyone who dreams of building something big. Aspiring entrepreneurs can now build PoC software faster than ever. However, ordinary software engineers like me may lose their jobs to LLMs. We need expertise in fields beyond coding to survive. ...

【Golang】クレカ番号などを検出・マスクするsensitiveライブラリを作った話
前書き sensitive テキストを見つけ、必要であればマスクする nao1215/sensitive ライブラリ(Golang)を作ったので、軽く紹介します。Fintech に所属していれば、誰でも一度は作ろうと考えるタイプのライブラリですね。なお、暇つぶしで作っただけなので、現職の業務で利用予定はありません。 ...

2025年の振り返り & 2026年の抱負
前書き 2024年に引き続き、2025年の振り返りと来年の抱負をまとめます。 トップ画像は、25年以上ぶりに訪れたサントピアワールドです。サントピアワールドは1976年に開園しており、新潟県民にとって馴染み深い場所でしょう(上越住まいにとっては、馴染みないかもしれない)。入口付近に辿り着いた時、幼少期の記憶が蘇りました。祖母と車で訪れて、途中のコンビニで買ったチョコレートが車のダッシュボードで溶けたことを不意に思い出しました。最近、息子と一緒にいると30年ぐらい前の色褪せた記憶が蘇ります。 サントピアワールドは、総括すれば面白かったです。全ての乗り物が待ち時間ゼロでした。売店にトミカ売り場があり、「こんなところにトラップが!」と思いました。案の定、息子は吸い寄せられてました。息子は、何度も弁慶号に乗っていて、スタッフさんが「また乗るの?」と苦笑していました。スピードの早いワイルドジェットに息子を乗せてみたら、無反応でした。しかし、2回目は猛烈に嫌がってました。怖かったのでしょう。スカイジェットに乗った時は、私がデブすぎて車体が大幅に傾き、「これ、落ちるのでは?」と心臓がバクバクでした。 ...

【Golang】CSV、TSV、LTSV、Parquet、Excel に前処理とバリデーションを行う nao1215/fileprep を作った話
nao1215/fileprep(前処理ライブラリ) を開発した理由 理由は、データが汚れているからです。 私は、過去に nao1215/csv ライブラリ(パブリックアーカイブ済み) を開発していました。nao1215/csv は、struct tag でバリデーションルールを指定すると、CSV ファイルの読込み後に「どの行のどのカラムが不正値なのか」を教えてくれます。 ...

4年間続けたOSS開発を振り返る
OSS 開発を始めてから4年経った 本記事は、私の日記に近いポエムです。5年後に見返すために書いてます。なお、OSS 開発を初めて5年経過しているつもりで記事を書き始めたら、計算したところ4年でした。 ...

【Golang】.onion(Torサイト)の匿名性チェックを行う nao1215/onionlint を作った話
onionlint とは nao1215/onionlint は、.onion(Torサイト)が匿名性を担保できないような実装になっていないかをチェックするツールです。普通の開発者が onionlint のお世話になることはないでしょう。onionlint には、34個のルールが搭載されており、以下の3カテゴリで構成されています。 ...

【Golang】tor client/server を実装するための nao1215/tornago ライブラリを作った話
悪用厳禁 本記事で紹介する nao1215/tornago は、Tor(The Onion Router)に関するライブラリです。Tor は、通信を暗号化して IP アドレスを隠蔽できるため、悪用されるケースが多々あります。 ...

【Golang】バリデーション付き CSV 読み込み機能と DataFrame 機能を持つパッケージを作った話
前書き:バリデーション付きCSV読み込み機能は2024年に開発 本記事で取り上げるのは、2024年に開発した nao1215/csv です。本来の予定では、新規に開発した機能の紹介だけ書く予定でした。しかし、本ブログで一度も nao1215/csv の説明をしていなかったようなので、まずは基本機能を説明した後に新機能(DataFrame)について紹介します。 ...

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

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

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

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

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

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

GoユーザーがHaskell/OCamlのライブラリ配布で面食らった話
前書き 本記事画像には、Gopherを用いています。オリジナルのThe Go gopher(Gopherくん)は、Renée Frenchによってデザインされ、CC BY 4.0ライセンスが適用されています。 ...

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

GitHub Personal Access Tokenをコミットする人がいた話、類似例、漏洩対策ツール【GitHub Secret scanning、gitleaks、git-secrets、gitguardian】
前書き:セキュリティのお勉強中 本記事は、ユーザー2376名のGitHub リポジトリ8017件を調べたら、GitHub Personal Access Token 16件(全て失効済み)が見つかったという話です。悪用されたら困るので、トークン探しに使ったコードは公開しません。 ...

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

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

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

【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コマンドから移植しています。 ...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

GitHub Actionsが全成功かつパッチ/マイナーアップデートの場合は、Dependabotが作成したPRを自動マージする設定
前書き 今どきは、zero dependency(依存なし)で開発を進めるよりも、便利なOSS(ライブラリ)を利用してサクッと開発する方が多いのではないでしょうか。他の人が開発したライブラリは日々改良されていくので、ライブラリ更新をサボっていると「自分のOSSが知らない間に動かなくなってしまった!」という状況になるかもしれません。 ...

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

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

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

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

Golangを用いたサーバーサイド:技術選定と現状の小さな課題
前書き 本記事では、Golangを用いてRESTful APIを開発する上で私が使用している技術(OSS)を述べた後、より良い開発体験を得るための改善したい点(解消したい課題)について述べます。 ...

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

【マネージャー視点】エンジニアとして貢献できないもどかしさとメンバを不快にさせる恐怖
前書き:マネージャーと称されるお仕事、やってます 本記事はポエムです。答えが出ていない状態で、文章を書き始めています。息子を寝かしつけて、勉強する元気がなかったので思考の整理として記事を書いています。 ...

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

【Android Studio】JSON To Kotlin ClassプラグインでAPIレスポンス用モデルの作成を楽に
前書き Androidアプリでは、RESTful APIの実行結果(≒ jsonデータ)に対応するdata classを作成し、kotlinx.serializationでjsonをdata classにデシリアライズする処理があります。 ...

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

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

【Golang】Windows対応でハマった箇所【ファイルパス、一時ファイル削除エラー】
前書き:Windows君さぁ…… 私は、GolangでCLIツールをよく作ります。CLIツールの品質を担保するために、GitHub Actionsでユニットテスト(Linux、Mac、Windows向け)を継続的に実施しています。 ...

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

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

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

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

【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参照)、このサブコマンドはシェル補完用の文字列を出力します。 ...

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

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

【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から各種ファイルの生成処理でエラーとなります。 ...

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

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

【解決方法】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以下のパーミッションエラー。 ...

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