Web Scratch
フィード

Secretlint v10.0.0リリース: デフォルトでシークレットをマスク表示するように変更、Node.js 20+のサポート
4

Web Scratch
機密情報を検出するSecretlintのv10.0.0をリリースしました!Release v10.0.0 · secretlint/secretlintこのバージョンでは、デフォルトでLintの結果のシークレットをマスクして表示するように変更されました。Secretlint v10.0.0の変更点主要な変更点は次の通りです。詳細はリリースノートを参照してください。Release v10.0.0 · secretlint/secretlint🛡️ シークレットのマスク表示がデフォルトに最も大きな変更は、見つけたシークレットをデフォルトでマスクして表示するようになったことです。変更前:✖ found credential: github_token GITHUB_TOKEN=ghp_1234567890abcdef1234567890abcdef12345678変更後(v10.0.0):✖ found credential: github_token GITHUB_TOKEN=*******************************************実際のシークレット値を確認したい場合デバッグなどで実際のシークレット値を確認したい場合は、--no-maskSecrets オプションが使用できます。# デフォルト(マスク表示)$ secretlint "**/*"~/secretlint/secretlint/examples/cli/credential 1:0 error [AWSSecretAccessKey] found AWS Secret Access Key: **************************************** @secretlint/secretlint-rule-preset-recommend > @secretlint/secretlint-rule-aws✖ 1 problems (1 errors, 0 warnings)# 実際のシークレット値を表示$ secretlint --no-maskSecrets "**/*"~/secretlint/secretlint/examples/cli/credential 1:0 error [AWSSecretAccessKey] found AWS Sec...
9日前

textlint v14.8.0をリリースしました - MCP(Model Context Protocol)をサポート
16

Web Scratch
textlint v14.8.0をリリースしました!リリースノート: Release v14.8.0 · textlint/textlint今回のリリースでは、実験的な機能としてMCP(Model Context Protocol)サポートを追加しました。MCPは、AI言語モデルが外部のツールやサービスと統一されたインターフェースを通じて連携できるプロトコルです。MCP(Model Context Protocol)サポートtextlint v14.8.0では、新しい--mcpフラグを追加しました。このフラグにより、textlintをMCPサーバーとして起動し、AI搭載のコードエディタ(VS Code with Copilot Chat、Cursor、Windsurf)から直接textlintを利用できるようになります。MCPとはModel Context Protocol(MCP)は、AI言語モデルが外部のツールやサービスと統一されたインターフェースを通じて連携するためのプロトコルです。これにより、AIアシスタントがtextlintの機能を直接利用して、文章のチェックや修正を行えるようになります。前提条件MCPサーバーを使用するには、次の条件を満たす必要があります。textlint v14.8.0以降MCPサポートを持つAI搭載のコードエディタ(VS Code with Copilot Chat、Cursor、Windsurf)設定済みのtextlintプロジェクト - textlintにはデフォルトルールがないため、MCPサーバーを使用する前に既存のtextlint設定が必要です基本的な使い方まず、プロジェクトでtextlintを設定する必要があります。textlintにはデフォルトルールがないため、MCPサーバーを使用する前にプロジェクトで使うルールを設定する必要があります。# textlintとルールをインストールnpm install --save-dev textlint textlint-rule-preset-ja-technical-writingnpx textlint --initを実行して、textlintの設定ファイルを作成します。これにより、基本的な設定が自動生成されます。npx textlint --init作成された.textlint
14日前

JavaScript PrimerのNotebookLMが利用可能になりました!
Web Scratch
JavaScript PrimerのNotebookLMが利用可能になりました。NotebookLMは、Googleが提供するAIを活用したノートブック環境で、登録したソースに対して質問をしたり、情報を検索したりすることができます。次のリンクから、JavaScript PrimerのNotebookLMにアクセスできます。📖 JavaScript Primer - 迷わないための入門書 - NotebookLMJavaScript Primer on NotebookLMJavaScript PrimerのコンテンツがNotebookLMに入ってることで、読者は書籍の内容についてNotebookLMに直接質問したり、Podcastとして音声で聞いたりすることができるようになります。NotebookLMを活用することで、JavaScript Primerを読み進める中で生じた疑問点をその場で解消したり、特定の構文について「このコードはどういう意味ですか?」といった質問をしてjsprimerのコンテンツをベースにして回答を得たりできます。これは、従来の書籍では難しかった、検索しにくい構文に関する疑問も解決しやすいという利点があります。たとえば、NotebookLMでは次のような質問をしたりできます。あと、Podcastにするのがなんだかんだ便利です。「=>はどういう意味?」「JavaScriptのクロージャーとは何ですか?」「Promiseとasync/awaitの違いは何ですか?」「オブジェクトの章の内容を要約してください」「配列の操作方法について書かれている章はどこですか?」NotebookLM上のJavaScript Primerへは、以下のリンクからアクセスできます。📖 JavaScript Primer - 迷わないための入門書 - NotebookLMJavaScript Primerとは?JavaScript Primerは、ECMAScript 2015以降をベースにしたJavaScriptの入門書として、常に最新の情報を提供すべく継続的なメンテナンスを行っている書籍です。この継続的なメンテナンスの取り組みについては、TSKaigi 2025で「技術書をソフトウェア開発する」というタイトルで発表しました。TSKaigi 2025で「技術書をソフトウェ...
16日前

TSKaigi 2025で「技術書をソフトウェア開発する」という発表をしました
Web Scratch
TSKaigi 2025で「技術書をソフトウェア開発する」というタイトルで発表をしました。スライドは次のページで公開しています。技術書をソフトウェア開発する - jsprimer の 10 年から学ぶ継続的メンテナンスの技術 -スライド: https://azu.github.io/slide/2025/tskaigi/jsprimer.html動画: https://www.youtube.com/live/vP2vuObMKSY?feature=shared&t=12948基本的にはJavaScript PrimerというJavaScriptの入門書の話になっています。どうやって作っていて、どうやって10年近くも更新を続けているのか、オープンソースとしての継続性などについて話しています。関連:JavaScript Primerを出版しました!/JavaScript Primerはなぜ書かれたのか? | Web ScratchJavaScript Primer 改訂2版をリリースしました!/JavaScript Primerはなぜ更新され続けるのか? | Web ScratchJavaScript/TypeScript以外での通じる話が多いので、技術書や何かを伝える文章を書く人にとっても参考になるかなと思います。今だと、LLMとかに投げる文章でも同様のことが言える場面も多いとは思います。jsprimerの目的の一つに「変化に対応できるようにする」というものがあります。これのためにjsprimerという書籍を更新しているので、jsprimerにContributeや金銭的に支援してくれる人や企業はいつでも募集しています。JavaScript PrimerのES2025対応を手伝ってくれるContributorとSponsorを募集しています | Web ScratchJavaScript Primer - Open Collectiveスライド中にもありますが、現在のソフトウェア開発でオープンソースと関わらずに完結することはかなり難しいです。そのため、入門書としての目的としてオープンソースに関わってもらうことを入れています。これはjsprimerをオープンソースで開発している理由の一つです。オープンソースとの関わり方は色々な形があるので、jsprimerに限らずに何
1ヶ月前

JavaScript PrimerのES2025対応を手伝ってくれるContributorとSponsorを募集しています
Web Scratch
JavaScript Primer (https://jsprimer.net/) では、毎年ECMAScriptの新しい仕様への追従を行っています。ES2025はもうすでにリリース候補が公開されていて、2025年6月に正式リリースされる予定です。Release ES2025 Candidate April 23rd 2025 · tc39/ecma262今年もES2025で追加される機能についての対応Issueを作成しました。これらのIssueを一緒に進めてくれるContributorと、JavaScript Primerの活動を支援してくれるSponsorを募集しています。ES2025対応のIssueES2025のMeta Issueとして次のIssueがありますES2025の対応 · Issue #1778 · asciidwango/js-primer具体的に対応するものとして次のIssueを作成しています。✅ES2025: import attributes · Issue #1783 · asciidwango/js-primer見積もり: 1 or 2 pointES2025: RegExp.escape · Issue #1781 · asciidwango/js-primer見積もり: 2 or 3 point✅ES2025: Set Methods for JavaScript · Issue #1784 · asciidwango/js-primer見積もり: 3 or 5 pointES2025: Iterator Helpers · Issue #1782 · asciidwango/js-primer見積もり: 8+ point の可能性あり各Issueには、作業量の見積もりとしてpointを付与しています。(これは感覚値なのであんまり正確ではないです。実際にやってみたら変わる可能性もあります)このpointは、作業の難易度や必要な調査量などを考慮して設定していて、後述するOpen Collectiveでの報酬計算にも利用します。pointの目安は以下の通りです。これは作業時間ではなく、タスクの複雑さや規模を表す指標です。例えば2 pointは「1日あれば終わるかな」という感覚値に近いものです。PointDescription0些細な変更
2ヶ月前

DJControl Mix Ultraを買った
Web Scratch
DJControl Mix Ultraという、モバイル向けのDJコントローラーを買って遊んでいた。DJControl Mix Ultra - Dirigent | ディリゲントDJControl Mix Ultra - HerculesDJControl Mix UltraとはDJControl Mix Ultra - Herculesは、普通のDJコントローラーと違って、iOSやAndroidのスマホやタブレットとBluetoothで接続して使う目的で作られているデバイス。なので、LINE INやLINE OUTもないし、スマホとの接続はBluetooth LEでのみ行うような作りになってる。一方で、USB Cで充電できてバッテリー駆動なので、Bluetoothでスマホと繋いで動作するので、ワイヤレスで動く。そのため、この見た目通りの構成で動く。音の出力は、スマホのスピーカー または スマホに繋いでスピーカーから鳴らすので、本格的な用途じゃなくて遊びとか外で使う向けに作られている。基本的に利用できるDJアプリも、DJ Apps | Algoriddimのみ限定されている。エフェクトとかミックスとかはソフトウェア的な処理を行うので、ハードウェアは本当にコントローラーというだけの役割になっている。デバイス自体も1kgぐらいで、ケースもちゃんとしていて、デザインも好きなので、ガジェットとしてかなり良くできてた。ケースが、スマホのスタンドにもなるというデザインも良い。Macbook Airより一回り小さくて軽いぐらいな感じで、持ち運びもかなり安定してて良い。djay ProDJControl Mix Ultraは、djay Proというアプリと接続して使う専用コントローラー的なもの。djay Proは、iOS/Android/Mac/Windowsで動くDJアプリで、かなりちゃんと作られているアプリなのでできは良いと思う。djay Proは有料ではあるけど、DJControl Mix Ultraと接続するとHardware modeが有効になって、必要な機能が自由に使えるようになる。ハードウェアのデバイスごとにこういったUnlock機能が実装されているらしく、デバイスごとに有効になる機能はバラバラだけど、大体デバイスで操作できるものは全部有効になるイメージ。DJContr
2ヶ月前

オープンソース活動の振り返り/GitHub Sponsorsの収入まとめ @ 2024
Web Scratch
2024 年のオープンソース活動の振り返りと GitHub Sponsors での収入をまとめた記事です。いつもは別々に書いていましたが、内容的にどちらもオープンソースの話が被っているのでまとめました。今までの振り返り2014 年: https://efcl.info/2014/12/31/oss-in-2014/2015 年: https://efcl.info/2015/12/31/oss-in-2015/2016 年: https://efcl.info/2016/12/31/oss-in-2016/2017 年: https://efcl.info/2017/12/30/oss-in-2017/2018 年: https://efcl.info/2018/12/31/oss-in-2018/2019 年: https://efcl.info/2019/12/31/oss-in-2019/2020 年: https://efcl.info/2020/12/31/open-source-in-2020/2021 年: https://efcl.info/2021/12/31/open-source-in-2021/2022 年: https://efcl.info/2022/12/31/open-source-in-2022/2023 年: https://efcl.info/2023/12/31/open-source-in-2023/オープンソース活動の種類自分のオープンソース活動の種類として、次のようなものがあると思います。ソフトウェア開発: textlint、Secretlint、HonKitなどの開発やメンテナンスウェブサービス開発: philan.net、Komesan、Irodrなどの開発やメンテナンスブログ: JSer.infoやECMAScript Dailyのブログの投稿書籍: JavaScript PrimerやJavaScript Promise の本の執筆オープンソース関係の収入の種類自分のオープンソース関係の収入1は、ほぼ GitHub Sponsors 経由となっています。@azu の GitHub SponsorsGitHub Sponsors では Monthly と One-Time でのサポートができます。自分の場合は、Gi
6ヶ月前

BunでNode.jsのツールをSingle-file executable binaryにしてバイナリを配布する
Web Scratch
Secretlint v8.3で、単体のバイナリファイルとしてsecretlintコマンドを配布するようにしました。Release v8.3.3 · secretlint/secretlintどういうことができるようになるかと、Node.jsをインストールしなくてもsecretlintコマンドを使えるようになります。次のようにCurlでダウンロードして実行するだけで、機密情報の検出ができるようになります。#!/usr/bin/env bashset -euo pipefailSECRETLINT_VERSION="8.3.3" # secretlintのバージョンARCH=$(uname -m)OS=$(uname -s | tr '[:upper:]' '[:lower:]')# Map architecture to the expected formatcase "$ARCH" in x86_64) ARCH="x64" ;; aarch64) ARCH="arm64" ;; arm64) ARCH="arm64" ;; *) echo "Unsupported architecture: $ARCH" exit 1 ;;esac# Download the binarycurl -sSL "https://github.com/secretlint/secretlint/releases/download/$(SECRETLINT_VERSION)/secretlint-$(SECRETLINT_VERSION)-$(OS)-$(ARCH)" -o secretlintchmod +x ./secretlint# Create .secretlintrc.json./secretlint --init# Run secretlint./secretlint "**/*"SecretlintはDockerも対応していますが、コマンドラインツールの場合は単体のバイナリとして使えると何かと便利です。npm経由と比べて、Node.jsを必要としないのとダウンロードが1つのファイルだけなのでシンプルです。Docker経由に比べて、Dockerを必要としないのと実行までの時間が早いはずです。デメリットとしては、単体のバイナリはルールも同梱しないと配布できないので、ルール
9ヶ月前

JavaScript Primer v6.0.0リリース: ES2024の対応とNode.jsのユースケースを刷新
Web Scratch
JavaScript Primer v6.0.0をリリースしました 🎉JavaScript Primer v6.0.0では、ECMAScript 2024の対応とNode.jsのユースケースを新たに増えたnode:utilのparseArgs関数やnode:testを使うように書き直しています。JavaScript Primer SponsorsJavaScript Primer(jsprimer)では、Open Collectiveを通じてプロジェクトの更新に関わる資金を募っています。JavaScript Primer - Open Collective今回のv6リリースにおいては、次の方々にご支援いただきました!株式会社コクチョウさんは、Yearly Gold Sponsorとしてご支援いただいています。ご支援ありがとうございます!JavaScript Primerスポンサーについては、次のページを参照してください。JavaScript Primerスポンサー · JavaScript Primer #jsprimerまた、ご支援いただいた資金は、jsprimerにcontributionしてくれた方へ還元できるような仕組みを設計しました。次回からは、この仕組みを回していけるようにしたいです。Contributing Expenses PolicyJavaScript Primer v6.0.0の変更点JavaScript Primer v6.0.0の変更点について紹介します。リリースノートは次のページからも確認できます。Release v6.0.0: ES2024の対応/Node.jsの大幅更新 · asciidwango/js-primer更新をメールで受け取りたい方は、次のフォームから登録できます。JavaScript Primerの更新情報を購読* indicates requiredEmail Address * (function($) {window.fnames = new Array(); window.ftypes = new Array();fnames[0]='EMAIL';ftypes[0]='email';}(jQuery));var $mcj = jQuery.noConflict(true);フォームが表示されない人は http...
10ヶ月前

Node.jsで型安全な環境変数を扱うスニペット
Web Scratch
Node.js で型安全な環境変数を扱うスニペットを作りました。next devのようなアプリケーションの起動、Playwright でのテストなどコマンドごとに渡したい環境変数のセットが異なるケースがあります。この場合に環境変数をまとめたものを定義して、それをコマンドごとに読み込むセットを変えたいことがあります。次のようにベタ書きしてもいいのですが、渡したい環境変数が増えると管理が大変になります。NEXT_PUBLIC_LOCALHOST_URL=http://localhost:3000 NEXT_PUBLIC_API_URL=http://localhost:3001 NEXT_PUBLIC_IS_TEST_MODE=false FOO="bar" next devそのため、.envのような環境変数をまとめたファイルを使いたくなります。Node.js は--env-fileフラグで.envファイルを読み込むことができますが、.envファイルは型安全ではありません。--env-fileNode.js — How to read environment variables from Node.js環境変数名の Typoや必須の環境変数が設定されていないなどの問題が発生する可能性があります。そのため環境変数をの定義自体も TypeScript で型安全に定義したいです。これをやるための 50 行ほどのスニペットを書いたので、使い方を紹介します。📝 主な用途はローカルやCIでの開発用で、実際にデプロイするサーバなどには利用しない想定です📝 ライブラリとかにしてないのは、この仕組み自体が外部パッケージの依存もなく短いスニペットだからですJSからTSを参照する都合上、ライブラリにはちょっとしにくい気がしますサンプルリポジトリ次の場所にサンプルリポジトリがあります。azu/type-safe-env: Type Safe /Environment Variables snippet for Node.js使い方大きく分けて、環境変数の型を定義するdefineEnv関数と、環境変数をセットするsetEnv関数があります。環境変数の型を定義するdefineEnv.ts: 環境変数の型を定義する UtilitydefineEnv関数を次のような受け取りたい環境変数の型定義をす...
10ヶ月前