今年のOSS活動振り返り @ 2018
2018年のOSS活動の振り返り記事です。
今までの振り返り。
- 今年のOSS活動振り返り @ 2017 | Web Scratch
- 今年のOSS活動振り返り @ 2016 | Web Scratch
- 今年のOSS活動振り返り @ 2015 | Web Scratch
- 今年のOSS活動振り返り @ 2014 | Web Scratch
2018年のGitHubのContributionsは8000~10000ぐらいを推移していましたが、後半はどうも上手くコミットできてなかった気がします。
(2014年から増えているのはJSer.infoをTumblrからGitHub Pagesに移行しました - JSer.infoが半分ぐらいの理由です)
GitHubのCurrent Streakは1881日で5.153424658年継続的にコミットは続いています。
データの取得には次のツールを使いました。
Issue/PR
やっぱりかなり減少してました。
作成したリポジトリ
- 今年: 69
- 1年前: 95
- 2年前: 108
monorepo中心になってきたのと、コミット数が減っていたのが影響してそう。
作ったもの
時期順で何を作っていたのかを振り返る。
- azu/node-get-url-origin: Get origin from url string in Node.js
- NodeのLegacy URL APIに
origin
がなくて作った。 URL
ならorigin
があるのでもういらなさそう
- NodeのLegacy URL APIに
- textlint/txtast-to-html: TxtAST to HTML string.
- 記憶にないけど、ASTをそのままHTMLに変換したら、なんでもシンタックスハイライトできるのでと思って書いた気がする
- 後HTMLにlocationを埋め込んでSourceMap的なことしてるみたい
- azu/conventional-changelog-angular-all: conventional-changelog angular preset + write all type to CHANGELOG.
chore
とかも全部含めてCHANGELOGNI出す
- almin/almin-kuker-devtools: Integrate almin with kuker
- Kukerという汎用開発者ツールがでたので、それのAlmin対応を書いた
- postMessageで書けるので、任意のStateを表示するのに便利
- azu/hls.js.pull.1528
- この辺からhls.jsにコミットするようになって、そのままコミッターになった
- azu/profile-javascript-function
- JavaScriptの関数プロファイルにnode-sjspを使った変換を行っていて、汎用的なものを作ろうとして、伊豆に行く電車の中で書いてた気がする
- 完成するまでに、電車が到着したので未完成
- azu/review-lint: undefined
- 文章のレビューするためのツールのプロトタイピング
- https://twitter.com/azu_re/status/970591229611196416
- この辺を引き継いでtextstatを作成中
- azu/yosuke_furukawa_generator2: yosuke_furukawa_generator2
- ジェネレーター(2)
- azu/can-i-standardize: Can I Standardize?
Array#flatten
がBreak the webという話で作ったやつ- MooToolsとかprototype.jsとか旧来のライブラリが、指定した名前のメソッドを持ってるかを調べるやつ
- #SmooshGate FAQ | Web | Google Developers
- Proofdict · A dictionary engine that based on one rule per one file.
- 個人向け辞書作成プロジェクト
- GitHubでForkして、ブラウザで辞書を追加すると辞書のAPIとかJSONが手に入る
- 作った辞書は@proofdict/textlint-rule-proofdictから利用できる
- 常に公開、常に最新という辞書を作るプロジェクト
- あともうちょっとで完成という感じがする(機能はできていて、ドキュメントとか公開のアプローチとかテストという感じ)
- Welcome to PR!
- azu/csp-report-to-google-analytics: CSP report to Google Analytics.
- CSP違反をGoogle Analyticsにレポートするプラグイン
- CSPレポート(Mixed Contentの問題)をGoogle Analyticsに集約する | Web Scratch
- efcl.info をhttpsに移行するために書いた
- efcl.info をhttpからhttpsへ移行するためにやったこと | Web Scratch
- azu/ticktick-to-omnifocus: CSV to Taskpaper to OmniFocus.
- azu/html-sourcemap: HTML + Markdown + Source Mapping project.
- Markdown to HTML with SourceMap的なものを作ろうとしてたのだと思う
- HTMLのdata属性に元Markdownの位置情報を埋め込む
- なんで作ってたのか覚えていない
- 地味にmonorepoなので、なんかでかいことしようとしてた?
- jser/dataset: JSer.infoのデータセットや処理ライブラリ
- JSer.infoのデータセット
- JSer.infoのデータセットと統計前処理ライブラリを公開しました | Web Scratch
- これに関連して
jser
というアカウント名をGitHubとnpmを両方譲ってもらった(GitHubはだいぶ前) - GitHubで使われてないアカウントを解放してもらった | Web Scratch
- npmで使われてないアカウントを解放してもらった | Web Scratch
- textlint/playground: textlint online playground.
- jser/probot-jser-info: probot for jser.info
- probotを使った
- textlint/regexp-string-matcher: Regexp-like string matcher.
- 正規表現のような文字列から正規表現オブジェクトへ変換するライブラリ
- JSON的な設定ファイルでも正規表現を書きたい時に使う
- textlint-filter-rule-whitelistとルール独自のallowオプションによる正規表現の違いに注意する - Qiitaあたりからライブラリとして作った
- azu/no-clipboard-app: Share your clipboard text to your device like Oculus Go.
- Oculus Goを使って、クリップボードがなくて辛かったので作ったアプリ
- PC -> Oculus Go ペースト、Oculus Go -> PC コピーができる
- azu/hatenadiary-downloader: はてなダイアリーの記事を一括ダウンロードするCLI
- http://d.hatena.ne.jp/t-wada/を読むために書いた
- azu/har-extractor: A CLI that extract har file to directory.
har
ファイルのディレクトリ解答- harファイルからSourceMapの元ファイルを取得プロジェクトの一部だった気がする
- azu/sentiment-word-vec: 感情極性値のワードリスト
- 差別用語について研究してたので、ベクトル化することで主観じゃないデータを作れるかを作ろうとしてた残骸
- 人が容認できない言葉を避ける · Issue #10 · azu/information-communication-technology
- azu/expected-exit-status: A CLI check that command exit status is expected.
- コマンドが指定したexitコードで終了するかをテストするCLI
- JXA-userland/JXA: JavaScript for Automation(JXA) packages for TypeScript/Node.js.
- JXA(applescriptのJavaScript版みたいなもの)をTypeScriptとかで書いたり、コード補完できるようにする開発ツールキット
- js-primerのAppleScriptを書き直したくて書いた
- 20-30行ぐらいのAppleScriptのために数万行プロジェクトができた
- JXAをTypeScriptでコード補完して書く環境やNode.jsから実行する環境を作った | Web Scratch
- laco_sushiでJXA(JavaScript for Automation)の話をした | Web Scratch
- azu/can-npm-publish: A command line tool that check to see if
npm publish
is possible.- 指定したパッケージをpublishできるかを判定するCLI
- lernaとか向けに書いた
- azu/ts-node-test-register: Load from
test/tsconfig.json
with ts-node.ts-node
が型チェックをデフォルトオフにしたりオンしたりやたら不安定なので、ラッパーtest/tsconfig.json
を自動的に探索してくれたり、型チェックも行うregister
ライブラリ
- azu/parameterized-table-template: Tag function for Parameterized testing with Markdown table.
- jest-eachかっこいいと思って書いた、汎用のパラメタライズテストライブラリ
- azu/code-migrator: Create code migration tool for your tool/library/framework.
- ライブラリのアップデートとかで、破壊的な変更をした時にマイグレーションスクリプトを提供するためのフレームワーク
- almin/migration-tools: Migration scripts for Almin.で使ってる
- azu/presentation-poster: Post to Twitter from presentation.
- Decksetで指定ページを表示すると自動的にTwitterに投稿するツール群
- JSer.info 400回記念イベントで使うために書いた
- 誰かが似たようなやっててそれをやりたくて前日に書いてた気がする
- 手元にちゃんと動くコードがあるけどtokenがベタとしてるのpushしてなかったかも
- jser.info/history-card
- JSer.infoの歴史を見るデジタルサイネージ => JSer.info History
- azu/renovate-config: Shareable config for Renovate (renovatebot.com)
- Renovateの設定
- デフォルトがPinだったので…
- azu/js-ast-hash: Output hash value of JavaScript AST.
- 山
- azu/debug: Simple debug logger for Browser/Node.js. Supports TypeScript/ES modules.
const debug = require("debug")("name")
がTypeScriptと相性悪いので書いた
- azu/hatebupwa: Hatena Bookmark search app.
- モバイル/オフラインでも動作するはてなブックマーク検索のPWAを作った | Web Scratch
- はてなブックマーク検索。Electronアプリ版をめっちゃ使ってる
- Firefoxでkeysnailが動かなくなったので書いた
- azu/gmail-old-notification-remover: Google App Script that remove older mails from Gmail.
- Gmailの容量がいっぱいなので、古いメールを削除するGAS
- azu/vscode-read-aloud-text: VSCode extension that read aloud text like Markdown and text etc…
- VSCodeで文章を読み上げする拡張機能
- js-primerのtypo探しのために書いた
- まだ記事書いてない
- textlint/textstat
- texllintは校正、textstatは推敲を補助するツール
- そういう感じで作ってみている
- 現状は次のような感じでただのビューア
- https://textstat-viewer.netlify.com/?gist=62d45a616893c52e647368fb55bc47e0
- azu/service-worker-updatefound-refresh-dialog: A library show refresh dialog/banner when the service worker found updated.
- Service Workerが更新されたらリロードするダイアログを表示する
- まだ記事を書いてない
- azu/mdn-browser-compat-data-learning-level: Test your learning level by MDN APIs
- MDNのAPIを知ってますかテスト
- https://twitter.com/azu_re/status/1042050822425792513
- open-job-letter
- azu/open-job-letter
- レポートも書いた => Report: open-job-letter
- azu/monorepo-utils: A collection of utilities for monorepo/lerna.
- lerna 2がversionとpublishが別れてない問題があって書いたmonorepo向けのツール
- versionだけ上げてpublishする前にレビューできるようなワークフロー
- azu/parcel-plugin-greasemonkey: Parcel plugin for Greasemonkey.
- azu/coursera-side-by-side-transcript-greasemonkey: coursera side-by-side transcript for Greasemonkey.
- courseraの動画と字幕を横に並べて見る
- azu/proxy-frozen-object: ES Proxy for
Object.freeze(object)
.Object.freeze
したオブジェクトをProxyするライブラリ
- azu/post-tweet: Simple post client for twitter.
- “見てる:” 投稿専用クライアント
- URLスキームで起動できる投稿専用のTwitterクライアントを書いた | Web Scratch
作ったものを見てるとライブラリを書いてる数がへっている気がする。 almin/almin: Client-side DDD/CQRS for JavaScript.とか継続的にメンテしているものが増えたからかも。
後、基本的にTypeScriptで書くことが多くなった。
作ったtextlintルール
textlintも継続してメンテ開発してる。 textstatの知見を反映したり大規模なリファクタリングとかをしてた。
後、Netlifyで紹介されてから海外の人の利用者増えた気がする
It’s now commonplace to lint code and styles, but you can take it further and actually lint content. At Netlify we use Textlint to catch weasel words, common misspellings, and other grammar gotchas. What build checks do you run?https://t.co/HCOYns6yhR pic.twitter.com/msxgbiJw90
— Netlify (@Netlify) December 21, 2018
新規ルール
- textlint-rule/textlint-rule-proselint: Proselint wrapper for textlint.
- Pythonのproselintラッパー
- textlint-rule/textlint-rule-require-header-id: textlint rule that require {#id} for each headers.
- GitBook向け
{#id}
つけるルール - js-primerで利用
- GitBook向け
- textlint-rule/textlint-rule-no-unmatched-pair: textlint rule that check unmatched pairs like “(” and “]”
- textlint-ja/textlint-rule-morpheme-match: 形態素解析結果のTokenベースの辞書でマッチするtextlintルール
今まで手を出してなかった教師なし学習系とかそのへん仕組みを使ったルールを挑戦しようとしてる。
JSer.info
400回記念イベントをやった。 今415回目で、来年の1/15で8周年になる。
他にはレポートを書いたりした。
js-primer
JSer.infoの次にコミット数は多いと思う。
js-primerとPromiseがほぼ同時にGitHubスター数が1000となった。
js-primer ★1000になった🎉https://t.co/vvdkYCMN76
— azu (@azu_re) December 30, 2018
章としては大体書き終わっていて、今は難易度が急激に上下しないようにリファクタリング中。
詳細は前回のミーティングログに載ってます。https://t.co/YNvbxfpyUI
読んでてよく分からない部分とかがあったらIssueか #jsprimer に書いて下さい pic.twitter.com/tum3r2WyKZ
#Promise本 も★1000になった🎉https://t.co/xpBBzJTY2m
— azu (@azu_re) December 30, 2018
Promise本は2.0でasync/awaitの対応する予定。https://t.co/wIN4ASzg0D#jsprimer の方で既に書いているので書けるのだけど、どちらかというとAsync Generator周りをどうしようという感じです。https://t.co/4ErgR56bSV pic.twitter.com/fCdeRqVfht
基本的にはasciidwango/js-primer: JavaScriptの入門書にコミットしてるだけ。
関連するもの
- js-primer/local-server: Local Server for js-primer.
- ローカルサーバはこれって感じのがなくて、サンプルコード用のローカルサーバを書いた
- バージョンが不安定だったりとか不要な機能が多いので、書籍向けなら固定でいいかなって感じのやつ
まとめ
完全に新規で作ってるものがちょっと減っている気がする。(去年も書いた)
個人的にはやっぱりルーチンワークというか、この時間はこれというのを決めておくとスムーズな感じっぽい。 なので、ものすごく雑な時間割をNotionで作って、それで行動してみてる。
直近のコミット数は安定して増えたので、こういうのがあってるのかもしれない。
この辺と上手くマッチするようなアプリほしいな。 何するのかを忘れるのでTodoアプリは必要だけど、時間の使い方はDoneとかぬり絵勉強法みたいな方向があっているのかもしれない。
時間割的なもので
— azu (@azu_re) December 29, 2018
- 現在の時間にあうものをハイライトしてくれる
- 毎日チェックボックスが空になった状態始まってチェックを入れられる
みたいのほしいな
新しいライブラリを作るときは大体新しいアプリを作っているので、そのへんに挑戦できるようにしたい。 そのためには普段が安定した行動になっていて、挑戦しやすい時間帯を設けるみたいのが自分にはわかりやすいのかもしれない。
電車で移動中にコード書いたりするのは、そういう機会として捉えていた感じがするので、そのへんを時間の調整で作れるようにしたい。
お知らせ欄
JavaScript Primerの書籍版がAmazonで購入できます。
JavaScriptに関する最新情報は週一でJSer.infoを更新しています。
GitHub Sponsorsでの支援を募集しています。