Staaaay Fresh!

カテゴリー: サイト

stat.ink: Frequent Unannounced Restarts of stat.ink Due to Security Updates

English follows Japanese.

—-

ここ数週間、私に限らず、さまざまなシステムの管理者が、AIによって発見されたと思われる脆弱性への対応に追われています。

それは、アプリケーションを構築するためのライブラリに関する問題である場合もあれば、Linuxなど、システムの根幹に関わる問題である場合もあります。

また、特に日本では、毎日のように「数万人分の個人情報が不正アクセスによって漏洩した」といったニュースが流れています。私の所属する組織でも、実際にそのようなアナウンスを行ったことがありますが、それすら誤差に思えてしまうほど、毎日のように大量のデータが流出したというニュースを目にします。
(もちろん、私の所属組織でも、この件についてはかなり反省しており、対応や対策を進めています!)

こうした問題への対応のため、stat.ink のOSを頻繁に再起動する必要が出てきています。

身近なたとえをするなら、「毎日のようにWindows Updateが降ってきて、そのたびに再起動を求められる」ような状態です。

これは本質的にはAIの問題ではありません。また、私自身、もはやAIなしで開発作業を行うことは難しいと言ってよい状況になっています。

ただ、少なくとも今後1~2年程度は、このような流れが続いていくことは避けられないのではないかと思っています。
なお、これはもちろん、私の所属組織を代表する意見ではありません。

幸い、stat.ink には「絶対に守らなければならない個人情報」が大量に保存されているわけではありません。それでも、皆さんのデータとシステムを安全に保つためには、今後もしばらくの間、頻繁なシステムの再起動が必要になることが予想されます。

通常、メンテナンスは十分な予告期間を設けて行うべきであることは言うまでもありません。

しかし、すでに現在も、予告なしの再起動を繰り返しています。

その際には、Cloudflareのエラーページが表示されることが多いと思います。単に画像が表示されない程度の「些細な問題」で済む場合もありますし、API経由での投稿が一時的に失敗したように見えることもあるでしょう。

今後もしばらくの間、このように事前の予告なしに、システムへ一時的にアクセスできなくなることがあると思われます。

再起動は、おおむね日本時間の18時から早朝5時までの間に行う予定ですが、必ずしもこの時間帯に限定されるわけではありません。

stat.ink は、ほとんどの場合、定期的に実行されるスクリプトなどを経由して利用されています。そのため、投稿に失敗した場合でも、次回の実行時に欠落していたデータが投稿されることが多く、利用への影響は比較的小さいと考えています。

それでも、「数日おきに数分程度、stat.ink にアクセスしづらくなる」ことに変わりはありません。

ご迷惑をおかけしますが、皆さんのご理解とご協力をお願いいたします。

—-

Over the past few weeks, system administrators everywhere, not just me, have been busy dealing with vulnerabilities that appear to have been discovered by AI. Some are in libraries used to build applications; others affect core parts of systems such as Linux.

In Japan in particular, there’s news almost every day about the personal information of tens of thousands of people being leaked through unauthorized access. My own organization has made such an announcement too, but so much data is reported leaked every day that ours seems almost like a rounding error. (Of course, my organization has taken it seriously and is responding and putting countermeasures in place!)

As a result, I need to reboot the OS that runs stat.ink frequently. It’s a bit like Windows Update pushing new updates every day and asking you to restart every day.

This isn’t fundamentally an AI problem, and at this point I can hardly do development work without AI myself. Still, I expect this trend to continue for at least the next year or two. (This is my personal view, not that of my organization.)

Fortunately, stat.ink doesn’t hold much personal information that absolutely must be protected. Even so, I expect frequent system restarts will be needed to keep your data and the system safe.

Maintenance should normally be announced well in advance. However, I have already been restarting the system repeatedly without notice. During these restarts you’ll usually see a Cloudflare error page. Sometimes the effect is minor, like images not loading, but API submissions may also appear to fail at random.

For a while, there will likely be more brief periods without notice when the system can’t be reached. Most will happen between 6 PM and 5 AM Japan Standard Time (JST). JST is always UTC+9 and has no daylight saving time, so this window is 09:00–20:00 UTC. In US time, it is:

Eastern: 4 AM–3 PM (EST) / 5 AM–4 PM (EDT)
Pacific: 1 AM–12 PM (PST) / 2 AM–1 PM (PDT)

Some restarts may happen outside this window.

Most stat.ink users submit data through scripts that run regularly. If a submission fails, the missing data will be submitted the next time the script runs, so I expect the impact to be fairly small.

Even so, it still means a few minutes of downtime every few days.

I’m sorry for the inconvenience, and I appreciate your understanding and cooperation.

stat.ink: Modernizing the Codebase

English follows Japanese.

最近、AI を活用して stat.ink のシステムを更新しています。

stat.ink のソースコードには 10 年以上の歴史があり、古い書き方や、当時の事情に合わせて設計された構造が数多く残っています。

現在、こうしたコードを近代化するとともに、静的解析を活用してコードの品質を向上させる作業を進めています。目指しているのは、意図しないエラーや、潜在的な不具合が発生しにくいコードにすることです。

今回の作業では、非常に多くのソースコードを書き換えています。通常の利用で動作が変わらないよう注意して進めていますが、変更範囲が広いため、あらゆる利用状況で問題がないことまでは確認できていません。

また、作業を進める中で、何年も前から存在していた潜在的な問題が AI によって発見され、修正されたケースもあります。その結果、これまでエラーが発生していた機能が、正常に動作するようになっている場合もあります。

もし不自然な動作やエラーに気づいたら、ぜひお知らせください。

連絡には Discord をおすすめしますが、GitHub の Issue や、このブログのコメントでも構いません。どのページで、どのような操作をしたときに、何が起きたのかを具体的に書いていただけると、原因の調査がスムーズになります。

I’ve recently been using AI to help update the stat.ink system.
Oh wait, I’m supposed to call it “SI” now, aren’t I? Super Intelligence. Heh.

The stat.ink codebase has more than 10 years of history, and much of it still reflects old coding styles and the circumstances of its time.
I’m now modernizing it and using static analysis to improve code quality.
The goal is a structure where unintended errors and latent bugs are less likely to occur.

This work involves rewriting a very large amount of code.
I’m being careful not to change behavior in normal use, but because of the sheer volume of changes, I haven’t been able to confirm that everything works in every real-world use case.

Along the way, the AI has also found and fixed latent problems that had existed for years.
As a result, some features that used to fail with an error may now work correctly.

If you notice anything strange or run into an error, please let me know.
Discord is preferred, but GitHub issues or comments on this blog are fine too.
It helps a lot if you can include which page you were on, what you did, and what happened.

stat.ink: Sign Up Without a Password

English follows Japanese.

数日前より、stat.ink でパスキーのみで会員登録ができるようになりました。

4月にパスキーを導入した時点では、パスワードを設定せずに会員登録することはできませんでした。
先日のリリースでパスワードを無効にできるようになりましたが、その場合も、登録時には一度パスワードを設定する必要がありました。

今回の変更により、最初からパスワードを設定せず、パスキーだけで会員登録できるようになりました。

これまでどおり、パスワードでログインしたい方は、パスワードを設定して登録することもできます。
また、パスキーのみで登録したあとから、パスワードを追加することも可能です。
その場合は、プロフィールページからパスキーで本人確認を行い、設定してください。

なお、パスキーのみで登録したアカウントは、パスワードを無効にしたアカウントと同じ扱いになります。

パスワードが設定されていない間は、最後に残ったパスキーを削除することはできず、API キーを使ったパスワードの再設定もできません。

すべてのパスキーを失ってしまうと、リカバリキーがない限りログインできなくなります。
会員登録が完了したら、忘れずにリカバリキーを作成し、安全な場所に保管しておいてください。

As of a few days ago, you can sign up for stat.ink with only a passkey.

When I added passkey support in April, you couldn’t create an account without a password.
The recent release let you disable your password, but you still had to set one when you first signed up.
With this change, you can sign up without a password from the start.

If you prefer to log in with a password, you can still set one when you sign up, just as before.
You can also add a password later, even if you signed up with only a passkey.
Just open your profile page, verify with your passkey, and set your password.

Note that an account created with only a passkey is treated the same as an account with its password disabled.
While you have no password, you cannot delete your last remaining passkey, and you cannot reset your password with your API key.
If you lose all your passkeys, you will no longer be able to log in unless you have a recovery key.
Don’t forget to create recovery keys once you’ve signed up.

stat.ink: Disable Your Password

English follows Japanese.

パスワードを削除できるようになりました

パスキーを登録しているユーザーは、パスワードを削除してパスキーだけでログインする設定ができるようになりました。

プロフィールページから「パスワードを無効にする」を選び、パスキーで本人確認をすると、パスワードはサーバーから消去されます。それ以降のログインはパスキーだけになります。

セキュリティ上のメリット

パスワードがあると、パスキーを設定していても、パスワードを知っている人ならログインできてしまいます。他のサービスで漏れたパスワードを使い回していた場合や、フィッシングサイトにパスワードを入力してしまった場合が、その典型です。

パスワードを削除すると、ログインの手段がパスキーだけになります。パスキーはお使いの端末に保存され、正規の stat.ink 以外では使えません。そのため、パスワードの漏洩、使い回し、フィッシングによる不正ログインを根本から防げます。また、サーバーにパスワードの情報が残らないので、万一の情報漏洩でもパスワードが流出することはありません。

ご注意ください

  • パスワードを無効にしている間は、最後の 1 つのパスキーを削除できません。
  • すべてのパスキーを失うと、リカバリキーがなければ新しいパスワードを設定できません。パスワードを無効にする前に、リカバリキーを作成しておくことを強くおすすめします。
    • パスワードを無効にしている間は、API キーを使ったパスワードの再設定はできません。
  • パスキーで本人確認をすれば、プロフィールページからいつでもパスワードを設定し直せます。

翻訳の改善

各言語の翻訳を見直しました。ゲーム内の公式用語に合わせ、足りなかった訳文を追加しています。

その他

  • Google パスワードマネージャなど、一部のパスキー管理ツールでパスキーを登録しようとするとエラーになり、登録できなかった問題を修正しました。

Sign in with passkeys only

If you have registered a passkey, you can now delete your password and sign in with your passkey only.

Open your profile page, choose “Disable Password”, and verify with your passkey. Your password is then erased from the server, and from then on you can sign in only with your passkey.

Why this is more secure

As long as your account has a password, anyone who knows it can sign in, even if you have also set up a passkey. This typically happens when you reuse a password that leaked from another service, or when you type your password into a phishing site.

When you delete your password, a passkey becomes the only way to sign in. Passkeys are stored on your device and cannot be used anywhere except the real stat.ink. This stops sign-ins that rely on leaked or reused passwords or on phishing. Also, no password data is kept on our server, so a data breach on our side cannot expose your password.

Before you disable your password

  • While your password is disabled, you cannot delete your last remaining passkey.
  • If you lose all your passkeys, you can set a new password only with a recovery key. We strongly recommend creating recovery keys before you disable your password.
    • While your password is disabled, you cannot reset it with your API key.
  • You can set a password again from your profile page at any time after verifying with your passkey.

Translation improvements

We reviewed the translations in each language, matched them to the official in-game terms, and added missing translations.

Other changes

  • Fixed an issue where registering a passkey failed with an error for some passkey providers, such as Google Password Manager.

stat.ink: Upgraded to PHP 8.5

Thank you for using stat.ink.

At around 18:45 JST on October 8, 2026 (09:45 UTC / 5:45 AM EDT / 2:45 AM PDT), I updated the systems that stat.ink runs on:

  • Upgraded to PHP 8.5
  • Restarted the server

If you accessed the site during the upgrade or restart and saw a Cloudflare error page, I apologize for the inconvenience.

Development has already been running on PHP 8.5, so I’m confident there shouldn’t be any issues.
That said, if you run into any errors or notice behavior that differs from before, please let me know via Discord or another channel.

stat.ink: Passkeys

日本語は英語の後にあります。

A few days ago, I added passkey support to stat.ink.
You can now log in more securely than with password-based login.
This method is expected to become one of the standard login methods going forward (you could even say it already has).

With passkeys, not only your password, but also your face recognition data and fingerprint data are never transmitted.
When using a passkey, you’ll be asked for your OS password or fingerprint authentication, but this is only used to access the passkey on your PC or smartphone — none of this information is transmitted to stat.ink or any other site you’re using.

In a typical environment, you should be able to use the passkey storage provided by your OS or browser.
If you’re more advanced, you might be using 1Password or Bitwarden. Or perhaps a hardware key (such as a YubiKey).
Any of these can be used, and with cloud sync, you may be able to use the same passkey across various devices.

Please give passkeys a try!
If you encounter an issue where you can register a passkey but can’t actually use it, please let me know. (YubiKey was in this state until early morning of April 27, 2026, Japan Time…)

P.S. Account registration without setting a password, as well as removing your password after setting up a passkey, are not yet supported.
I’ll decide whether to implement these based on the stability of the implementation and user demand.

—

数日前、stat.ink にパスキーサポートを追加しました。
パスワードによるログインよりも安全にログインすることができるようになりました。
この方法は、この先のスタンダードなログイン方法のひとつになる(既になっていると言えるかも)ものと思われます。

パスキーでは、パスワードはもちろん、あなたの顔認証情報、指紋認証情報は一切送信されません。
パスキーの利用時には OS のパスワードや指紋認証が求められますが、これはあなたの PC やスマートフォンでパスキーを利用するためのもので、stat.ink をはじめとする利用サイト側には一切送信されません。

一般的な環境であれば、OS やブラウザによるパスキー保管所が利用できるはずです。
エキスパートであれば、1Password や Bitwarden を利用しているかもしれません。ハードウェアキー(例えば YubiKey)かもしれませんね。
どれも利用でき、クラウド同期されて様々な端末で同じパスキーを利用かもしれません。

是非パスキーをご利用ください!
もし、登録はできたのに利用はできないという問題を見つけたら教えてください。(2026/4/27 未明 (日本時間) まで YubiKey がこの状態でした…)

追記:まだパスワードを設定しない会員登録や、パスキーを設定した後にパスワードを削除する操作には非対応です。
実装の安定性と需要を見て実装するかを決めていきます。

stat.ink: Twitter integration is back

Twitter integration is back. However, there are a few limitations.

First, I do not recommend new use of Twitter integration.
As you know, the environment surrounding Twitter has been deteriorating rapidly since the acquisition by Elon Musk, and the Twitter integration that is working now may stop working at any time.
Surely, no one can trust Eron Musk regarding his Twitter work?

  • The maximum number of logins executed is 25 per 24 hours, Twitter documentation says. (The current API docs have different things written on different pages, so I don’t know if this is true or not.)
  • The function for “copying profile icons from Twitter” has been removed.
  • Since it is now a different Twitter app internally, it will need to be re-authorized, at least initially.

Twitter連携機能が復旧しました。しかし、制限があります。

まず、新規のTwitter連携はおすすめしません。
ご存知の通り、Twitterを取り巻く環境はイーロン・マスクの買収以降急激に悪化しています。動作するようになったTwitter連携もいつ動かなくなるかわかりません。

  • ログインの試行は 24 時間あたり 25 回に制限されるとTwitterのドキュメントに記載されています。 (現在のTwitter APIは記載に一貫性がないので、本当にこの制限なのかはわかりません。少なくとも私はTwitterが信頼できないことを知っています)
  • プロフィール画像をTwitterからコピーする機能は削除しました。
  • 内部的には別のTwitterアプリになっているので、少なくとも一度は再認証が求められます。

stat.ink: Twitter integration is not working / Twitter連携が動作していません

Login and other operations are not working because the Twitter application is in status “SUSPENDED”, although it is unclear why.
Please use password authentication.

理由は不明ですが、Twitterアプリがステータス「SUSPENDED」になっているためログイン等が動作しません。
パスワード認証でご利用ください。

stat.ink: 今後の運営について / About Future Operations

(The English translated version is below the Japanese.)

既にご承知おきの通り、任天堂サポートからサードパーティーに対する声明が発表され、また、Apple, Google のストアに公開されているアプリケーションについて削除要請が行われました。
stat.ink はイカリング 3 のサードパーティーアプリケーションではありませんので、stat.ink の根幹部分については影響はないものと考えています。
(一部、ステージ画像やアイコン類などのアセットを利用しているため、その部分では影響を受けます)

s3s や s3si.ts については、声明とは直接合致はしないものの、意図するところとしては範囲内であろうと考えられます。

この声明をうけ、stat.ink ではアセットを利用しないよう修正を加えて行っています。
そのため、全体的に灰色であるなど殺風景になっています。

このまま運営しても良いのですが、Splatoon 3 の現在の状況や、今回の問題を受けて、私のモチベーションはゲーム・サイト運営ともにほぼゼロになっています。
また、上記の通り stat.ink への影響は限られると考えられるものの、私は法律の専門家ではありませんし、仮に影響がないと確信していても任天堂と法的バトルをするような時間も体力も金銭もありません。
現状はリスクだけを抱えている状態です。

まだ決めたことは何もありませんが、そう遠くない未来に stat.ink はサービスを停止する可能性が高いと思います。

仮に停止する場合は次のようになるでしょう:

  • データの譲渡は行いません。私の手元で処分します。
  • 個人戦績にはアクセスできなくなります。
  • 一部の全体の統計(例えばキルデスと勝率の関係など、比較的不変的なデータ)は一部作成するかもしれません。

As you are already know, Nintendo Support has issued a statement to third parties and requested the removal (cease and desist) of applications published in stores of Apple and Google.
Since stat.ink is not a third-party application for SplatNet 3, I don’t believe there will be any impact on the core of stat.ink.
(Some of the assets, such as stage images and icons, are used, so they will be affected in that part.)

As for s3s and s3si.ts, while not directly consistent with the statement, they would be within the scope of what is intended.

In response to this statement, stat.ink has modified and removed the use of assets.
As a result, the overall appearance of the site is gray and otherwise bleak.

I would be fine to keep it operating as is, but with the current conditions of Splatoon 3 and the statement, my motivation is almost nil.
In addition, while the impact to stat.ink is likely to be limited as stated above, I am not a lawyer, nor do I have the time, energy, or money to engage in a legal battle with Nintendo even if the impact is certain to be non-existent.
Now, there are only risks.

Nothing has been decided yet, but it is very likely that stat.ink will be out of service in the not-too-distant future.

If I decide to shut it down, I would do the following:

  • No transfer of your data will be made. It will be disposed of by me.
  • You will not be able to access your personal results.
  • Some overall statistics (relatively invariant data, such as K/D vs Win %, for example) might be created in part.

stat.ink: Gear Ability Effects

各プレーヤーのギアパワーを集計して表示する機能を追加しました。
I have added the ability to display a summary of each player’s gear abilities.

各プレーヤーのギアパワー付近をクリック(タップ)すると
Click (tap) around the gear abilities of each player

ポップアップ表示されます。
a pop-up window will appear.

「効果 (Effects)」欄はいわゆる 5.7 表記、メインいくつ分に相当するかを示します。
The “Effects” column indicates the so-called “5.7 format.” It indicates how many primary ability effects it is equivalent to.