サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
今年の「#文学」
songmu.jp
最近、Webエンジニア界隈で、共通項を感じる印象的な出来事があった。具体的には以下の2件。 ゆーすけべーがHonoを作ったこと Hono - ゆーすけべー日記 おぎじゅんさんが職業プログラマーに戻ってきた(きていた)こと 転職してソフトウェアエンジニアをやっている 猫廼舎を閉店しました 共通項はそれぞれ長めのブランクがありながら、ソフトウェアエンジニアリングの世界に戻ってきて一線級以上の活躍をしているということだ。二人とも僕と同世代かそれ以上の年齢でもある。これは勇気と希望をもらえることだ。 もちろん彼らの能力の高さゆえに第一線に戻ってこられたのかもしれない。ただ、どちらにせよ、別のことに興味があれば、職業エンジニアを離れて、フォーカスする期間があっても良いと言うことだ。能力不足ならなおさら中途半端になるよりフォーカスしたほうが良いとも言える。 それに多分戻ってこられる。ゆーすけべーの様に
当ブログのRSSを全件配信するようにした。Perl製OSSの拙作ブログエンジンであるところのRiji側に手を入れた。ファイルサイズが大きくなるし、RSS分割を実装するのもめんどいので単純に直近30件配信にとどめていたが、今日日普通に1ファイルで全件配信して良いだろうと思い変更した。時代の流れで富豪的アプローチが許容される(?)よくある話。 ちなみに、全件配信しようと思ったきっかけは、ポッドキャスト「趣味でOSSをやっている者だ」を始めるにあたって、RebuildのRSSを観察したところ、全件配信しているのに気付いたので、じゃあいいか、となったというのがありました。 その昔の以下のnaoyaさんの19年前の記事で、RSS内に単独エントリの全文配信の是非について書かれているが、今や全件全文配信である。 RSSの全文配信をはじめました Riji v1.1.1をリリースした https://git
https://crates.io/crates/r2sync コマンドラインツールであり以下でインストールできる。 $ brew install Songmu/tap/r2sync # or $ cargo install r2sync これはローカルディレクトリの中身をCloudflare R2に簡易的に同期するごく単純なツールで以下のように使う。 $ r2sync ./dir r2://your-bucket/path リモートに同一ファイルが存在する場合にputをスキップするようになっていて、それが欲しくて作った。ちなみに、--public-domain というオプションを付けると、同一ファイルチェックを公開URL経由で行うようになってAPIアクセスを減らせる。 $ r2sync --public-domain files.example.com ./dir r2://your-b
サイト: https://oss4.fun X: https://x.com/oss4fun ハッシュタグ: #oss4fun GitHub: https://github.com/Songmu/oss4.fun 最近御存知の通り(?)ポッドキャストづいていて、ポッドキャストについて色々調べてサイト構築ツールなどを作っていたが、ツールを作ったらやはり使いたくなってポッドキャストを始めてみることにした。 以前アナウンスした拙作のポッドキャスト生成OSSのPodbardの実例を示す場にもしたかったので、運営リポジトリも公開している。是非参考にしてみてください。一応、同期しているprivateリポジトリもあって、そのあたりの仕組みは別途解説するかも。 更新頻度はあまり考えてないけど、月に数本、できれば毎週、30分程度のエピソードを出したいと思っている。第2回目までは録り終わっていて今週公開予定。
Podbardはpodbard.yamlに設定を記述するが、これをエディタで補完したりヒントを出せたりするようにした。 yaml-language-serverとJSON Schema 普段vimで開発してて、GitHub ActionsのYAMLを触ってるときなどに、エディタが適切にヒントを出してくれるのを便利に感じつつ「多分LSPがうまいことやってくれてるんだろうな」くらいに考えて深く追いかけていなかった。これは、JSON Schemaで実現されていることを、今回podbard.yamlの仕様をJSON Schemaで記述している過程で発見した。 GitHub ActionsのJSON Schemaは https://json.schemastore.org/github-action.jsonやhttps://json.schemastore.org/github-workflow.
https://github.com/Songmu/podbard 結果としてできたものはyattecastとHugoの間の子のようなモノになった。音声ファイルとそれに対応するエピソードファイルをfrontmatter付きのMarkdownで記述する。最終的に静的サイトとしてポッドキャストサイトを生成する。 podbard-starterというテンプレートリポジトリがあるので、ここからリポジトリを作ればすぐにポッドキャストサイトを作成できる。このテンプレートはGitHub Pagesにデプロイするモノだが、Cloudflare Pagesにデプロイする、podbard-cloudflare-starterや、それを応用してプライベートプッドキャストを構築する、podbard-private-podcast-starterというのも用意している。 まだ不十分だがドキュメントも以下に用意してあ
前回の、社内プライベートポッドキャスト実現方法で、ポッドキャストサイトを静的配信しつつBasic認証をかけるというアイデアを書いた。しかし、Basic認証などなかなか使わなくなり、ネイティブでサポートしている静的ホスティングサービスも少ない。今回はCloudflare PagesのFunctions機能でリクエストをラップするミドルウェアを書けば実現できることが分かり、その方式を採用することにした。多少実装必要になるのと、認証周りを自前で書くのはあまりやりたくはないが、廉価に比較的省力で実現できるので受け入れる。 ネット上にいくつかサンプルは見つかるが、今回実装するにあたっては以下の点を留意した。 コード内に認証情報を載せない 複数ユーザーのIDとパスワードを管理できるようにする パスワードは定数時間比較してタイミング攻撃を防ぐ これらを以下のように解決することとした。 認証情報は環境変数
所属している、ヘンリー社には、社内ラジオコンテンツがあり、Notion上に音声ファイルを置く形で実現されている。これを、ポッドキャスト化してポッドキャストクライアントで聞きたいというのが動機。ちゃんとしたオープンな規格としてのポッドキャストにしたい。 もちろん、公開はせずプライベートなものにしたい。ただ、ポッドキャストはオープンコンテンツ前提の規格になっているため完全な実現は難しい。認証のかかっていないRSSフィード及び、そのRSSフィードに埋め込まれたMP3等の音声ファイルにも認証がかかっていないことが前提となるからだ。 やるからには、あまりコストを掛けずに静的配信をベースにしたい。お手軽なプライベートポッドキャストサービスもあまりないようだ。 基本方針 それに対する現実的な妥当解を考え、その実現のために、まずポッドキャストサイトを生成するpodbardというOSSを作った。そして、それ
MacでオンラインMTG中に電球を点ける仕組みを構築した pic.twitter.com/qhpXTbv4cY — songmu (@songmu) August 15, 2024 夏休みに入って、子供たちが仕事部屋に乱入してくることが増えた。何番煎じかわからないが、オンラインミーティングが始まったら電気を点ける仕組みを作って投入した。カメラがついている時にミーティング中だという判定をしてライトを点灯する。概要は以下。 カメラ(及びマイク)のon/offを検知する OverSight を使う 検知をトリガーにプログラムを実行 mtglight というのを作った プログラムからIoTライトを操作する Yeelight の製品を使った 一応多重実行を防ぐ排他制御をしこむ setlock を使う 私以外にこの仕組みを使う人がいるとは思わないが、以下の手順で導入できる。 Yeelightを調達して
関連: NFCタグ入りの自己紹介アイコンバッジを自作する song.mu という結構良い短いドメインを確保しているので、これをプロフィールサイト兼、個人用短縮URLサービスにしたいと長らく思っていたので重い腰を上げて作った。 最近オフラインイベントが増えている中で、こういうプロフィールサイトを活用しているケースを見るようになったのがきっかけ。Webエンジニアとしてはこういうの自作したいし、自分のドメインでホストしたいと思っていたのだ。 song.mu がリンクが並んだプロフィールページで、 song.mu/blog でブログに飛び、 song.mu/x でTwitterに飛ぶ、みたいな具合。 技術スタック こういうの作る時は興味がある技術の砂場にしたいので、HonoでSSGしてCloudflare Pagesでホストしている。ローカル開発でのTypeScript実行環境も mise で管理
大吉祥寺.pmの前夜祭「生存者バイアスナイト」で話してきた。 https://junkyard.song.mu/slides/survivor-bias-night/#0 同年代の優秀なエンジニアの方から「自分のキャリアは再現性が無いから他人の参考にならない」という話をよく聞く。果たしてそうだろうか。私はそういう人たちにもっと自分の経験の話をしてもらいたいと常々思っていた。 彼らは「思い込みの結果として上手く行った」「単に運が良かった」「だから普遍的なノウハウにならない」そんなふうに自覚している。だから、そんな普遍的ではないノウハウを偉そうに声高に話したがらないし、ましてや、それを押し付けるような老害的振る舞いになることを恐れているようにも見える。そういう謙虚なスタンスは好ましくも思う。 でも実際は一つ一つの経験には大きな意味がある。普遍的ではないかも知れないが、それでも話してみると、自分
自己紹介グッズを作っていた pic.twitter.com/cFffmWsMYm — songmu (@songmu) July 9, 2024 このバッジにスマホをかざすと、song.mu という自己紹介サイトに飛べるようにした。バッジにはNFCタグが仕込まれている。最近よくあるやつ。 缶バッジだとNFCタグが読み込めない罠 最近は自己紹介グッズとして、pixivFACTORY でアイコン缶バッジを作るのが、lacolaco手法として知られている。私も持っています。 参考: 自分のアイコンの缶バッジを作ると便利 しかし、缶バッジは金属製なのでNFCタグをくっつけても読めません。なので、こういう素人手作り感満載のグッズを作ることにしたのでした。ちなみに、pixivFACTORYはアクリルキーホルダーも作れるのでそれを活用しても良さそうです。 NFCタグシール やったことは簡単で、以下のNF
ロードバイクを新たに一台買った。久しぶりに外でのサイクリングを楽しんでいる。 新車でヤビツサイクリングしてきた。半原越も行きたかったけど、入り口が以前と変わっていて入りそびれてしまった pic.twitter.com/YrjzuzKKtp — songmu (@songmu) April 28, 2024 新車はCannondaleのSuperSix Evo 3べースにホイールをMavicのKSYRIUM SLにアップグレードした。KSYRIUM大好き。 町田のたかだフレンドに10年以上ぶりに顔を出して組んでもらった。ORBEAのORCAが欲しかったのだが、扱いがなかったので勧められたこのバイクにした。信頼できるショップに組んでもらうことが大事。Cannondaleも僕がロードレース見ていた頃のSaecoチームの印象もあるし、このバイクも今どきのバイクにしてはそこまでゴツすぎないのも良かっ
当サイトをFediverseに対応させました。 @[email protected] でMastodonなどでリモートフォローできます。 やったことは、 このブログがFediverseに対応しました というtyageさんのエントリーをそのままなぞっただけです。このエントリーはh-cardのサイトトップへの掲出に関する説明が書き漏れていそうでしたが、それも実施しました。 当サイトは静的サイトであり、付随機能は外部サービスに頼りたいと考えている。例えば、コメント機能はDisqusを使っている。Fediverseに関しても何かそういうサービスがないかと思っていたが、Bridge Fedというサービスがあり、上記のエントリー内で懇切丁寧に解説されていたので導入は比較的簡単で、作業時間は小一時間でできた。大まかな手順は以下。 Bridgy Fed というサービスを利用してサイトをFedivers
このエントリーはバズレシピ Advent Calendar 2023、11日目の記事です。 日本人皆が大好き肉じゃが。メジャーな料理なので、多くのYouTuberがレシピを公開してくれている。ここでは私がよく見ている料理系YouTuberの中から以下の動画を参考にして、最高に美味い肉じゃがの作り方を考察してみたい。 リュウジのバズレシピ | 至高の無水肉じゃが クラシル | 野永喜三夫が教える究極の肉じゃが シズルチャンネル | 最高の肉じゃが まかないチャレンジ | 肉じゃがの極意 くまの限界食堂 | 肉じゃが321 コウケンテツ公式チャンネル | 王道肉じゃが 豚肉か牛肉か、男爵かメークインか まず主役の肉とジャガ。意外と肉は牛肉派が多かった。リュウジさんだけ豚肉。さすがは庶民の味方ですね。まかないチャレンジは分量が多いので、半量くらいにすれば他のレシピと大体目方が揃いそう。 肉 芋
ヘンリーでVP of Engineeringを務めるSongmuです。このエントリーは株式会社ヘンリー Advent Calendar 2023 、11日目の記事です。 はてなブログとblogsync はてなブログにはAtomPub APIという、はてなブログをAPIで操作できる機能があります。これは実は結構古くからある機能で、2013年にリリースされています。当時のはてなインターン生によるもので、moznionさん、krrrrさんが担当されたようです。歴史を感じますね。 そのAtomPub APIを利用し、はてなブログを管理するためのCLIツールとして、当時はてな社のチーフエンジニアで現CTOのmotemenさんが「個人で」開発したGo製のOSSがblogsyncです。これは2014年にリリースされています。社員が自社サービスのユーザーであり、社員が趣味の個人開発でそのサービス利用のため
数年前から業務上では同僚に通りの良いあだ名がない場合、極力「さん」付で呼ぶように意識している。新卒やインターンの大学生を無条件で君付けで呼ぶみたいなのをやめたいと思ったのだ。 呼称から暗黙の権威勾配が生まれることは少なくない。例えば、上司が部下を君付けで呼び、部下が上司をさん付けで呼ぶという光景はよく見られる。上下関係が前提にあり、逆転させると違和感を感じるはずだ。こういう暗黙の権威勾配は双方の心理に染み付いてしまい、構造を変えるのが難しくなる。 逆に、我々のIT業界では、新卒やインターン生が数年後に自分の上司になることも珍しくない。流動性が高くて素晴らしいことである。その時に呼び方を「君」から「さん」に変えるのもおかしな話である。そもそも上下関係によって呼び方が変わるのはナンセンスだと私は思っていて、仕事の上ではお互い一人前の大人でリスペクトしあいたいし、個人的にフラットさを志向している
もうだいぶ前になってしまいましたが、3月に京都でYAPC::Kyotoに参加してきました。 YAPC::Kyotoは運営の皆さま、本当にお疲れ様でした。コロナ渦で運営の継続には色々苦労があったかと思います。そんな中、世間的にコロナ明けの雰囲気になってきている中、ちょうど先陣を切るような形でオフラインイベントが開催できて、大きな盛り上がりを見せたのは、皆様の苦労が報われたようにも思いました。旧交も温められたし、それだけではなく、学生支援制度などのお陰で、若い人も参加していて交流が盛り上がってよかったです。 思えば、2019年のYAPC::Tokyoのときに僕がベストトーク賞を受賞した勢いで、懇親会の最後にで胴上げされた後に、無責任に「次は京都でやるぞ!」と、勝手に宣言したのが実現した形でした。JPAにも禄に関わっていないのに(当時は一応末席で参加することもあった)。とはいえ、懇親会で @__
1月から株式会社ヘンリーに入社しました。ヘンリーは「社会課題を解決し続け、より良いセカイを創る」というミッションを掲げ、現在はHenryというレセコン一体型クラウド電子カルテサービスを主力として医療DXに取り組んでいるスタートアップです。 https://corp.henry-app.jp/ ヘンリーのことはあまり知らなかったのですが、ずっと一緒に働きたいと思っていたエンジニアの一人である縣さんが所属しており、今回私が転職活動を始めたのを彼が早々に察知して誘ってくれたのがきっかけです。 彼と話したところ、開発に色々課題は抱えつつも前向きに、楽しそうに働いていると感じたのが印象的でした。ナイスガイな彼がそれくらい魅力を感じているのであれば、良いチームで面白い社会課題を解いているだろうなと。 その後、2週間で様々なポジションの7名とお話しました。どの方もモチベーション高く、顧客や事業やプロダク
12月末でLaunchableを退職します。実際には11月30日が業務最終日で12月は求職活動をしていました。幸い12月中に転職先を決めることができ、1月から次の会社で働きます。次の会社は年明けにお知らせします。 求職活動中は多くの方や会社から連絡をいただき本当にありがたかったです。全てにお返事をすることができず申し訳ありませんが、直接お知らせできなかった方にはこちらでお知らせとなることをご了承ください。 以上でお知らせは終わりで、以降は単なる中年男性のしょうもない独白です。 退職は非常に残念で、Launchableでまだまだやりたいことはあり、これからというところでもあったのですが、言ってしまえば西海岸外資の洗礼を受けたということです。 今回の僕の挑戦はあっけなく終りを迎え、ほろ苦い体験となりました。とはいえ間違いなく良い経験にはなりました。Launchableの事業は引き続き応援してい
バズレシピアドベントカレンダーの24日目です。リュウジさんの鶏胸肉のレモン漬けをベースにして、ササミの漬けを定期的に作っているので紹介です。 多めに仕込んで、常備菜として一週間程度で食べきっています。お手軽高タンパク食でアレンジも効いて美味しいので、食事に一品足したいときとか、料理したくない時や間食でぱっと食べるのに便利です。 アウトライン ササミの漬け 1. ササミを削ぎ切りにする 2. ブライン液に一晩漬ける 3. 片栗粉を絡めてさっと(2分程)茹でる 4. 保存容器内で漬け汁に浸す pic.twitter.com/95TkuB67mj — songmu (@songmu) December 24, 2022 リュウジさんのレシピと異なる点は、ササミを使っている点、ブライン液に漬けて吸水する工程がある点、漬け汁に酢とワサビを加えて長期保存が効くことを期待している点です。 ササミは、自分
前回のtagprの紹介エントリの反響が思ったより大きくて喜んでいます。ということで、積み残し及び、要望やヒントから着想を得て幾つかの機能を追加実装しv1.0.0をリリースしました。 https://github.com/Songmu/tagpr/releases/tag/v1.0.0 ありがたいことに、public repoだけでも十数名の方に既にご利用いただいているようで、フィードバックから細かいエッジケースの修正も幾つかおこなって敲かれたため、だいぶ使い物になるソフトウェアになったと言って良いでしょう。 ということで、追加された機能等について解説していきます。 uses: Songmu/tagpr@v1 これまではワークフロー上で uses: Songmu/tagpr@main とブランチ直指定してもらっていましたが、uses: Songmu/tagpr@v1 と指定できるようになりま
Shodo AI校正APIのベータ版に申し込み、利用させていただいています。Shodo、日本語校正のSaaSということで注目していて、今回のAPIベータ版の話がTLに流れてきたので申し込み、当選することができました。 日本語校正サービス・ソフトウェアは商用のものの質はやはり高く、例えば老舗ジャストシステムのJust Right!などは友人のライターが利用していて、評判の良さも聞いています。 ただ、それらはいかんせん良いお値段します。もちろん、良質なサービスに対価を払うことはやぶさかではありませんが、私のようなホビーライターからするとちょっと厳しいお値段です。 ただ、私もブログは細々と継続していて、不定期で有償の記事や執筆をお受けすることもあるため、何らかの校正サービスを使いたいと思っては常々思っていました。 その点、スポットで従量課金的に利用できるSaaSモデルであるShodoは魅力的です
tl;dr GitHubのリリースノート自動生成のAPIを用いてkeep a changelog形式のCHANGELOG.mdを出力するツールを作った https://github.com/Songmu/gh2changelog gh2changelog -all -unreleased とかで出力 細かいオプションはヘルプ等を参照のこと ghchに引数体系は近いです 本題 GitHubには、リリースノートを自動生成する機能がある。これは、リリース間でマージされたpull requestのタイトルを一覧し、リリース項目としてGitHub Releases上に出力してくれるものです。リポジトリ上に.github/release.yml設定ファイルを配置すれば、pull requestの作者やラベルを元にグルーピングしたり非表示にするといった出力内容のカスタマイズもできる。 このあたりの実際の
常々GitHubにtag requestが欲しいと言ってきましたが、それを実現するツールを作りました。OSSなど、バージョニングとリリースが伴うソフトウェア開発のリリースエンジニアリングをとにかく楽にしたいという動機です。既に自分が管理している幾つかのOSSでは導入して便利に利用しています。 https://github.com/Songmu/tagpr アイデア 基本の発想は以下のようにシンプルです。 リリース用のpull requestがGitHub Actionsで自動で作られる バージョン番号が書かれたファイルやCHANGELOG.mdを自動更新 そのpull requestをマージするとマージコミットに自動でバージョンtagが打たれる semver前提 リリース用のpull requestを自動で作りマージボタンを以てリリースと為す、というのは、みんな(僕が)大好き git-pr
突然ですが、git-pr-releaseのなんちゃってコラボレーターである私が僭越ながら、その王道の使い方を皆様に伝授していきます。何番煎じかの記事ではありますが、現代の、特にGitHub Actions出現以降の使い方をまとめたいというのが動機です。 https://github.com/x-motemen/git-pr-release https://rubygems.org/gems/git-pr-release git-pr-releaseはGitHubを業務開発で利用している場合に便利なツールで、デフォルトブランチにマージされたpull requestをリリース項目として一覧し、それをpull request化してくれるものです。これにより以下のことが実現できます。 リリース項目が一覧されることによるリリース内容の明確化 マージボタンによる明快なワンクリックデプロイの実現 pul
Amazonプライムデー開催中ですし、Shokzの宣伝エントリでも書きます。Shokzの骨伝導イヤホンはこれまで4本自分で購入していましたが、4月にありがたいことにShokz様からOpenRun Proを頂き、宣伝ツイートもさせていただいたので、この先を読みすすめる場合、そういう利害関係がありPR的な側面が出てしまうことをご承知おきください。 #PR @ShokzJP 様より新型の骨伝導イヤホンOpenRun Proを頂きました。元々旧フラッグシップの #Aeropex を買って使っていましたが、本製品は使い勝手や品質はそのままで、さらにアプリから各種設定ができ、マルチポイントも安定しているのが素晴らしいです。 https://t.co/YqvcjNeUe2 pic.twitter.com/QJN8uw3Njv — songmu (@songmu) April 20, 2022 この後長々
Goのライブラリを提供している場合、Goの最新の安定バージョンでテストしたくなることがあるでしょう。具体的にはマイナーバージョンの直近2バージョン、今だと1.18と1.17です。GitHub Actions定義への記述は以下のようになるでしょう。 jobs: test: runs-on: ubuntu-latest strategy: matrix: go-version: ['1.17', '1.18'] steps: - uses: actions/setup-go@v3 with: go-version: ${{ matrix.go-version }} - run: go test ./... しかしこのようにベタに書いてしまうと、Goのバージョンが上がったときにチマチマ上げるのが地味にめんどくさい。なのでこれを動的に生成したい。 これは事前にGoの安定バージョン一覧を取得するjo
いかにも中年臭い話だが、最近自分の中で少し寄付ブームだという話。寄付を公言するのはかっこ悪いように昔の自分も感じていたが、結局寄付というのは世界にどうあって欲しいかという願いでもあるので、それを表明しておくのも悪くないと思った。 今年はトンガとウクライナへの寄付をしたのだが、ふと思い立ってそれに加えて以下にも寄付をしてみた。 麻布学園 フリースペースたまりば Perl Foundation いずれもお世話になったところで、今後も継続してほしいので寄付をした。 母校に寄付をする 母校に寄付をしようと思ったきっかけとして、毎年送られてくる活動報告の冊子に寄付金の総額が記載されており、それが「案外少ないな」と思ったというのがある。学年300人しかいないわけで、大学等と比べたら少なくなるのは仕方がないとは思ったが、それでも少しさびしい額に感じたのだ。 なので、これを読んだ同窓の人がいたら寄付を検討
次のページ
このページを最初にブックマークしてみませんか?
『おそらくはそれさえも平凡な日々』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く