SHAMEZO

技術仕様

v0.9.28

入力制限

画像

  • 対応フォーマット: JPEG, PNG, WebP, AVIF, HEIC(ベータ)
  • 最大ファイルサイズ: 20MB

テキスト

  • 文字数: 1〜140文字

テキストの合成処理

フォントの種類

  • Noto Sans JP:文字幅はプロポーショナルフォントで表示します。
  • ふい字・ラノベPOP:文字幅は等幅で表示します。ただし、半角英数字は半分の幅で表示します。

縦書きの処理

  • 括弧類(「」、()、【】など)と長音記号(ー〜など)は90度回転して描画します。
  • 句読点(、。)は右上寄せで描画します。

文字の縁取り

視認性を高めるため、すべての文字に縁取りを追加しています。薄い色(白、緑、黄、桃、橙)には黒い縁取り、濃い色(赤、青、茶)には白い縁取りが付きます。

フォントサイズ

画像のサイズに応じて自動計算されます。画像の短辺に約14文字が納まる文字サイズを基準(中)とし、設定に応じて倍率をかけて計算します(下限14px・上限500px)。

サイズ設定基準(中)に対する倍率短辺に納まる文字数の目安
0.75倍約18文字
中(基準)1.0倍約14文字
1.4倍約10文字
特大2.35倍約6文字

画像処理

  • iOSで撮影した画像は、向き(Orientation)を自動補正します
  • 写真に含まれる撮影位置情報・撮影日時・撮影カメラ機種などのメタデータ(EXIF)は常に削除してアップロードされます
  • AVIF形式で圧縮します(同時に生成されるサムネイル画像はWebp)

EXIF処理

出力画像からは、撮影位置情報・撮影日時・カメラ機種などのEXIFを常に削除してから投稿・アップロードします。そのまえに、ユーザーが希望した範囲に限って、EXIFを解析し、カメラ機種・撮影場所(都道府県または市町村のみ)などをデータベースに保存することもできます。

サーバーに保存される内容

投稿形式カメラ機種位置情報EXIF全体
Web投稿希望時のみ希望時のみ×
Bot投稿×××
メール投稿希望時のみ希望時のみ×

解析方法

  • Web投稿: 画像を選択した時点で、お使いのブラウザ上でEXIF解析を行います
  • Bot投稿: Fediverseサーバー投稿時に通常EXIFが除去されてしまうため、EXIF解析は行いません
  • メール投稿: EXIFを付与したまま送信されていれば、サーバー側で元画像のEXIF解析を行います

位置情報の変換

位置情報を含む選択肢を選んだ場合のみ、SHAMEZOサーバーから国土地理院(GSI)の逆ジオコーディングAPIにGPS座標を送信し、市区町村コードを取得して保存します。 Web投稿ではGPS座標をブラウザからSHAMEZOサーバーへ一度送信し、市区町村コードに変換します(この場合でも、GPS座標そのものはサーバーには保存されません)。

ブラウザ仕様

スマートフォンのプライバシー保護機能により、Web投稿の場合にGPS情報が自動的に除去される場合があります。iOSでアップロードする場合はGPS情報の送信を許可してください。Androidでアップロードする場合、機種によっては「タップして写真を撮る」を使ってその場で撮影することでGPS情報付きでアップロードできる場合があります。

出力フォーマット

投稿先に応じて最適な形式で画像を出力します。

出力設定形式特徴
MastodonAVIF高圧縮・高画質。Mastodonの画像サイズ制限(16MB)に最適化
MisskeyAVIF高圧縮・高画質。Misskeyの画像サイズ制限(50MB)に最適化
その他JPEG汎用性が高く、どの環境でも表示可能

レート制限

画像生成を短時間に連続して行った場合や、投稿数が普段より急増した場合など、いくつかのレート制限を設けています。詳細はセキュリティ上の理由から非開示とします。

Bot投稿(メンション投稿)

Bot宛にメンション付きで画像とコメントを送信すると、文字を合成して投稿可能です。BotはWebsocketを利用してメンションを確認しているため、ほぼ即座に処理されるはずです。処理が正常に完了した場合、元投稿は削除される仕組みとなっています(設定で変更可能)。

メール投稿

メニューで確認できる専用のメールアドレスに画像を添付して送信すると、文字を合成して投稿可能です。メールは Cloudflare Email Routing により Cloudflare Workers で処理されます。セキュリティ対策(リスト型攻撃対策・MTAのバウンス防止)のため、投稿の成功・失敗によらず、サービスからは一切の返信を行いません。

お気に入り

Fediverse上(Mastodonサーバー・Misskeyサーバー)上でのお気に入りとSHAMEZOのお気に入りは自動で同期されます。

  • Fediverse上の情報が元データです
  • SHAMEZO側から定期的に情報を取得し同期します(投稿直後はより頻繁に同期されます)
  • Fediverse上でお気に入り登録した場合、SHAMEZO側にも表示されますが、若干のタイムラグがあります
  • SHAMEZO上でお気に入り登録した場合、即座にFediverse上に反映されます

皆勤賞

皆勤賞は、SHAMEZOにおける最も栄誉のある実績です。

  • その月に毎日投稿することで獲得できます
  • 1日の基準は日本標準時間の0:00~23:59です
  • 投稿できなかった日が月4日以下であれば救済措置があり、同月中の後日2枚以上投稿すると、投稿できなかった日の穴埋めとして処理されます
  • 穴埋めは古い未投稿日から1日につき1回(1日のダブル投稿で1日分)で、未来の日付や月末以降に残った未投稿日は埋められません
  • 皆勤賞はユーザー画面のカレンダータブ・実績タブで公開され、誰でも確認できます
  • 皆勤賞は月ごとに計算されるため、毎月獲得することができます

地図機能

  • ユーザーページに「地図」タブを追加し、都道府県別の投稿数をヒートマップ表示する機能です
  • メニューで「地図を公開する」をオンにしたユーザーのみ公開されます(オフの場合は本人のみ閲覧可能)
  • 位置情報を含めて投稿した画像のみが集計対象です