Menu

Skip to content
AppleScriptの穴
  • Home
  • Products
  • Books
  • Docs
  • Events
  • Forum
  • About This Blog
  • License
  • 仕事依頼

AppleScriptの穴

Useful & Practical AppleScript archive. Click '★Click Here to Open This Script' Link to download each AppleScript

カテゴリー: History

AppleScript Studioの歴史

Posted on 5月 13, 2020 by Takaaki Naganoya

2002年に発表されたAppleScript Studioは、MacのGUIアプリケーションをXcode(当時はProject Builder+Interface Builder)上でAppleScriptを記述することで開発できるようにするという、画期的な存在でした。Classic MacOS上でApple純正のGUIベースのAppleScriptアプリケーション開発環境が用意されてこなかった状況と比べると大きな進歩といえました。

ただ、AppleScript Studioについては、当初は大規模なプログラム開発のノウハウが蓄積されておらず、いろいろ苦労させられました(プログラムを1行足すと構文確認できなくなる/動かなくなるなど、いろいろ神経がすり減る苦労を)。

のちに、AppleScriptの分割化や、分割したScriptを読み込んだScript Objectのメモリ上からのパージを明示的に行うことで安定性を格段に向上させるというノウハウが編み出され、Mac OS X 10.5の時代にはかなり安定してユーティリティ的なGUIアプリケーションを手軽に開発できていました。

AppleScript Studioは、旧NeXT系のProject Builder+Interface Builder(現・Xcode)にFaceSpan互換のAppleScript用語辞書を用意したものだと分析しています。

FaceSpan自体が1994年のAppleScript登場に合わせてリリースされているため、おそらくApple側からの技術支援があったものと想像していますが、関係者に確認したわけではないので正確な話はわかりません。

2008年ごろにLate Night SoftwareがFaceSpanを買収し、自社製品としてリリースするという動きがありました。当時、AppleScript Studioに対して「Xcodeの一部の機能しか利用できないのに、マスターするのにXcodeの機能の多くを知る必要がある。関係のない機能だらけの開発環境を使うのが苦痛」といった否定的な意見がユーザーの間にあり、それを汲み取ったものと見ています。

ここで、AppleがAppleScript Studioを廃止するという動きはキャッチできなかったのでしょう。もし、AppleScript Studioがもう少し継続されていたら、AppleScript Studioと文法的にほとんど同じ互換環境で、かつXcodeを使わずにGUIアプリケーションが作れる状況が作り出せたのでしょう(安定性がイマイチでしたが悪くない印象でした)。

AppleScript Studioについては、macOS最新バージョンであるmacOS 10.15においても、

tell application "System Events"
	set sRes to system info
end tell

とすると、返ってくる情報の中に「AppleScript Studio version:”1.5.3″」とあり、AppleScript Studioで作られたアプリケーションであっても64bitバイナリであれば実行できます。これは主にAutomator Actionのサポートのために残されている機能だと思っています。

# macOS 11.0でも「AppleScript Studio version:”1.5.3″」が返ってきます(Intel Mac)

現在のXcode上でGUIアプリケーションを作成するAppleScriptObjCとAppleScript Studioを比べてみると、双方ともに長所・短所があります。ドキュメントと最低限度のサンプルコードが用意されており、デバッグが(10.5上では)まともに動作していたという点ではAppleScript Studioも悪くなかったと思います。

その反面、箱庭環境が箱庭すぎて、Mac OS X側にあらたなGUI部品が追加されてもサポートされず、AppleScript Studioで作るアプリケーションの「見た目」がけっこう残念になってしまうという欠点もありました。


▲いかにもAppleScript Studioで作成したツール。みすぼらしくはないものの、派手さは一切ない。当然のことながらDarkMode非対応

当初サポートされていなかった機能が追加されたという話も聞きません(Xcode 2.5から3.2.6までAppleScript用語辞書の内容にほぼ変更なし)。さらに、AppleScript Studioランタイムの癖が強くて、通常のAppleScriptとは挙動が大幅に違う(class ofでクラスを求められないとか、Finder上のselectionを取得できないとか)といった難点も解消されませんでした。


▲AppleScriptObjCによるアプリケーション例(Kamenoko)。Toolbarを導入しており、Dark Modeに対応している

AppleScriptObjCについては、ドキュメント類はどうせ今のAppleには作れないので期待できませんが、エディタ上での構文色分けのサポートと、デバッグ機能がないのはきつい感じがします。アプリケーション開発時、デバッグ機能が弱い(logコマンドで出力するとか、ファイル書き出しして分析するしかない)というのは割と困りものです。

(Visited 339 times, 1 visits today)
Posted in History | Leave a comment

1888年1月1日以前の日付が-1日になる問題の原因

Posted on 1月 23, 2020 by Takaaki Naganoya

Shane Stanleyにチャットで教えてもらっていました(お食事前に申し訳ない!) これは-1日になるほうが暦自体の仕様的に正しいようです。1888/1/1以前には「子午線」とかタイムゾーン(子午線ごとの標準時)という考え方自体が存在せず、1888/1/1に運用を開始した「日本標準時」に合わせてGMT +9になったため、この1888/1/1から前の日付はさかのぼって-1日される、と。

# 子午線のある現在の日付から子午線という概念がまだ存在しない日付をさかのぼった結果、日付が1日ズレた、と

現在施行されている「グレゴリオ暦」は、日本においても1873年(明治3年)に導入されました。この件については、よく知られていることです(自分の記憶があいまいで明治1年かと思っていました)。

ただ、この「グレゴリオ暦@Japan Ver.1」では子午線に関する決まりがなく、アメリカなどの国土が広い国では列車の時刻表などで問題になっていました。

その後、1884/10/11の国際子午線会議における子午線の制定を受け、日本標準時の運用が1888/1/1に開始になりました。この、1888/1/1の日本標準時の運用前にはタイムゾーンという考え方自体がなかったわけです。この、「グレゴリオ暦@Japan Ver.2」ともいえる暦法が1888/1/1に導入されたことにともない、時刻の変更とともに日付が変わったということである、と。

当時は子午線という概念そのものがなく、日本標準時が運用開始になったのが1888/1/1だということでようやく納得できました。

Classic Mac OSやMac OS X 10.6まではカレンダーの計算にこうした歴史的な経緯が加味されておらず、途中でポリシーが変更になったというのが真相のようです。累積誤差で日付が変わったんじゃなかったんですね、、、、

1582/10/15
ローマにてグレゴリオ暦 制定

1873/1/1(明治3年)
日本にてグレゴリオ暦に改暦。ただし、子午線の運用は各国間で規定がなかった。

1884/10/11
国際子午線会議

1888/1/1
日本標準時 運用開始

[おまけ] Cocoa自体のグレゴリオ暦の開始日を実際に取得してみました。

AppleScript名:gregorianStartDate.scptd
—
–  Created by: Takaaki Naganoya
–  Created on: 2020/01/23
—
–  Copyright © 2020 Piyomaru Software, All Rights Reserved
—

use AppleScript version "2.4" — Yosemite (10.10) or later
use framework "Foundation"
use scripting additions

set sDate to current application’s NSDateFormatter’s alloc()’s init()’s gregorianStartDate()
–> (NSDate) "1582-10-15 00:00:00 +0000"

set asDate to sDate as date
–> date "1582年10月15日 金曜日 9:18:59"

★Click Here to Open This Script 

(Visited 226 times, 1 visits today)
Posted in Calendar History | 2 Comments

1867/1/1〜1887/12/31までの範囲のdateオブジェクトからyear, month, dayを取り出すと-1日される?

Posted on 1月 22, 2020 by Takaaki Naganoya

過去のdateオブジェクトを検証する機会があり(明治の元号計算が合っていない件)、いろいろ検証していたところ、1867/1/1から1887/12/1までのdateオブジェクトからyear,month,dayを個別に取り出すと、dayが-1されるという現象が観測されました。

→ 本現象の発生メカニズムはこちら

西暦から和暦に変換する処理で、明治の年が合わないという(自分のプログラム由来の)問題を検討していました。この問題の洗い出しのため、「日」単位で順次和暦変換していたら、そのちょうど(明治→大正など)改元の境目の日付で(原因不明の)計算ミスが起こっていました。

1868/1/25からは明治時代、という判定は行えても、その1868/1/25というdateオブジェクトからYear, Month, Dayの各要素を取り出すと1868, 1, 24という結果に。

以前から「大昔の日付を扱うと問題がありそう」だとは思っていましたが、このように具体的な現象として観測したのは(個人的には)初めてでした(単に覚えていないだけかも)。

確認したのはmacOS 10.14.6とmacOS 10.15.3beta、macOS 10.13.6上ですが、どれも同じ結果になるようです。

# 追試で、OS X 10.7.5でも試してみたところ、同じ結果になりました
# OS X 10.6.8では確認されませんでした

未来のdateオブジェクトは2050年ぐらいまでチェックしてみたものの、問題はありませんでした。

過去に遡ってうるう日が設定されたとかいう話なんでしょうか? そういう話は聞いたことがないのですが、、、

日本においては太陽暦(グレゴリオ暦)を導入したのが明治元年(1868/1/25〜)なので、それ以前の日付をグレゴリオ歴で求めてもいまひとつ実用性がない(?) ともいえますが、少なくとも1868年から1887年までの間のdateオブジェクトから各種の値の取り出しが期待どおりに行われないのは問題といえるでしょう。

多分、もっと昔の日付も同様にdateオブジェクトからの値取り出しを行うと問題が出ると思われますが、前述のような理由からそこまでの日付を計算させることもないだろうかと。

# ふだん使っているgetMLenInternationalに問題があるのかと考えて、昔使っていたgetMLenを引っ張り出してきましたが、こちらはずいぶんと記法がお可愛らしい感じで、、、、

ただ、この件は気がつかなかっただけで、ずいぶん昔から存在している話なのかも????


▲Classic Mac OS 8.6では確認できませんでした(SheepShaver上で動作)この時代にはmonthをas numberで数値にcastできませんでした

AppleScript名:dateTest.scptd
—
–  Created by: Takaaki Naganoya
–  Created on: 2020/01/22
—
–  Copyright © 2020 Piyomaru Software, All Rights Reserved
—

use AppleScript version "2.4"
use scripting additions
use framework "Foundation"

script spd
  property mList : {}
end script

set (mList of spd) to {}
repeat with y from 1867 to 1888
  repeat with m from 1 to 12
    set aLen to getMlen(y, m) of me
    
repeat with d from 1 to aLen
      set aTmpStr to (y as string) & "/" & (m as string) & "/" & (d as string)
      
set aTmpD to date aTmpStr
      
      
set tmpY to year of aTmpD
      
set tmpM to month of aTmpD as number
      
set tmpD to day of aTmpD
      
      
if (tmpY is not equal to y) or (tmpM is not equal to m) or (tmpD is not equal to d) then
        set the end of (mList of spd) to {aTmpD, tmpY, tmpM, tmpD}
      end if
    end repeat
  end repeat
end repeat

return (mList of spd)
–> {{date "1867年1月1日 火曜日 0:00:00", 1866, 12, 31}, …… {date "1887年12月31日 土曜日 0:00:00", 1887, 12, 30}}

–現在のカレンダーで指定年月の日数を返す
on getMlenInternational(aYear as integer, aMonth as integer)
  set theNSCalendar to current application’s NSCalendar’s currentCalendar() — do *not* use initWithCalendarIdentifier:
  
set theDate to theNSCalendar’s dateWithEra:1 |year|:aYear |month|:aMonth |day|:1 hour:0 minute:0 |second|:0 nanosecond:0
  
set theResult to theNSCalendar’s rangeOfUnit:(current application’s NSDayCalendarUnit) inUnit:(current application’s NSMonthCalendarUnit) forDate:theDate
  
return |length| of theResult
end getMlenInternational

–指定年の指定月の日数を求める
on getMlen(aYear, aMonth)
  set aYear to aYear as number
  
set aMonth to aMonth as number
  
  
set aDat to (aYear as text) & "/" & (aMonth as text) & "/1"
  
if aMonth is 12 then
    set eDat to ((aYear + 1) as text) & "/" & (1 as text) & "/1"
  else
    set eDat to ((aYear as text) & "/" & (aMonth + 1) as text) & "/1"
  end if
  
  
set eDat to date eDat
  
set eDat to eDat – 1
  
  
set mLen to day of eDat
  
return mLen
end getMlen

★Click Here to Open This Script 

(Visited 68 times, 1 visits today)
Posted in Calendar History | Tagged 10.13savvy 10.14savvy 10.15savvy | 1 Comment

path to temporary items

Posted on 1月 6, 2020 by Takaaki Naganoya

AppleScript users ML上で2016/10/16〜18に行われていた議論の内容を自分でも再確認しました(Thanks Yvan!)。一時フォルダの場所を求める「path to temporary items」の値が、macOS 10.12から変更になっています。


▲AppleScript Users ML上の議論のフロー(Mail Flow Visualizerによりバッチ出力。つまり、Mail.app上で出力フローを選択してAppleScriptでフロー図出力しています)

AppleScript標準装備の「path to」コマンドは、Classic MacOS環境からMac OS X環境に移行した後に重要度が上がったコマンドです。OS側が用意している特別な意味を持つフォルダの場所を返してくれます。

とくに、(いまさらですが)Mac OS X環境はマルチユーザー環境なので、とくにPicturesとかDocumentsとかDesktopとかの特別なフォルダのパスを求める機能は基礎的ではあるものの、とても重要です。このあたりをめんどくさがってなんでもかんでも固定パスで書きたがる人を見かけたことがありますが、その人が書いたプログラムは他のユーザー環境で動かなくて苦労していました(本人ではなく周囲の人々が)。

AdobeのCS/CCアプリケーションのサンプルAppleScriptでも固定パスで書かれたものを多数見かけましたが、あれはなんだったんでしょう。

ドメイン

もともと、path toコマンドにより求められる各種パスには、

system domain:/System 
network domain:/Network
user domain:~

などのほか、

local domain:/Library
Classic domain: Classic Mac OSのシステムフォルダ(Classic環境をサポートするOS&ハードウェアの組み合わせ上でのみ有効)

などの「ドメイン」が指定できることになっていました。system domainはOSのSystemが利用、User domainはユーザーのホームフォルダ以下。network domainはmacOSのNetBootが廃止/他の機能への移行対象となっている(すでに、iMac ProではNetBoot非サポート)ほか、そのような環境下にないと有意な結果が得られません。

作業用一時フォルダtemporary items

ドメインの区分けが存在するものの、これらの区分のうちClassic domainははるかかなた昔に消滅、network domainも使ったことのあるユーザーは稀(まれ)でしょう。

そんな中、作業用の一時フォルダの場所を求める「path to temporary items」の仕様がmacOS 10.12で変更になっていました。

テンポラリフォルダの特性ゆえに、細かいディレクトリ名はユーザー環境ごと、実行時ごとに微妙に異なりますが(赤字部分が変化する部分)、上の図では(↑)どのあたりに作られるのかという点に着目して色分けしてみました。

macOS 10.12以降では、user domainでもsystem domainでも同じような場所が指定されることになることがわかります。

ちなみに、Cocoaの機能を用いて求められる一時フォルダはまた別の場所が示されています。

use framework "Foundation"

current application’s NSTemporaryDirectory() as text
–> "/var/folders/h4/jfhlwst88xl9z0001s7k9vk00000gr/T/"

★Click Here to Open This Script 

(Visited 207 times, 1 visits today)
Posted in File path History | Tagged 10.12savvy 10.13savvy 10.14savvy 10.15savvy | Leave a comment

Mojaveに合わせて「Mac OS XのバージョンとAppleScriptの動向の年表」を改定

Posted on 10月 4, 2018 by Takaaki Naganoya

電子書籍「AppleScript最新10大技術」に掲載の「Mac OS X/OS X/macOSのバージョンとAppleScriptの動向」の表を現在最新のmacOS 10.14に合わせて改定してみました。

macOS 10.12を歴史的な観点から再評価し、「セキュリティ至上主義期」のはじまりと位置づけた点が大きく異なります。

同バージョンでAppleScriptドロップレットへのファイル受け渡しがファイルの拡張属性(Xattr)「com.apple.quarantine」によって制御されるようになり、受け渡しの順番が変わったり、ユーザーの手によって確認されていないファイルはドロップレット処理時に無視されるなど、機能不全が目につくようになりました(10.13はOS自体が機能不全の塊なので評価に値しません)。

macOS 10.12自体にはその解消を行うための機能が用意されていないことから、この時期から「セキュリティを向上させることが最優先、既存機能に不具合が出ても整合性を維持するつもりがない」という現在のティム・クックCEO体制下における「動かないコンピュータ至上主義」(セキュリティ的には動かないコンピュータが最高だぜ!)ともいえる方針に沿った改変が行われていることを感じます。

ただし、最新のmacOS 10.14においてはシステム環境設定の「セキュリティ&プライバシー>オートメーション」の項目で、ホームディレクトリ以下のファイルにアクセスする権限を与える「フルディスクアクセス」の項目、およびアプリケーション間通信を許可する「オートメーション」の項目によって明示的に許可を行うようになった点は前進と言えるのかもしれません。

AppleScriptアプレットにおいてもこれらの制限機能による影響を受けるようになったわけですが、CodeSignすればいちいち「フルディスクアクセス」「オートメーション」項目の認証を必要としないため(CodeSignしても初回のみ聞かれる)、プロのAppleScript開発者はいままでどおりCodeSignすることで問題を回避できるはずです。

未確認ではあるものの、Terminal.appもMojaveの「フルディスクアクセス」管理下にあり、デフォルト状態ではホームディレクトリ下のファイルのcatやlsなども行えないとのこと(手動で登録すれば操作できるようになるとのこと)で、do shell scriptコマンドがどのような扱いになっているかが問題です。

なお、AppleはまだAppleScript Release Notesの「10.14 Changes」を公開しておらず、未完の作業が存在していることをうかがわせる(macOS 10.14.0はRelease版といいつつもGMビルドを公開しなかったなど、明らかにBetaレベルの仕上がり)状態です。
→ 後日、リリースノートが「macOS Mojave 10.14 Release Notes」に統合されていることが明らかになりました

Mac OS X/OS X/macOSのバージョンとAppleScriptの動向

OSバージョン 内容
10.1〜10.2 Classic Mac OSからの移行期(Classic Mac OSからMac OS Xへの移行)
10.3〜10.4 移行混乱期(Classic Mac OSからMac OS X、CarbonからCocoa、PowerPCからIntel x32)
10.5〜10.6 安定期(Mac OS Xとしての当初の目標レベルに到達?)
10.7〜10.8 制限化、64ビット(Intel x64)移行、iOS連携強化期。Carbon系の32ビット補助アプリケーションの切り捨て
10.9〜10.11 次世代準備期。「次の10年を担う機能」の実装開始。過去のバージョンとの互換性よりも、機能強化に舵をきった?
10.12〜10.14 セキュリティ至上主義期。別名、「アプレット迫害期」。セキュリティ向上のためなら、OS上の各種機能の不具合が起こることもやむなし、という方向性が強まった。アプレットやドロップレットにセキュリティ上の制限がかかり、解決する方法が提供されるまでに時間がかかるようになった。10.14でシステム環境設定の「セキュリティとプライバシー>オートメーション」項目に、「フルディスクアクセス」「オートメーション」の2項目を新設してアプレットへの制御権限のコントロールを行うようになった。OSAXの事実上の廃止。
10.15 32bitアプリケーションの起動禁止
11.0(10.16) iOSアプリケーションとの混在。ASからの操作が可能なものも?
(Visited 196 times, 2 visits today)
Posted in History | Tagged 10.14savvy | Leave a comment

電子書籍(PDF)をオンラインストアで販売中!

Google Search

Popular posts

  • AppleScriptによるWebブラウザ自動操縦ガイド
  • macOS 13, Ventura(継続更新)
  • ドラッグ&ドロップ機能の未来?
  • macOS 12.x上のAppleScriptのトラブルまとめ
  • PFiddlesoft UI Browserが製品終了に
  • macOS 12.3 beta 5、ASの障害が解消される(?)
  • SF Symbolsを名称で指定してPNG画像化
  • 新刊発売:AppleScriptによるWebブラウザ自動操縦ガイド
  • macOS 12.3上でFinder上で選択中のファイルをそのままオープンできない件
  • Pixelmator Pro v2.4.1で新機能追加+AppleScriptコマンド追加
  • Safariで表示中のYouTubeムービーのサムネイル画像を取得
  • macOS 12のスクリプトエディタで、Context Menu機能にバグ
  • 人類史上初、魔導書の観点から書かれたAppleScript入門書「7つの宝珠」シリーズ開始?!
  • UI Browserがgithub上でソース公開され、オープンソースに
  • macOS 12.5(21G72)がリリースされた!
  • Pages v12に謎のバグ。書類上に11枚しか画像を配置できない→解決
  • 新発売:AppleScriptからSiriを呼び出そう!
  • iWork 12.2がリリースされた
  • macOS 13 TTS Voice環境に変更
  • NSCharacterSetの使い方を間違えた

Tags

10.11savvy (1102) 10.12savvy (1243) 10.13savvy (1391) 10.14savvy (586) 10.15savvy (434) 11.0savvy (274) 12.0savvy (174) 13.0savvy (34) CotEditor (60) Finder (47) iTunes (19) Keynote (97) NSAlert (60) NSArray (51) NSBezierPath (18) NSBitmapImageRep (21) NSBundle (20) NSButton (34) NSColor (51) NSDictionary (27) NSFileManager (23) NSFont (18) NSImage (42) NSJSONSerialization (21) NSMutableArray (62) NSMutableDictionary (21) NSPredicate (36) NSRunningApplication (56) NSScreen (30) NSScrollView (22) NSString (118) NSURL (97) NSURLRequest (23) NSUTF8StringEncoding (30) NSUUID (18) NSView (33) NSWorkspace (20) Numbers (55) Pages (36) Safari (41) Script Editor (20) WKUserContentController (21) WKUserScript (20) WKWebView (23) WKWebViewConfiguration (22)

カテゴリー

  • 2D Bin Packing
  • 3D
  • AirDrop
  • AirPlay
  • Animation
  • AppleScript Application on Xcode
  • beta
  • Bluetooth
  • Books
  • boolean
  • bounds
  • Bug
  • Calendar
  • call by reference
  • Clipboard
  • Code Sign
  • Color
  • Custom Class
  • dialog
  • drive
  • exif
  • file
  • File path
  • filter
  • folder
  • Font
  • Font
  • GAME
  • geolocation
  • GUI
  • GUI Scripting
  • Hex
  • History
  • How To
  • iCloud
  • Icon
  • Image
  • Input Method
  • Internet
  • iOS App
  • JavaScript
  • JSON
  • JXA
  • Keychain
  • Keychain
  • Language
  • Library
  • list
  • Locale
  • Machine Learning
  • Map
  • Markdown
  • Menu
  • Metadata
  • MIDI
  • MIME
  • Natural Language Processing
  • Network
  • news
  • Noification
  • Notarization
  • Number
  • Object control
  • OCR
  • OSA
  • PDF
  • Peripheral
  • PRODUCTS
  • QR Code
  • Raw AppleEvent Code
  • Record
  • recursive call
  • regexp
  • Release
  • Remote Control
  • Require Control-Command-R to run
  • REST API
  • Review
  • RTF
  • Sandbox
  • Screen Saver
  • Script Libraries
  • sdef
  • search
  • Security
  • selection
  • shell script
  • Shortcuts Workflow
  • Sort
  • Sound
  • Spellchecker
  • Spotlight
  • SVG
  • System
  • Tag
  • Telephony
  • Text
  • Text to Speech
  • timezone
  • Tools
  • Update
  • URL
  • UTI
  • Web Contents Control
  • WiFi
  • XML
  • XML-RPC
  • イベント(Event)
  • 未分類

アーカイブ

  • 2023年3月
  • 2023年2月
  • 2023年1月
  • 2022年12月
  • 2022年11月
  • 2022年10月
  • 2022年9月
  • 2022年8月
  • 2022年7月
  • 2022年6月
  • 2022年5月
  • 2022年4月
  • 2022年3月
  • 2022年2月
  • 2022年1月
  • 2021年12月
  • 2021年11月
  • 2021年10月
  • 2021年9月
  • 2021年8月
  • 2021年7月
  • 2021年6月
  • 2021年5月
  • 2021年4月
  • 2021年3月
  • 2021年2月
  • 2021年1月
  • 2020年12月
  • 2020年11月
  • 2020年10月
  • 2020年9月
  • 2020年8月
  • 2020年7月
  • 2020年6月
  • 2020年5月
  • 2020年4月
  • 2020年3月
  • 2020年2月
  • 2020年1月
  • 2019年12月
  • 2019年11月
  • 2019年10月
  • 2019年9月
  • 2019年8月
  • 2019年7月
  • 2019年6月
  • 2019年5月
  • 2019年4月
  • 2019年3月
  • 2019年2月
  • 2019年1月
  • 2018年12月
  • 2018年11月
  • 2018年10月
  • 2018年9月
  • 2018年8月
  • 2018年7月
  • 2018年6月
  • 2018年5月
  • 2018年4月
  • 2018年3月
  • 2018年2月

https://piyomarusoft.booth.pm/items/301502

メタ情報

  • 登録
  • ログイン
  • 投稿フィード
  • コメントフィード
  • WordPress.org

Forum Posts

  • 人気のトピック
  • 返信がないトピック

メタ情報

  • 登録
  • ログイン
  • 投稿フィード
  • コメントフィード
  • WordPress.org
Proudly powered by WordPress
Theme: Flint by Star Verte LLC