Skip to content

Instantly share code, notes, and snippets.

@otsune
otsune / SKILL.md
Created June 20, 2026 15:55 — forked from k16shikano/SKILL.md
japanese-tech-writing/SKILL
name japanese-tech-writing
description 日本語の技術文書・書籍原稿の文章規範。整形(一文一行、引用ブロック、脚注、コラム記法)、段落と論証の構成(パラグラフライティング)、論証の厳密さ(ツッコミどころの除去)、読み手の負荷の管理、視点と語り、演出の抑制、LLM っぽい空句の禁止、冗長の排除を定める。日本語で技術書の章、草稿、記事、解説文を書くとき、または推敲・リライトするときに使用する。

日本語技術文書の文章規範

日本語で技術的な原稿(書籍の章、記事、解説文)を書く・推敲するときは、以下の規範に従う。

整形

@otsune
otsune / voicevox.py
Last active March 12, 2026 15:19
VOICEVOX coreのPythonスクリプト
#!/usr/bin/env python3
import argparse
import glob
import os
import subprocess
from pathlib import Path
from voicevox_core.blocking import Onnxruntime, OpenJtalk, Synthesizer, VoiceModelFile
VOICEVOX_DIR = Path(os.environ.get("VOICEVOX_DIR", Path.home() / "voicevox_core"))
http://www.healthplanet.jp/apis/api.html
タニタの体組成計のSDカードからデーターを投稿するアプリがWindowsにしか対応していないけど、このAPIみたらOauth2.0でXMLかJSON投げりゃ投稿できるっぽいな。
SDカードの中をみたらTANITA/DATA1.CSVに計測ごとに1行追記してるだけだし。
urn:ietf:wg:oauth:2.0:oob でコマンドラインスクリプト走らせりゃ済みそう。
---
アプリ登録して
https://www.healthplanet.jp/oauth/auth?client_id=[CLIENTID]&redirect_uri=https://www.healthplanet.jp/success.html&scope=innerscan&response_type=code
で認証してaccess_code貰って
// ==UserScript==
// @name Togetter List Owner Post Counter
// @namespace http://d.hatena.ne.jp/Pasta-K
// @include http://togetter.com/li/*
// ==/UserScript==
var mastername = document.querySelector('.icon_author').innerHTML;
var list = document.querySelectorAll('.list_body');
var i,c,postuser;
var all = list.length;
// ==UserScript==
// @name TogetterFilter
// @namespace TogetterFilter
// @description Togetterを任意のユーザー名を用いてフィルタリング
// @include http://togetter.com/*
// @require https://gist.github.com/434406.txt
// ==/UserScript==
// Based on http://d.hatena.ne.jp/mEGGrim/20101019/1287684499
// ここにフィルタリングしたいユーザーのIDを''で囲い、,で区切って記述して下さい
#!/usr/bin/perl
use strict;
use warnings;
use WebService::Simple;
use Encode;
my $text = join " ", @ARGV;
my $googletrans = WebService::Simple->new(
package AnyEvent::TumblrDashboard;
use base qw/AnyEvent::Twitter/;
sub receive_statuses_home {
my ($self, $weight) = @_;
weaken $self;
$self->{schedule}->{statuses_home} = {
wait => 0,
weight => $weight || 1,
// Copyright (C) 2005, temp_h.
// Released under the GPL license
// http://www.gnu.org/copyleft/gpl.html
//
// ==UserScript==
// @name Disable HATENA keyword
// @namespace http://www.pandora.nu/tempo-depot/js
// @description Disable HATENA keyword ancher. Ancher nodes will be replaced with span nodes.
// @author temp_h <temp_h@pandora.nu>
// @include http://d.hatena.ne.jp/*
// ==UserScript==
// @name PDF/PPT viewer with Google docs
// @namespace http://www.otsune.com/
// @include http://*
// @include https://*
// @exclude http://docs.google.com/*
// @version 0.3
// ==/UserScript==
// Based on http://d.hatena.ne.jp/blooo/20100118/1263818555
// http://coderepos.org/share/browser/lang/javascript/userscripts/pdfppt_viewer_with_google.user.js?
{
"name": "Chrome Keyconfig",
"version": "1.5.3",
"normal_actions": {
"j": {
"name": "scroll down",
"args": []
},
"k": {
"name": "scroll up",