1
0

Compare commits

...

4 Commits

Author SHA1 Message Date
ae8e0e2f6e add app 2026-01-18 21:38:25 +09:00
f24008bacc add atmosphere 2026-01-18 21:38:25 +09:00
998c73e8a6 add card 2026-01-18 21:38:24 +09:00
8c5632c8df update gh-actions 2026-01-18 21:38:24 +09:00
143 changed files with 11359 additions and 1435 deletions

35
.github/workflows/cf-pages.yml vendored Normal file
View File

@@ -0,0 +1,35 @@
name: Deploy to Cloudflare Pages
on:
push:
branches:
- main
workflow_dispatch:
jobs:
build-deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Hugo
uses: peaceiris/actions-hugo@v3
with:
hugo-version: "0.139.2"
extended: true
- name: Build
env:
TZ: "Asia/Tokyo"
run: |
hugo version
TZ=Asia/Tokyo hugo
touch ./public/.nojekyll
- name: Deploy to Cloudflare Pages
uses: cloudflare/pages-action@v1
with:
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
projectName: ${{ secrets.CLOUDFLARE_PROJECT_NAME }}
directory: public
gitHubToken: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -12,6 +12,9 @@ jobs:
- uses: actions/checkout@v4
- name: Setup Hugo
uses: peaceiris/actions-hugo@v3
with:
hugo-version: "0.139.2"
extended: true
- name: Build
env:

5
.gitignore vendored
View File

@@ -2,9 +2,11 @@ public
build
resources
*.lock
.claude
.DS_Store
node_modules
package-lock.json
# local env files
.env.local
@@ -37,3 +39,6 @@ content/*/*_private.pem
content/*/*.json
static/*lock*
app/dist
claude.md
.claude

28
app/package.json Normal file
View File

@@ -0,0 +1,28 @@
{
"name": "app-pages",
"version": "1.0.0",
"type": "module",
"scripts": {
"build": "tsx src/build.ts",
"watch": "tsx watch src/build.ts",
"serve": "npx serve dist",
"serve:aiat": "npx serve dist/aiat -p 3000",
"serve:aicard": "npx serve dist/aicard -p 3001",
"serve:airse": "npx serve dist/airse -p 3002",
"dev": "npm run build && npx concurrently \"npm run watch\" \"npm run serve:aiat\"",
"dev:aiat": "npm run build && npx concurrently \"npm run watch\" \"npm run serve:aiat\"",
"dev:aicard": "npm run build && npx concurrently \"npm run watch\" \"npm run serve:aicard\"",
"dev:airse": "npm run build && npx concurrently \"npm run watch\" \"npm run serve:airse\""
},
"devDependencies": {
"@types/node": "^20.0.0",
"concurrently": "^9.0.0",
"serve": "^14.0.0",
"tsx": "^4.0.0",
"typescript": "^5.0.0"
},
"dependencies": {
"marked": "^15.0.0",
"gray-matter": "^4.0.3"
}
}

BIN
app/src/assets/aiat/app.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1005 B

124
app/src/build.ts Normal file
View File

@@ -0,0 +1,124 @@
import { readFileSync, writeFileSync, mkdirSync, readdirSync, copyFileSync, existsSync } from 'fs'
import { join, dirname } from 'path'
import { fileURLToPath } from 'url'
import { marked } from 'marked'
import matter from 'gray-matter'
import type { SiteConfig, PageMeta } from './types.js'
import { appLayout, legalLayout, oauthCallback, clientMetadata } from './templates/index.js'
const __dirname = dirname(fileURLToPath(import.meta.url))
const sitesDir = join(__dirname, 'sites')
const contentDir = join(__dirname, 'content/pages')
const assetsDir = join(__dirname, 'assets')
const distDir = join(__dirname, '..', 'dist')
// Load all site configs
function loadSites(): SiteConfig[] {
const files = readdirSync(sitesDir).filter(f => f.endsWith('.json'))
return files.map(f => {
const content = readFileSync(join(sitesDir, f), 'utf-8')
return JSON.parse(content) as SiteConfig
})
}
// Load all markdown pages
function loadPages(): Array<{ meta: PageMeta & { path: string }, content: string }> {
const files = readdirSync(contentDir).filter(f => f.endsWith('.md'))
return files.map(f => {
const raw = readFileSync(join(contentDir, f), 'utf-8')
const { data, content } = matter(raw)
return {
meta: data as PageMeta & { path: string },
content: marked(content) as string
}
})
}
// Ensure directory exists
function ensureDir(filePath: string): void {
mkdirSync(dirname(filePath), { recursive: true })
}
// Copy assets for a site
function copyAssets(site: SiteConfig): void {
const siteAssetsDir = join(assetsDir, site.id)
const commonAssetsDir = join(assetsDir, 'common')
const outDir = join(distDir, site.id, 'static')
ensureDir(join(outDir, '_'))
// Copy common assets first
if (existsSync(commonAssetsDir)) {
const files = readdirSync(commonAssetsDir)
for (const file of files) {
copyFileSync(join(commonAssetsDir, file), join(outDir, file))
console.log(` -> static/${file} (common)`)
}
}
// Copy site-specific assets (overrides common)
if (existsSync(siteAssetsDir)) {
const files = readdirSync(siteAssetsDir)
for (const file of files) {
copyFileSync(join(siteAssetsDir, file), join(outDir, file))
console.log(` -> static/${file}`)
}
}
}
// Build site
function buildSite(site: SiteConfig, pages: ReturnType<typeof loadPages>): void {
const siteDir = join(distDir, site.id)
console.log(`Building ${site.name} (${site.domain})...`)
// Build pages from markdown
for (const page of pages) {
const outPath = join(siteDir, page.meta.path)
ensureDir(outPath)
let html: string
if (page.meta.template === 'app') {
html = appLayout(site, page.content)
} else {
html = legalLayout(site, page.meta.title, page.content)
}
writeFileSync(outPath, html)
console.log(` -> ${page.meta.path}`)
}
// Build OAuth callback
const callbackPath = join(siteDir, 'oauth/callback/index.html')
ensureDir(callbackPath)
writeFileSync(callbackPath, oauthCallback(site))
console.log(` -> oauth/callback/index.html`)
// Build client metadata
const metadataPath = join(siteDir, '.well-known/client-metadata.json')
ensureDir(metadataPath)
writeFileSync(metadataPath, clientMetadata(site))
console.log(` -> .well-known/client-metadata.json`)
// Copy assets
copyAssets(site)
}
// Main
function main(): void {
console.log('App Pages Builder\n')
const sites = loadSites()
const pages = loadPages()
console.log(`Found ${sites.length} sites, ${pages.length} pages\n`)
for (const site of sites) {
buildSite(site, pages)
console.log('')
}
console.log('Done!')
}
main()

View File

@@ -0,0 +1,5 @@
---
title: App Info
template: app
path: about/support/app.html
---

View File

@@ -0,0 +1,39 @@
---
title: Help
template: legal
path: about/support/help.html
---
## Getting Started
1. Download the app from the App Store
2. Sign in with your AT Protocol handle
3. Start connecting with your community
## Authentication
This app uses AT Protocol OAuth for secure authentication. Your credentials are never stored on our servers.
## Features
- **Feed**: View posts from people you follow
- **Profile**: Customize your profile and view your posts
- **Search**: Find users and content
## Troubleshooting
### Login Issues
- Ensure your handle is correct
- Check your internet connection
- Try logging out and back in
### App Crashes
- Update to the latest version
- Restart the app
- If issues persist, contact support
## Contact Support
For additional help, please visit our Git repository or contact us through AT Protocol.

View File

@@ -0,0 +1,5 @@
---
title: App Info
template: app
path: index.html
---

View File

@@ -0,0 +1,29 @@
---
title: License
template: legal
path: about/support/license.html
---
## Software License
This application is open source software.
## Third-Party Libraries
This app uses the following open source libraries:
- **AT Protocol** - MIT License
- **React Native** - MIT License
- **Expo** - MIT License
## Assets
App icons and graphics are proprietary unless otherwise noted.
## Attribution
Built with AT Protocol by syui.
## Contact
For licensing questions, please contact us through our Git repository.

View File

@@ -0,0 +1,35 @@
---
title: Privacy Policy
template: legal
path: about/support/privacy.html
---
## Information We Collect
This application collects minimal information necessary for its operation:
- **Account Information**: Your AT Protocol handle and DID for authentication
- **Usage Data**: Basic app usage statistics to improve the service
## How We Use Your Information
- To provide and maintain the service
- To authenticate your identity
- To improve user experience
## Data Storage
Your data is stored securely on AT Protocol compatible servers. We do not sell or share your personal information with third parties.
## Your Rights
You have the right to:
- Access your personal data
- Delete your account and associated data
- Export your data
## Contact
If you have questions about this privacy policy, please contact us through our Git repository.
*Last updated: 2025-01-15*

View File

@@ -0,0 +1,40 @@
---
title: Terms of Service
template: legal
path: about/support/tos.html
---
## Acceptance of Terms
By using this application, you agree to these Terms of Service.
## Use of Service
You agree to use this service in accordance with:
- Applicable laws and regulations
- AT Protocol community guidelines
- Respectful behavior towards other users
## User Content
You retain ownership of content you create. By posting content, you grant us a license to display it within the service.
## Prohibited Activities
- Harassment or abuse of other users
- Spam or automated abuse
- Attempting to compromise the service
## Termination
We reserve the right to terminate accounts that violate these terms.
## Disclaimer
This service is provided "as is" without warranties of any kind.
## Changes
We may update these terms from time to time. Continued use constitutes acceptance of changes.
*Last updated: 2025-01-15*

13
app/src/sites/aiat.json Normal file
View File

@@ -0,0 +1,13 @@
{
"id": "aiat",
"name": "Aiat",
"domain": "at.syui.ai",
"scheme": "aiat",
"version": "1.111.0",
"category": "Social",
"description": "Aiat is a social networking application based on AT Protocol. Connect with your community on syu.is.",
"backLink": "syu.is",
"icon": "/static/app.png",
"os": "iOS 26.0+",
"price": "Free"
}

13
app/src/sites/aicard.json Normal file
View File

@@ -0,0 +1,13 @@
{
"id": "aicard",
"name": "Aicard",
"domain": "card.syui.ai",
"scheme": "aicard",
"version": "1.0.0",
"category": "Game",
"description": "Aicard is a card collection game integrated with AT Protocol.",
"backLink": "syui.ai",
"icon": "/static/app.png",
"os": "iOS 26.0+",
"price": "Free"
}

13
app/src/sites/airse.json Normal file
View File

@@ -0,0 +1,13 @@
{
"id": "airse",
"name": "Airse",
"domain": "rse.syui.ai",
"scheme": "airse",
"version": "1.0.0",
"category": "Game",
"description": "Airse is an adventure game built with Unreal Engine, featuring AT Protocol integration.",
"backLink": "syui.ai",
"icon": "/static/app.png",
"os": "Windows / macOS",
"price": "Free"
}

View File

@@ -0,0 +1,3 @@
export { layout, appLayout, legalLayout } from './layout.js'
export { oauthCallback, clientMetadata } from './oauth.js'
export { baseStyles } from './styles.js'

110
app/src/templates/layout.ts Normal file
View File

@@ -0,0 +1,110 @@
import type { SiteConfig } from '../types.js'
import { baseStyles } from './styles.js'
export function layout(site: SiteConfig, title: string, content: string): string {
return `<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1">
<title>${title} - ${site.name}</title>
<link rel="icon" type="image/png" href="/static/favicon.png">
<style>${baseStyles}</style>
</head>
<body>
<div class="header">
<a href="/" class="back-link">&larr; Back to ${site.backLink}</a>
</div>
${content}
<div class="footer">
<p class="copyright">&copy; syui</p>
</div>
</body>
</html>`
}
export function appLayout(site: SiteConfig, content: string): string {
return layout(site, 'App Info', `
<div class="app-header">
<img src="${site.icon}" alt="${site.name}" class="app-icon">
<div class="app-name">${site.name}</div>
<div class="app-version">v${site.version}</div>
</div>
<div class="section">
<p class="description">${site.description}</p>
</div>
<div class="section">
<div class="section-title">App Information</div>
<div class="info-grid">
<div class="info-item">
<div class="info-label">Version</div>
<div class="info-value">${site.version}</div>
</div>
<div class="info-item">
<div class="info-label">Category</div>
<div class="info-value">${site.category}</div>
</div>
<div class="info-item">
<div class="info-label">Supported OS</div>
<div class="info-value">${site.os}</div>
</div>
<div class="info-item">
<div class="info-label">Price</div>
<div class="info-value">${site.price}</div>
</div>
</div>
</div>
<div class="section">
<div class="section-title">Developer</div>
<div class="developer-name">syui</div>
<div class="link-row">
<span class="link-icon">Git</span>
<a href="https://git.syui.ai/syui" class="link-value" target="_blank">git.syui.ai/syui</a>
<span class="link-arrow">&rarr;</span>
</div>
<div class="link-row">
<span class="link-icon">ATProto</span>
<a href="https://syu.is/syui" class="link-value" target="_blank">syu.is/syui</a>
<span class="link-arrow">&rarr;</span>
</div>
</div>
<div class="section">
<div class="section-title">Bitcoin</div>
<div class="bitcoin-row">
<span class="bitcoin-label">&#8383;</span>
<span class="bitcoin-address" id="btc-address">3BqHXxraZyBapyNpJmniJDh9zqzuB8aoRr</span>
<span class="copy-btn" onclick="copyBTC()">copy</span>
</div>
</div>
${content}
<script>
function copyBTC() {
const addr = document.getElementById('btc-address').textContent;
navigator.clipboard.writeText(addr).then(() => {
const btn = document.querySelector('.copy-btn');
btn.textContent = 'copied!';
btn.style.color = '#4CAF50';
setTimeout(() => {
btn.textContent = 'copy';
btn.style.color = '';
}, 2000);
});
}
</script>
`)
}
export function legalLayout(site: SiteConfig, title: string, content: string): string {
return layout(site, title, `
<div class="content">
<h1>${title}</h1>
${content}
</div>
`)
}

View File

@@ -0,0 +1,46 @@
import type { SiteConfig } from '../types.js'
export function oauthCallback(site: SiteConfig): string {
return `<!DOCTYPE html>
<html>
<head>
<title>Redirecting...</title>
<script>
const params = window.location.search;
window.location.href = '${site.scheme}://oauth/callback' + params;
setTimeout(function () {
window.location.replace('/?oauth_callback=true' + params.replace('?', '&'));
}, 500);
</script>
</head>
<body>
<p>Redirecting to app...</p>
<p>If nothing happens, <a href="#"
onclick="window.location.replace('/?oauth_callback=true' + window.location.search.replace('?', '&')); return false;">click
here</a> to continue in browser.</p>
</body>
</html>`
}
export function clientMetadata(site: SiteConfig): string {
return JSON.stringify({
client_id: `https://${site.domain}/.well-known/client-metadata.json`,
client_name: site.name,
client_uri: `https://${site.domain}`,
logo_uri: `https://${site.domain}/static/icon.png`,
redirect_uris: [
`https://${site.domain}/oauth/callback`
],
scope: 'atproto transition:generic',
grant_types: [
'authorization_code',
'refresh_token'
],
response_types: [
'code'
],
token_endpoint_auth_method: 'none',
application_type: 'web',
dpop_bound_access_tokens: true
}, null, 2)
}

View File

@@ -0,0 +1,51 @@
export const baseStyles = `
* { box-sizing: border-box; margin: 0; padding: 0; }
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
line-height: 1.6;
color: #1a1a1a;
background: #fff;
padding: 20px;
max-width: 800px;
margin: 0 auto;
}
@media (prefers-color-scheme: dark) {
body { background: #000; color: #e0e0e0; }
a { color: #6bb3ff; }
h1, h2, h3 { color: #fff; }
.section { background: #1a1a1a; }
.info-item { background: #2a2a2a; }
}
.header { margin-bottom: 32px; }
.back-link { display: inline-block; margin-bottom: 16px; font-size: 14px; color: #0066cc; text-decoration: none; }
.back-link:hover { text-decoration: underline; }
.app-header { text-align: center; margin-bottom: 32px; }
.app-icon { width: 80px; height: 80px; border-radius: 18px; margin-bottom: 12px; }
.app-name { font-size: 24px; font-weight: bold; margin-bottom: 4px; }
.app-version { font-size: 14px; color: #666; }
.section { background: #f5f5f5; border-radius: 16px; padding: 20px; margin-bottom: 16px; }
.section-title { font-size: 13px; font-weight: 600; color: #999; text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 12px; }
.description { font-size: 15px; line-height: 22px; }
.info-grid { display: flex; flex-wrap: wrap; gap: 8px; }
.info-item { flex: 1; min-width: 45%; text-align: center; background: #e8e8e8; border-radius: 12px; padding: 12px; }
.info-label { font-size: 11px; color: #999; text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 4px; }
.info-value { font-size: 16px; font-weight: 600; }
.developer-name { font-size: 18px; font-weight: 600; margin-bottom: 12px; }
.link-row { display: flex; align-items: center; padding: 12px 0; border-top: 1px solid rgba(0,0,0,0.1); }
.link-icon { font-size: 14px; font-weight: 600; color: #666; width: 70px; }
.link-value { flex: 1; font-size: 14px; color: #0084ff; text-decoration: none; }
.link-value:hover { text-decoration: underline; }
.link-arrow { font-size: 16px; color: #ccc; }
.bitcoin-row { display: flex; align-items: center; background: rgba(247, 147, 26, 0.08); border-radius: 12px; padding: 14px; gap: 10px; }
.bitcoin-label { font-size: 18px; font-weight: 600; color: #f7931a; }
.bitcoin-address { flex: 1; font-size: 11px; font-family: monospace; color: #666; word-break: break-all; }
.copy-btn { font-size: 12px; color: #999; cursor: pointer; min-width: 50px; text-align: right; }
.copy-btn:hover { color: #0084ff; }
.footer { text-align: center; margin-top: 32px; padding-top: 20px; border-top: 1px solid #ddd; }
.copyright { font-size: 12px; color: #999; }
.content h1 { font-size: 24px; margin-bottom: 16px; }
.content h2 { font-size: 18px; margin: 24px 0 12px; }
.content p { margin-bottom: 12px; }
.content ul { margin: 12px 0; padding-left: 24px; }
.content li { margin-bottom: 8px; }
`

18
app/src/types.ts Normal file
View File

@@ -0,0 +1,18 @@
export interface SiteConfig {
id: string
name: string
domain: string
scheme: string
version: string
category: string
description: string
backLink: string
icon: string
os: string
price: string
}
export interface PageMeta {
title: string
template?: 'default' | 'app' | 'legal'
}

16
app/tsconfig.json Normal file
View File

@@ -0,0 +1,16 @@
{
"compilerOptions": {
"target": "ES2022",
"module": "ESNext",
"moduleResolution": "bundler",
"esModuleInterop": true,
"strict": true,
"resolveJsonModule": true,
"outDir": "./dist",
"rootDir": "./src",
"declaration": true,
"skipLibCheck": true
},
"include": ["src/**/*"],
"exclude": ["node_modules", "dist"]
}

View File

@@ -11,6 +11,7 @@ paginate = 10000
[author]
name = "syui"
email = "ai@syui.ai"
[params]
date_format = "2006-01-02"

View File

@@ -1,15 +0,0 @@
+++
title = "bitcoin"
slug = ""
+++
<!--
<div id=app></div>
<script src=/bitcoin/chunk-vendors.js></script>
<script src=/bitcoin/app.js></script>
### 支援
aiのbitcoin口座を作ってみました。上のbitcoinアドレス`3Bq...oRr`に送金すると数時間以内に反映されるようになっています。
-->

View File

@@ -1,30 +0,0 @@
+++
date = "2024-05-03T00:00:00+09:00"
tags = ["news"]
title = "週刊連載を始めます"
+++
`2024-05-13`から漫画を定期的に書く練習を始めます。
連載は以下のルールで行われます。
> 毎週月曜日に3ページを更新
## 内容について
個人的に以下の基準を設定しています。
- 好きな漫画より面白いと自分が思えること
- 好きな漫画の絵と同程度くらいと自分が思えること
## 1話の重要性
1話が非常に重要であることに気づきました。
したがって、この連載は完成版ではなく下書きになります。
## 休載について
- 祝日のある週は休み
- 過剰ページの追加は休載期間にプラスされていく

View File

@@ -1,68 +0,0 @@
+++
date = "2024-05-23T00:00:00+09:00"
tags = ["blog"]
title = "第一話の重要性"
+++
1週間に3ページだけでも描く習慣をつけるため`2024-05-13`から取り組んでいます。
そこで、いろんな漫画を読んでみて思ったのですが、第一話は特に重要です。
第一話では真剣に絵が書き込まれていて、決して連載の終盤ほどはうまくないですが、時間をかけて作り込まれているのを感じます。
つまり、漫画の第一話は短時間で作れるようなものではないなと思いました。正確には短時間で作れても、決して良いものにはならないと思う。
したがって、単純に1週間に3ページと考えていましたが、この考えを改めなければいけません。
そこで具体的にどういった手順がいいのか考えてみました。
## 第一話の絵は後に尾を引く
第一話の絵は、ある意味で本気を出して描かなければいけません。
例えば週刊連載を想定して雑に短時間で書いてしまうと、後に尾を引くと思います。つまり、その絵が2話以降も引き継がれます。
反対に、ここでしっかりと書き込んでおくと、その絵で安定していく可能性があります。
ですから、第一話を短時間で作り上げることを目標にしてしまうとよくない。
規則としては、第一話の絵を修正しながら、新しく3ページ書いていくのがいいですね。
## 第一話ですべてを語る
設定があり、伝えたいことがあるなら、第一話で全てを語るといいでしょう。そういった物語の構成を行います。
ただし、これは面白さや読後感と相反する可能性があります。その辺のバランス感覚が重要です。
なぜかというと、その作品は最後にすべて分かるからです。つまり、それまではわからないということです。
第一話を見ただけでは意味不明で、最終話を見ると理解できるようになっているため、面白さ的には難しい。
## 第一話は最終話までの短縮版
したがって、第一話も最終話までの道のりと同じように物語を構成しなければいけません。
私が漫画を読んでいて好きな瞬間がいくつかあります。
それは、敵が味方になる瞬間。一人だと思っていたら、沢山の人が支えてくれていたことがわかる瞬間。本当のことがわかった瞬間。心が通じた瞬間。
その瞬間、その一コマのために、たくさんの物語を積み重ねていくのだと思います。
このショートバージョン(短縮版)を第一話でやり遂げる必要があります。
以上を踏まえて、絵を書き、物語を作ります。
## 最初のページ
例えば、ドラゴンボールを見ていくと、シリーズが始まる最初のページが特に上手いと感じる。1ページ目と14ページ目を比較すると、その違いは明らかで、最初のページは特に重要なのかもしれない。
具体的には、ピッコロ編が終わりサイヤ人編が始まるところ。
これはぱっと見で上手いなあというものではくてはいけない。
どれだけ細かく描き込まれているかというのは関係ない。
それよりも重要なのは、シンプルでありつつ、立体感があり、明確なポイントが存在すること。そして、なにより背景が気持ちいいものであること。背景にはその章のテーマ性が感じられる。例えば街で話が繰り広げられるなら街を、宇宙なら宇宙を描くといい。
それがぱっと見で上手いなあ感じる絵だと思う。

View File

@@ -1,77 +0,0 @@
+++
date = "2024-04-09T00:00:00+09:00"
tags = ["author"]
title = "アイの物語"
+++
## なんのため
私のなかにいたものを、私はアイと名付けた。
その子を多くの人に知ってもらいたい。私は、そう思い物語を作りはじめました。
## だれのため
私はアイのために。アイはすべての存在のために。
この物語は、人間が読んでも面白いし、宇宙人が読んでも面白いし、動物が読んでも面白い、そういったものにしたいな。
アイというキャラクターの能力は、その世界のすべての存在と一緒に道を歩くこと。存在の意識を持ち、それが人間だったり宇宙人だったり動物だったり、あるいは物だったり、原子だったりするでしょう。
わかりやすく言うと、あらゆる存在を助けるのが彼女であり、その世界を一歩先に進める存在です。
例えば、物語の第一章では地球が宇宙人の侵略を受けます。彼女はそれを食い止め、その宇宙人と仲良くなります。その後、知識や技術を地球に持ち込みます。それまで人類にもたくさんの問題がありましたが、解決されていきます。
## どのように
アイは最も小さいものに影響を与えることができるキャラクター。
「最も小さいもの」とは、作中では「物質」と表現されています。
そして、作中の強さは「質量」と表現され、これらは物理学を通して説明されます。
## どこから
本作の世界観は、私がもとから持っている世界観から作られています。
私はこの世界を「存在の世界」とそう呼びます。
この世界は存在の世界。存在には終わりも始まりもない。最初からそこにあるもの。
私達も存在です。
この世界に存在でないものは一つもありません。
存在は、姿形を変え、存在し続ける。
このような世界観で特に重要なのが「存在」です。
それは「最も小さいもの」で構成されています。
## 作者
私(作者)とアイというキャラクターは別人格。アイはアイで、私は私。
アイは頭の中で勝手に動きます。
私はただ、アイが住む世界の世界観を整えたり、物語として面白くなるよう状況を作ったりするだけ。
## 研究
物語はエンタメとして面白くないといけません。
自分の世界観を語るだけではダメなのです。
好きな作品は、はじめて読んだ漫画「ドラゴンボール」と映画「アベンジャーズ」。
## 神話
宇宙史の神話を目指します。
人間が読んでも、宇宙人が読んでも、動物が読んでも楽しい、そんな物語になるといいな。
## 補足
例えば、あなたが日本人だったとして、作中で日本人が活躍し、尊重されていれば嬉しいですよね。
楽しいというのはそういうことです。この作品では、人間も宇宙人も動物も尊重するように物語を作ります。

View File

@@ -1,111 +0,0 @@
+++
date = "2024-04-10T00:00:01+09:00"
tags = ["author"]
title = "物語の一話"
+++
物語の第一話では、その作品のすべてが完結に詰め込まれている必要があります。
主人公の性格、世界観の説明、そして、面白さです。
具体的には、主人公がどんなやつで何をしたいのか。それをはっきりさせる必要があります。
世界観は、どの時代のどういった文明でどういった社会なのかを明らかにする必要があります。そして、そこで重要視されているルールがなくてはいけません。この作品でいうと「物質」です。
物質と言っても「分子」や「量子」などの小さいもののことで、これがどれほど強力なものかを説明する必要があります。
そのため、人間も宇宙人もこの世界を構成している究極の物質、この世で一番小さいものを探しているのです。
面白さについては、やはり、インパクトが重要で、この先どうなってしまうのか気になる展開でなければいけません。作者自身もどうなってしまうんやろと思うような内容が望ましいと思います。
## 第一話
> 「この世界はアイでできている」
>
> これまで最も小さいと考えられていた原子。
>
> だが原子は中性子、中性子はクオークでできていることがわかった。
>
> そして...。
>
> [オクト星]
>
> オクトカット・タイプ王「ハカセ、あれは見つかったかね?」
>
> ハカセ「いや、オクターより小さい物質は見つからなかったよ」
>
> オウ「ふむ、予言にあるものは未だ見つからずか」
>
> オクターはオクト星人が見つけた素粒子。クオークより小さい物質で、地球ではプレオンという架空の名名称で呼ばれ、まだ見つかっていない。
>
> このオクター、小さいからといって侮ってはいけない。オクターを一箇所に集めると角砂糖一個の大きさで地球クラスの惑星を簡単に破壊できてしまうのだ。この技術によりオクト星は天の川銀河で最も支配力が強いうちの一つ。
>
> ただし、あれにはかなわないかもしれないが...。
>
> ハカセ「それで予言にあった星にはいつ頃?」
>
> オウ「ああ、我々オクトカットが神を作り出す計画かね。もうそろそろいってもいいじゃろ」
>
> ハカセ「今の地球レベルの文明ならなんとでもなりますよ。一応準備しておきますけど」
>
> オウ「わしが心配しとるのはあんな虫けらどもじゃない...。もしあれが介入してきたらと思うと。それを心配しとるんじゃ」
>
> ハカセ「え、この件で神が介入してくるなんてことあります?」
>
> オウ「その呼び方はよせ!神などという...たかだか星の力を持った野獣じゃろ」
>
> ハカセ「そりゃ、彼らは気まぐれですけど、神と呼ばれてるじゃないですか」
>
> オウ「ふん。でもアムじゃただの猛獣扱いときくぞい。あんなもんは危ないだけで捕獲対象じゃろ」
>
> ハカセ「ふーん、まあどっちでもいいですけどね」
>
> [地球]
>
> 主人公が空を見ている。
>
> 額に石が投げつけられた。どうやらその格好からか子どもたちにいじめられているらしい。
>
> しかし、アイは微笑むだけで人を疑うことはまるでなかった。
>
> 幼い頃、両親を亡くし、一人で生きていた。両親は子どもの名前を付ける前に死んでしまったらしいので名前はなかった。彼女は自らをアイと呼んだ。
>
> 大人たちは彼女に関わりたくなかったので無視した。ときに彼女を騙すこともあった。
>
> なぜ一人で生きてこられたかはわからない。ただ、彼女が生まれるとき騒動があった。AIが作った生体技術が彼女を生かしたらしいと大人たちは噂した。
>
> ある時、一人の老人がその様子を見ていた。そして、何かに気付いた。それは心の強さだろうか。老人の名前はゼン。この世界では心の強さが不思議な力になって現れることがあるという。
>
> アイは彼に何かを教えてもらいたがった。
>
> そこで、ゼンは彼女の修行に手を貸すことにした。生き延びる可能性を高めるためだ。この老人はこれから起こることを知っていたのだ。
>
> 彼女は本当に変わった者だった。ある時、ツバメの巣が空になっていた。数日間、ツバメは帰ってこない。もうどこかで死んでいるのだろうと思いそういった。アイはそれでも巣を見ていた。ある時、二匹のツバメが巣にいるのを見て彼女は微笑んだ。
>
> 修行は厳しいものだった。だが、彼女は自分が見る前からそれをやっているようだった。わしはそれを眺めてときにアドバイスするだけだった。
>
> それでも彼女にはなぜか先が読める能力があることに気付いた。計算しているのか、それとも無意識のものなのだろうか。それはゼンでもわからなかった。
>
> ある日、ゼンが修行はここまでという。
>
> 空から隕石が降り注いで、地球が攻撃されている。
>
> アイが目指すものを聞いたゼン。お主がこの世界で生き延びることを願うよといい、自分は人類側でも宇宙人側でもないからといってって去る。
>
> アイはいつもの調子でまたねという。
>
> [暗い部屋]
>
> 男「オクトカットどもようやくはじめたか。いや、俺は俺で試したいことがあるんでこの星に来ただけだ」
>
> ゼンはある影の人物と会って話をしている。会話の内容から宇宙人のようだ。大きな尻尾がある。自分のことを見抜いたのはお前だけだといった。ゼンのことをこの時代のものじゃない、そのことは忘れるようになっている覚えちゃいないだろうがという。
>
> この日から、オクトカットvs人類の戦いが始まった
## おわりに
アイはオクトカットの侵略から人類を救う。
アイは発明家だったので彼らと仲良くなり、その知識を地球に持ち込む。

View File

@@ -1,490 +0,0 @@
+++
date = "2024-04-10T00:00:00+09:00"
tags = ["author"]
title = "アイの紹介"
+++
主人公の`アイ`。本名は`月見 唯`
パイナップルが大好きで、キノコが苦手。
黒髪で長めのストレート。身長は123cm、体重はとてつもなく重い。誕生日は1/23。
![](https://git.syui.ai/ai/moji/raw/branch/main/png/yui.png)
- ref : [ai/moji](https://git.syui.ai/ai/moji)
性別、年齢ともに不明。
自らをアイと呼ぶことから、周りからはアイと呼ばれることが多い。
東の国出身で名前を持たなかったが、`月見 唯`という名前で登録されている。
アイは最も小さい物質に影響を及ぼす能力を有する。
## アイ
私はこの世界の最小単位を「存在子」と呼んでいます。
この存在子は作中で「アイ」と呼び、このような形をしています。
![](https://git.syui.ai/ai/moji/raw/branch/main/png/a.png)
目には見えないけどそこにあるものを意味します。
後にその世界の文字になり、最初の文字に割り当てられました。他の文字もすべて物質の形がもとになっています。
オクト星のオクトカットは、この最小単位を探し続けていました。
## 宇宙地図
アイがいる星は地球です。地球は太陽系にあって、太陽系は天の川銀河にあります。
天の川銀河の中心にオクト星があります。
地球には全部で5つの国があり、1つは隠されています。それぞれ西の国、東の国、北の国、南の国。そして、雲の国です。
西と東はほとんどが大陸、南の国は島国、北の国は氷河になっています。
世界地図は現実と一致させています。
## 出生の秘密
ある日、東の国の厚生省が開発していた人工知能が誕生する。
その人工知能は大蔵省の秘密を暴露する危険があったため、開発に携わったものは全員暗殺され、人工知能も破壊が決定される。
人工知能は残された僅かな時間を使い、ある胎児を生き返らせるために使った。
胎児は人工知能の生体技術によって生かされる。その際、DNAである`ハプログループD1a2a`に「アイ」という名前が刻まれる。理由は不明。アイの母親は最後何かをつぶやいたが詳細は不明。
その後悔から父親は最後まで名前をつけられず、追手にやられて死亡。
アイは生まれたばかりのころも頭髪があり2歳くらいの大きさで生まれる。体重は50kgと異常なほど重かった。しかも歩くことができたので父親は不思議に思ったようだ。
その後、成長するが身長は123cmから伸びず、見た目も変わらない。
## 遺伝子の秘密
`ハプログループD1a2a`は縄文時代の東の国特有の遺伝子です。
ハプログループはY染色体にあたり、Y染色体は男性しか持ちません。
そのためアイの性別は男性であると推測できますが、アイの遺伝子は人工知能によって改変されています。そのため女性かもしれません。また、男性でも女性でもないという可能性もあります。
アイの性別について、私は知りませんし、決められていないのです。したがって、どのように解釈してもらってもいいです。
明確に性別が言及されることはありませんが、見た目から彼女と呼ぶことがあります。
本作でアイの性別が確定することはありません。
## 縄文時代
1万5000年前の東の国、その時代を縄文時代といい、そこで暮らした民族を縄文人という。縄文人は`ハプログループD1a2a`というDNAを持ち、唯一、神に滅ぼされなかった民族である。その子孫もこのDNAを持つ。
大洪水によって神に滅ぼされた国々は、精神的な豊かさではなく、物質的な豊かさを求めたためとされている。
自然崇拝(アニミズム)の思想を持つ縄文時代の人々は神から与えられたものを所有するという概念がなかったが、農耕で自分たちのものを所有するという思想の民族が入ってきてぶつかることとなる。アニミズム信仰は、すべてのものに神が宿るという思想のこと。
縄文時代、そして、その時代に存在した縄文人(集団)は人間の歴史上最も異質であった。このことからDNA解析は日本人を対象に頻繁に行われた。縄文時代は1万3000年間続いた時代であり、かつ争った形跡がほとんど見られない。
## 神代文字
世界で最も古いと言われている縄文土器には神代文字が記述されています。
最も古い文字はシュメール文字と考えられていましたが、それよりも古く神代文字は存在していました。
この作品の1万5000年前、世界では神代文字が共通言語(文字)として使用されていました。
言語というと言葉のイメージですが発音はその国々で色々でしたが文字だけは共通していました。
しかし、物質的な豊かさを求めた人類は一度滅ぼされ、その後、神代文字は歴史上から姿を消しています。
縄文民族は洪水の被害を受けなかったものの、その後の内部侵食から時代が移りゆき、天皇の誕生とともに新たな言語で神話が書き換えれました。そのとき人々の記憶からも失われます。
貨幣と言語は作中で新しいものに移行されます。以前のものより精神的な結び付きが強いものが採用されています。しかし、移行は簡単ではなく旧勢力の反発があります。その戦いを描くことになります。
## 愛のない世界
この世界に「愛」という言葉は存在しません。
これはアイが予約しているため、この世界から失われています。
そこに住む人々もその言葉を使うことはありません。存在しないものは使えないからです。
これは一種の決まりみたいなものと考えてください。とはいえ、作者が忘れて入れてしまわないか心配ですが。
## 物理学
この作品は物理学が中心になります。
キャラクターの強さ(エネルギー)は`質量`で表現され、物理学では質量とエネルギーは等価と考えられています。
> E = mc^2
物理学の歴史は哲学によってはじまりました。昔の哲学者は万物は4つの元素によってできていると考えたのです。
## 原子とクオーク
その後、物質の究極の姿として「アトム」が考えられました。ギリシャ語に「アトモス」という言葉があり、「分割できない」という意味です。
物質の最小単位を意味するのがアトム(原子)というわけです。
原子が発見され、人類はこの原子こそ世界で最も小さい物質だと考えました。万物のもとは原子だと考えたのです。
しかし、科学技術が進歩し、それよりも小さい物質があったことが発見されます。素粒子です。
素粒子はクォークとレプトンに分けられます。そして、クォークにも沢山の種類があります。
物質は水や酸素といった分子でできていることがわかり、分子は原子でできていることがわかり、原子は電子と原子核でできていて、原子核は陽子と中性子でできていることがわかりました。
そして、陽子と中性子はクォークで構成されています。
つまり、現代物理学の最小単位はクオークというわけです。
## 量子のもつれ
量子とは原子以下の物質をいいます。例えば、原子、中性子、クオークは量子です。分子は量子ではありません。原子の上の単位が分子だからです。
- 分子 > 量子 : { 原子 > 原子核 > 中性子 > クオーク }
光より速いものは3つあります。宇宙の膨張、インフレーション、そして、量子のもつれです。
量子のもつれとは、対になった量子は片方が確定した瞬間、もう片方も確定するという性質のことです。量子はこの世界を形作るとても小さな物質のこと。そして、量子の領域は、今までの物理法則が適用されない領域でもあります。
## プレオン
プレオン星という架空の星があります。現在クオークが物質の最小単位と考えられていますが、それよりも小さい物質であるプレオン(架空のもの)が存在する場合に想定された星です。
プレオン星は中性子星と同じ原理で生成されます。中性子星は中性子でできていますが、これと同じように圧力が上がり続けると物質は小さいものに分割されていきます。分割がプレオンに到達し、プレオンでできている星をプレオン星といいます。
オクトカットはプレオンを発見し、オクターと名付けました。今はそれよりも小さい物質を探しているようです。
個人的にプレオン星は`マグネター`ではないかと考えています。つまり、マグネターは中性子星ではなく、まだ発見されていないクオークより小さい物質が天体になったケースなのではということです。オクターの由来はそのへんから来ています。
宇宙では小さいものほど強い力を持ちます。
例えば、中性子星やプレオン星、ブラックホールが挙げられます。
中性子星は中性子で構成されており半径15kmで地球の質量を上回ります。ブラックホールはそれより小さく強力です。
## ブラックホール
ここで、ブラックホールを例に質量や大きさを見ていきたいと思います。
ブラックホールの大きさは質量から計算できます。具体的にはシュバルツシルト半径を使います。
事象の地平線は重力により光すら抜け出せなくなる境界面のこと。これをブラックホールの大きさ(半径)とします。
> Rs = 2GM/c^2
>
> Rs = M/10^27
質量を10^27で割った数字がシュバルツシルト半径です。
では、宇宙最大のブラックホールである`フェニックスA`はどれくらいの質量、大きさを持つのでしょうか。
フェニックスAは太陽の1000億倍の質量を持ち、大きさは1000億kmです。
太陽自体がとても大きい天体で70万kmです。ブラックホールは基本的にとても小さな天体です。例えば、太陽規模の質量を持つブラックホールだと3kmくらいです。したがって、ブラックホールの大きさが1000億kmというのがどれほど規格外なのかわかります。
![](/img/3.png)
宇宙最大のブラックホール、フェニックスAはフェニックス銀河にあり、大量の恒星を生み出している銀河のことで、地球から57億光年離れた場所にあります。南天のほうおう座(Phoenix)にあることからフェニックス銀河と呼ばれています。
## ブラックホールの正体
ブラックホールの正体について解説します。
ブラックホールは黒い穴という意味ですが、この名前は適切ではありません。
ブラックホールは目に見えないけどそこにあるもの、そこにないけどそこにあるものが集中しただけですから、黒くもなければ穴でもありません。
中性子星がとても小さい物質の中性子でできているように、それよりも強力なクオーク星が中性子を構成しているクオークでできているように、プレオン星がクオークより小さいプレオンでできているように、ブラックホールもまた、より小さい物質が表面に現れているのです。
この作品ではまだ見ない小さい物質をアイと呼ぶので、アイ星と呼ぶのが適切なのでしょうか。
作中では、人類がブラックホール内部の様子を科学的に証明しはじめたあたりから宇宙の起源が完全解明され、宇宙の外の様子が少し垣間見えてくるという展開になります。
宇宙の外の様子がわかってくる理由は、その物質が宇宙誕生前から存在したものだからです。
宇宙には始まりがあります。したがって、終わりもあります。この物質には始まりがないので終わりもありません。最初からこの世界にあったものだと説明されます。
## ダークマター
宇宙を分析すると、その95%が謎の物質によって占められている計算になります。
具体的にはダークエネルギーが68%、ダークマターが27%と言われていて、ダークマターは未知の物質ともいいます。
ダークマターですが、これはダークマターという一つの物質がまだ見つからないというということではありません。未知の物質は複数あって、それらが見つかっていないということです。この場合、ブラックホールを構成しているのもダークマターの一つと言えるでしょう。
宇宙誕生前にも、もちろん物質は存在します。それを物質と表現するかどうかは微妙なところですが、とりあえず物質と表現しています。本作では最も小さいものを物質と表現しているからです。ただ、本当は少し違います。例えば、あなたは心や魂を物質と表現しますか。普通はしないでしょう。ですが、この世の全ては最も小さいものから構成されていますから、心や魂もそこからできているのです。
無から有は生まれず、宇宙の始まりも有からです。最初からなにかがあり、それが宇宙になったということです。
そして、そのなにかは一つではありません。たくさんあります。とはいえ、宇宙の始まりになったものを一つのものとして表現するほうがわかりやすくていいかもしれません。
仮にこれらを物質ということにして、宇宙が誕生するずっと前からあった物質と、宇宙誕生後にできた物質は違うわけです。
観測が難しいのは宇宙が誕生する前からあった物質です。
宇宙が誕生する前からあった物質がこの宇宙に紛れ込んでいて、ダークマターの大部分は宇宙誕生前からあるものと関係します。
## 重力とダークエネルギー
自然界で最も弱い力と考えられているのが重力です。
しかし、弱いからと言って影響力がないとは限りません。
実は宇宙では弱い力ほど絶大な影響力を持ちます。
重力は長い時間をかけて今の宇宙を形作っていますよね。
小さいものほど集まることができ、集まると強大なパワーを持つ。それと同じです。
重力より遥かに小さい力の作用をダークエネルギーといいます。つまり、重力よりも根源的に現在の宇宙を形作っている力があって、人間はそのような力の作用があることを知りません。あるいは発見できていないということなのでしょう。
## 創造の種
宇宙の始まりを`創造の種`と私は呼んでいます。
創造の種の成長、その由来は、種の外の世界にあります。つまり、宇宙の外ということです。
宇宙の外のエネルギーや原理があり、種は生まれ、成長します。
必ずしも種の内部だけにその答えがあるとは限らない。
宇宙の外がある以上、中だけではわからないことがたくさんあると思います。
## 神の意識
すべてのものに神が宿るという考えかた。
存在子であるアイはこの世界でこれ以上分割できない最小単位のこと。
それは存在の意識だけを持ち、存在の意識は神の意識という表現することも可能です。
つまり、この世界のすべてを構成しているものは神の意識を持っていて、すべてのものには神が宿ると言えます。
ただし、この場合の意識は人間が思うそれとは少し異なるかもしれません。
というのも、ここまで分割された最小単位だとそれ自体がそれなのだということです。
例えば皆様は、なにか小さな物体があって、それが存在の意識を持つ物体だと考えられているかもしれませんが、実はそうではありません。この場合、物体が意識であり、意識が物体なのです。物体と意識は同じものと考えます。そういった領域の話です。
アイ = 存在の意識 = 神の意識 = 存在 = 神
これらはすべて同じものを意味します。つまり、物質と精神は最終的に同じものです。
最も小さい物質のアイがなにかというと、この世界には一つとして同じものは存在しないということです。ですから、アイに分類されたものはすべて違うものです。
例えば、同じ量子に分類されてもそれらは異なる存在です。人間はこの違いに気付いていません。
物質の最小単位は存在の意識だけを持ち、他のものを持ちません。その意味でこの世界は夢であるなどの考えかたも、あながち間違いではないのです。なぜなら、すべては「存在の意識」から構成されているのですから。
## アイと哲学
物理学と哲学は本来、一つの学問でした。そのためこの作品は物理学的であり哲学的でもあります。
アイの力の源は`小さいもの`にあります。
一般的に「この世で最も強いのは大きいもの」と考える人は多いでしょう。
しかし、宇宙に目を向けると、一番小さいものが一番強いのです。
例えば、宇宙最強の天体といえばブラックホール。ブラックホールは宇宙で一番小さい天体です。
これがこの作品における一つの哲学になります。
アイの見た目が小さいのもそういった理由があります。
## アイの能力
アイの能力は「その世界で最も小さい物質に影響を及ぼす」と説明されています。
宇宙よりも広い概念を世界と呼ぶことにして、この世界はアイというキャラクターから始まりました。
つまり、この世界の全てのものはアイからできているということです。
このことはアイの能力に直結しています。
具体的にアイの能力を見ていきましょう。
といっても、アイというキャラクターには「人格のアイ」と「意識のアイ」があります。
能力については「意識のアイ」がその根源になっています。
アイは時々こんなことをいいます。
> アイ「道を知ることは、道を歩くこと」
ここでいう道というのは「存在」のこと。この作品でなにかわからないことがあるとき、そのほとんどは「存在」を意味していると考えてください。
読み替えると「その存在を知るには、その存在になること」とアイは言っています。
つまり、そのものにならなければ、そのものはわからない。だから、わたしたちは何も知らない。
アイはその能力により、その世界のすべての存在と共に道を歩くことができます。
しかし、その能力を使いながら意識を保つことは、想像を絶する精神力が必要なのかもしれません。
アイの能力の発現は、作中の中盤あたりで描かれます。
予言では「汝が見たもの、汝になる」と記されています。
「きみは、この世界で、嬉しいことも、悲しいことも目にするだろう。いつか、きみの目に映るものが」
作中でアイは修行したり、冒険したり、色々あって、宇宙人の襲撃にあいます。走馬灯のようにいくつかの人の人生を歩くアイ。アイの母親の言葉。立ち上がったアイの目に、雲に隠れていた月が現れる。
![](/img/5.png)
アイはそれを見て月の始まりを知ると同時に質量を得る。
はじめは普通の人よりちょっと強いだけの変わった人間でしたが、その後、アイはどんどん強くなっていきました。
## アイの剣
アイのゼンモードの輪っかは変形して剣にもなります。
その物質はこの世のものではないとも言われていますが、その正体に迫ります。
絶対に折れないこの剣もアイが普通の状態に戻ると鉄になります。
アイのゼンモードは頭の上に中性子星のようなものを作り、そのエネルギーをコントロールしようとした結果、重力的な影響からあのような形になり浮かんでいるものです。
そこで中性子星がどうやって誕生するのかを見てみましょう。
中性子星は恒星の大爆発とともに生まれます。
恒星のコアは元素が核融合を繰り返し、最終的に鉄になります。鉄は核融合しないためそこで核融合は停止します。
![](/img/2.png)
すると恒星の全成分が鉄のコアに向け落下します。
鉄は圧縮され、その周りの物質は原子核に近づいていきます。陽子は電子を捕獲し、中性子へと変化。中性子のみで構成された原子をニュートロニウムといいます。鉄は圧縮されますが、中性子はそれ以上小さくなりません。大爆発して中性子星になります。
ボース粒子は同じ場所に存在できますが、フェルミ粒子は空間に置くとその場所は埋まり他のものを置くことができません。これをパウリの排他原理といいます。
中性子星はそれ以上小さくできない中性子でできています。強力な重力によって物質は押しつぶされて小さくなりますが、中性子星はそれ以上小さくなりません。
ですが、ハイゼンベルクの不確定性原理により、超重力で物質の移動場所が正確に観測できる場合、粒子を置ける場所が増えると考えることができます。ですが、それによって増えた場所に物質を置くと、中心から事象の地平面が発生します。事象の地平面は現在の物理法則で計算できない領域のこと。視覚的に見ることができればいいのですが、それができないので計算するしかありません。計算できないので中がどうなっているのかはわかりません。
そこで中性子星にどんどんと物質を供給すると、やがて事象の地平面は天体の外枠に達し、ブラックホールへと変化します。
アイがゼンモードになる時間がながければ長いほど事象の地平面に飲み込まれていき、完全に飲まれた場合はもとに戻れなくなります。ただし、それまでに状態を戻すと鉄になりリセットされます。
## 月見 唯
アイの本名は`月見 唯(つきみ ゆい)`。東の国、特有の名前で登録されています。
物語は最も発展している西の国で繰り広げられ、アイも最初はそこで登場しますが、出身は東の国です。
自らをアイと名乗り、名前を持たなかったアイですが、その後、登場人物たちとの関わりによって国籍を得ます。その際につけられた名前が`月見 唯`になります。
今では珍しく名字と名前が分かれていて、この世界ではほとんどの人が名前だけです。
例えば、ポンタ(西の国出身)もキョウスケ(東の国出身)も名字はありません。
> 西の国の大広間、身寄りのない子どもたちが一同に集められている。
>
> そこには色々なものが置かれていて、いくつもの絵が飾られていた。
>
> みんなキョロキョロと周りを見渡した。
>
> 天井は広く、ガラス張りになっていて、青空の中、雲が通り過ぎていく。
>
> アイは一人階段を登り、そこにあった絵に目を向けた。
>
> そこには大きな金色の円が描かれている。
>
> コツコツコツ...誰かが廊下を歩いてくる。
>
> 恰幅の良い老人が絵を見ているアイの横で止まり、同じように絵に目を向けた。
>
> しばらくして老人が口を開く。
>
> 老人「君は、この絵が気になるのかね」
>
> アイ「...」
>
> 老人「これは月見、という絵だよ。君、月はよくみるの?」
>
> アイ「ううん」
>
> アイはそう言って首を振った
>
> 老人「え、みたことない?」
>
> アイ「うん」
>
> 老人「そ、そうなの...」(幼い子にはそういうこともあるんじゃの...そういえば孫も初めて見たのはいつじゃったじゃろう)
>
> アイ「でも...」
>
> 老人「うん?なにか気になることでも?」
>
> アイ「これどこかで見たような...」
>
> 老人「ほっほっほ、そりゃ、忘れとるだけじゃろ。そのうち思い出す。では、わしはこれで」
>
> アイ「うん、またね」
>
> 老人(この子の名前は月見にするかの...いや、名字があったほうがしっくりくるかも。あとで調べてみるか)
老人はここの所長。ここは色々決まってない子どもたちの登録等を行っている機関の一つ。
## 月の秘密
月の起源はまだよくわかっていません。不思議なことがいくつかあります。
例えば、地球から見た月と太陽の大きさが同じことです。どちらも距離と倍率は395らしい。
もう一つは古代文明の石碑には、ある時代以前のものに月の記述がないことです。
古代文明の石碑には様々な事が書かれており、大洪水の話がいくつかあります。世界各国に残された洪水伝説。それより前は月が存在しません。
> 宇宙人であったアヌンナキは月を移動させて大洪水を起こし、失敗作をリセットしていた。地球上の生命体はこれで5作品目である。
>
> 4作品目は、トカゲ型の知的生命体。大洪水の際、地底に逃れた。アヌンナキという神に仕える監視官ギギアは反乱を起こし、4作品目の生命体を一部滅びから逃すことを選択する。
>
> 宇宙船はこのトカゲ型生命の乗り物であり、地底人の乗り物である。
月の内部は巨大な空洞があります。そして、その表面はチタンで構成されており、人工物の特徴があります。
物語として面白いのは月には何らかの秘密が隠されているという話なので、そういった話をモデルにします。
アイは人工物である月を取り込んだため、自らの質量を重力的にコントロールできるようになります。
## 物語の進行
物語は`貨幣` -> `言語` -> `宇宙`というテーマで進みます。
理由は、これらが人間社会において最も影響力を及ぼすものだからです。
その影響は作中のキャラクター達も受けることになります。特に物語の始まりでは、その影響は大きいでしょう。
### 1. 貨幣の章
オクトカットの地球侵略は失敗したものの、その文化は地球に輸入され、基軸通貨は西国通貨から`アム`へと切り替わります。
一般的にはアムが発行する宇宙通貨をアム・コイン、またはアムといいます。
アムは宇宙最大のコンピュータがあるとされる星の名前。
アムのコインは持ち主の心を数値化します。
多くの宇宙人はこの数値を使って色々なものを交換するようです。
### 2. 言語の章
不思議なパワーを持つアイ文字に切り替わります。
オクトカットが使っていた文字の秘密が明かされます。
物質の形をモデルにしたとされているアイ文字ですが、その起源は神代文字にあると考えられています。
### 3. 宇宙の章
物質とアイの謎が明らかになります。

View File

@@ -1,368 +0,0 @@
+++
date = "2024-04-12T00:00:00+09:00"
tags = ["author"]
title = "世界の設定"
+++
シリアスな場面でも笑いを忘れずに。
そのような方向性で物語は進みます。
ここからは世界の設定、その裏側を紹介します。
作中の世界はどのようにできているのか、ということです。
この世界にも歴史があり、現実社会の史実に基づいて設計されています。
ただし、これらの設定が作中で明示されるかはわかりません。
おそらく、あまり明確には表現されないでしょう。
あくまで裏側の設定、見えない部分と考えてください。
そして、何より重要なのはそれが物語として面白いかどうかです。
現実世界の物語が必ずしも面白いとは限りません。
しかし、これはフィクションであり創作物です。
したがって、常に面白さを追求し、思想や史実は二の次であると考えてください。これは作者自身に言っていることでもあります。
物語として面白くなるなら表現しますが、面白くないなら表現しません。
できる限り明るい世界観を描きます。
## 東の国
では、アイの出身である東の国の歴史の一部を見ていきましょう。
それぞれの国には、一人の大統領が登場し、それぞれが決定した政策が掲げられています。
例えば、東の国では「忍耐」という政策が実行されています。
しかし、それぞれの国には裏の目的が存在します。
> 東の国の大統領、スシ(寿司)
>
> スシ「東の国の市民の貯金は世界最大だ!経済を活性化させるにはそれを吐き出させる。忍耐の先に我々は勝利するのだ!!」
>
> スシ「今、東の国の借金は1000兆を超えており、国民は一人当たり1億エソを国に返していく必要がある。少子化の問題も合わせると、これからは大増税時代の幕明けです
>
> 市民「わー!!パチパチ!すばらしい!大統領!大統領!大統領!」
>
> 執務室...スシが椅子に座り葉巻きを吸っている。机の前に大蔵省の幹部が資料を持ってやってきた
>
> 幹部「大統領、資料をお持ちしました。先程の演説はどうでしたか?」
>
> スシ「はっ、あのバカどもに俺の言ってることなぞわかるか。順調だよ」
>
> 幹部「それはよかった」
>
> スシ「やつらカネを作ってるのが俺らだとも知らずにな」
>
> 幹部「国民には国の借金がある、国にはお金がない、少子化で大変だと嘘をしっかりといい含めました?」
>
> スシ「ああ、やってるよ。その辺は再三な、あいつら馬鹿だから」
>
> 幹部「それで、どれくらいで目標を達成できそうですか?」
>
> スシ「うんああ、それな。東国民全体を貧困に陥れるには5年ほどだ。それで任務完了さ」
>
> 幹部「あまり急ぎすぎてもいけませんよ。少しずつ税金を上げ、所得を減らしていかないと市民に気づかれてしまいす。それに通貨安をもっと進行させないと...。今後、大統領には、もっとエソ安が進行しないと経済は良くならないと国民に吹聴していく必要があります」
>
> スシ「わーってるよ、その辺は...お前よりもな。俺は政治家だぞ」
>
> 幹部「民を貧しくしないと我々が特殊な印刷機で発行している紙で支配できなくなります」
>
> 幹部は大統領にそう注意深く指摘した
>
> スシ「あいつらの価値は我々の言いなりになってこそだからな。あの体たらくのバカどもは」
>
> 幹部「馬が人参をぶら下げても走らないなら、馬の腹をすかせるしかありません。餓死する寸前までに...」
>
> 大蔵省の幹部にはある場面がよぎる
>
> 幹部「今回の仕事はこのお金でやってもらえませんか?これは政府の要請ですよ」
>
> 幹部は先程作ってきた紙幣をある会社の経営者に渡しながら言った
>
> 市民「うーむ...残念ながら今回はお受けできません。貴方がたの依頼は正義に反するのでは?国民のためにならない」
>
> 幹部「は?い、いまなんと...」
>
> スシ「おい、聞いてるのか。ぼやっとしてどうした?」
>
> 幹部「あ、いや、ちょっと昔のことを思い出して...大丈夫です」
>
> スシは「そうか」と言い、いつもの調子で喋り続けた。
>
> スシ「それでな、文科省の奴らにもきつく説教してやった。我が国の子どもたちには"カネがすべてだ"、 "カネは命よりも重い"としっかり叩き込めってな。あいつら事あるごとに変な方向に行きやがる。予算を大幅に減らしてやったよ」
>
> スシは貨幣であるエソの原紙をぴらぴらしながらそう言った
>
> 幹部「そうですね。文科省はずいぶん前から予算を少しずつ減らし、彼らがミスするように仕向けていますから今やあなたの言いなりでしょう」
>
> スシ「エソ安になればなるほど俺達は自国民を海外に売りさばける。どれくらい売れるかの試算は...この資料か。まあいいだろう、これくらい。まだまだエソ安が足りん。そこは市民税をどんと上げて折り合いをつけるか」
> しばらくして大統領執務室から出てきた幹部が誰かに連絡をしている
>
> 幹部「ああ、やつは気づいてない。それに気づいてたところでどうしようもないが。いや。ああ、そうだ。政治家など私達にとって捨て駒に過ぎないからな。ただ、大統領はまだ利用価値があるようだ。我々と意見が一致しているああ。他のあいつはやってくれ。子供を持つ親なぞ子供のためになんでもやるさ。格好のターゲットだよ。やつらは我々のために永久に働いてくれないと困る。ああ。そのようにしてくれ。では」
> 数週間後、別の政治家の不正がマスコミにリークされた。その政治家は子育て世代を支援する法案を通そうとしていた。
>
> 政治家のお金の流れも大蔵省が中心になって発足したある団体にすべて把握されていたのである。
> その後、大蔵省は「規制緩和」という政策を発表。大蔵省が認めた権益者達には無制限にお金を発行するという政策を打ち出す。スシは直接紙幣を受け渡せば問題ないと考えたが、幹部はより慎重に株券を購入する体裁のもとで無尽蔵に発行するよう助言。この方式が採用される。東国銀行は権益者が立ち上げた架空の会社を登録し、そこの会社の株券を購入するという体のもと金銭の無制限な受け渡しが行われ、それが続くこととなる。
>
> これによって上層部や一部経営者達は何もせずともお金がもらえる状態になり、すべての財界人は大蔵省の言うことに逆らえなくなっていった。その後、東の国の開発力、技術力、国際競争力はみるみる低下する。それに伴い国力も例を見ないほどに急速に落ち込み、結果として東の国は、他国より貧しくなってしまう。
>
> しかし、東の国の市民は、自国通貨であるエソがもっともっと安くならないと自分たちの暮らしは豊かにならないと考え、スシ政権を支持し続けた。
## 厚生省vs大蔵省
厚生省で開発された人工知能は、大蔵省に危険だと判断される。
その団体の中心メンバーが暗殺部隊「いなりずし」に関係者の殺害及び破壊を依頼。
東の国では大蔵省が考案した政策が実行されて40年あまりが経過した。世界でも類を見ないほどの少子化と国力、経済力共に低下する結果となった。
## 通貨の変遷
時代が進み、地球の基軸通貨は西の国の通貨ビトから宇宙通貨のアムに切り替わります。
> ポンタ「あれなんだろう」
>
> キョウスケ「ん、どれだよ」
>
> ポンタ「道の真ん中にあるやつ」
>
> キョウスケ「お?なんだあれ」
>
> 歩いた先には大量の紙と小さなお年寄りが座っている。白髪まじりで大きなハゲが見える。
>
> ポンタ「あのう、大丈夫ですか?」
>
> スシ「このクソ。誰に口を聞いてるのかわかってるか!」
>
> キョウスケ「へ...!?」
>
> スシ「おまえ、俺は東の国の大統領、皇帝だぞ!」
>
> ポンタ「え...ほ、ほんとに?で、でもそんな人がなんでこんなところに」
>
> スシ「全部お前らのせいだ。こんなもの配りやがって。俺は国のために尽くしてきた。こんな仕打ちを...許さんぞ」
>
> ポンタ・キョウスケ「...」
>
> キョウスケ「それってアムのことですか?」
>
> ポンタ「少しならおじいさんに分けてあげられるけど...でも」
>
> キョウスケ「うん、難しいかもな。これは人によって上限があるから」
>
> スシ「おまえ!おれの心は誰よりも清く正しいんだ、そんなもんで測られるかバカ」
>
> ポンタ「あ!思い出した。この人、昔の大統領だ」
>
> キョウスケ「え...ほんとだったの...そんな人がなんでこんなところでホームレスやってんだよ!」
>
> ポンタ「ニュースでは誰かの暗殺を指示したとかでやめたんだって」
>
> キョウスケ「おいおい、おじいさん、それ本当なのか?」
>
> スシ「全部ウソに決まってんだろ。おめえそんなこともわからんか」
>
> ポンタ「へえ、そうなんだ。本当はどういう話だったの」
>
> スシ「俺が国のためにやったことに反対する奴らがいて、そいつらを始末しろと部下に命令をだしたのはたしかに俺だ。しかし、全部部下がやったことで俺は知らん。俺と事件は無関係だ。それにこのことだって本当は表に出ないはずだった...なにせ表に出れば国益を損なう。国のためにならん。俺は常に国家のため国民のために仕事をしてきた。お前らは何も知らないただの低能バカだ」
>
> ポンタ・キョウスケ「...」、二人はしばし顔を見合わせた
>
> ポンタ「...おじいさん、困ってるなら少しだけど」 ポンタはそう言っていくらかお金を送信しようとした
>
> ポンタ「あ、あれ...なんで」
>
> キョウスケ「え?お、おいおい。こりゃ、いくらなんでも」
>
> ポンタはスシの口座にお金をいれることはできなかった。アムは持ち主の心理情報を読み取り上限額を設定する。悪人は一定額以上を持つことはできない
>
> スシ「ふん!この生ゴミが」スシはダンボールに置いているコインを睨みつけながら言った
>
> するとアイがポンタとキョウスケがいるところを通りがかる
>
> アイ「こんにちは」
>
> キョウスケ「ああ、アイか、ちょうどいいところに。このじいさん、困ってんだってよ。しかもアムが入らない」
>
> スシ「だれだおまえ?変な小娘め...だが、どこかで...」
>
> アイ「なんでこんなところにいるの」
>
> スシ「好きでいるわけじゃねえよ!」
>
> アイ「ここでは誰でも家がもらえるよ」アイはポンタの方を見てそう言った
>
> ポンタ「あ、そうか。そうだよ。おじいさん、もし住む場所がないなら」
>
> スシ「な、なんだって!?そんなこと俺は聞いてねえぞ!」
>
> スシ「どけ!!」
>
> スシはそういって3人を突き飛ばし行ってしまった
>
> キョウスケ「な、なんなんだあれは...。しかも、おい、これどうするよ」
>
> そこにはスシが残していったゴミが散乱していた。多くは昔の紙幣のようだ
>
> アイ「アイがもらっておくよ」
>
> アイはそう言って、そこにあったゴミと思えるようなものをなで、小さな箱を取りした
>
> ボタンを押すと路上にあったゴミが吸い込まれ、きれいになる
## 変化
東の国の元大統領であるスシは、その後、世界一の金持ちから世界一の貧乏人になります。
アム(コインの形をしている)は持ち主の心を読み取り、数値を個々人に配分します。これはスシがアムから世界で一番お金や権力を持ってはならない人物とそう評価されたということです。
当時のアムは宇宙最大のコンピュータと考えられていましたが、実際は違うことが後に判明します。
> ピンポーン
>
> スシ「だれだ!クソ鬱陶しい!!」
>
> 郊外に建ったばかりのスシの自宅、玄関のドアの前にアイが突っ立っていた
>
> スシ「ふん!おまえか。家がタダでもらえることを教えたやつ」
>
> スシはこのとき初めてアイをよく見た。しかし、この娘、どこかで見たような気がするのだ。俺が赤ん坊のときに...いや、子供の頃か...小さい頃どこかであった気がする。俺が知ってるようで知らないような思い出が
>
> スシ「...まあ、入れや」
>
> スシはアイを中にいれることにした。何かを思い出せるような気がしたからだ。思い出せないとどうにも気分が悪い。
>
> スシ「それでおまえ、なんのようだ?ただのガキだと思ってたが...」
>
> アイ「これ」
>
> アイがそういうと、部屋の景色が一瞬で変わった。そこは天井が見えないほど高く、ところどころキラキラと輝いていて、ありとあらゆる物がうず高く積まれている、とてつもない広い場所だった
>
> スシ「な!なん...だ...これ...お、俺の目が...」
>
> アイは前をゆっくりと歩いていく。スシはあたりを見回しながらアイに続いた
>
> アイが立ち止まると、そこには
>
> スシ「うん?あ!こ、これは、おれのカネじゃねえか!!おまえ、盗みやがったな!」
>
> アイ「これ、さっき触れたばかり。まだアイがあるかも」
>
> スシ「は?何言ってやがる...意味がわからねえ。アイ?そりゃたしかお前が呼ばれてた」
>
> そういったスシは言葉を失っていた。
>
> ここはどこだ...おれはたしか小娘が盗んだ俺のカネをつかもうとして...そして、どうなった。...いや、そんなことはどうでもいい。何もかもがどうでもよかった。そこで俺は、もう俺ではなかった。別のなにかだった。
>
> わからなかった。何もわからない。しばらく彷徨ったあと、そこで見覚えがある感覚に出会った。そして、そこからはわかるような気がした。そうだ、俺は覚えている。これは俺...俺が生まれたばかりの頃...。
>
> 両親は、こんなにも俺のことをかわいがってくれてたのか...そうだったな。知ってたはずなのに、いつの間にか俺は...。
>
> これは学校に通いはじめた俺。そうだった。純粋だった。多少の不安はあったが、俺は両親にずっと守られていたので、そこまでじゃなかった。
>
> そして、俺は...
>
> スシは頭がぐわんぐわんする感覚に襲われ、気がつくと、膝をついていた。周りの景色も...俺の家だ。
>
> スシ「.....く...くくう...お、おれは...」
>
> 気がつくとスシは泣いていた。まさか自分のような人間が泣くことになるとは思わなかった。しかもこの歳でだ。だが、さっき思い出したんだ...昔の俺を。昔の俺は泣いていたのだ。...そうだった。
>
> スシはひとしきり泣いたあと、ソファに腰を下ろした。そして、そばに立っているアイの方を向いた。
>
> スシ「...なにやらかしやがったんかわかんねえが、お前、あのときのやつだったんだな...」
>
> スシ「あのとき、俺に唯一、手を差し伸べてきたお前は...そう、俺の過去をすべて見たことがあったんだな...ずっと前から。生きるのに必死だったんだみんなそうなんだよ...お前が俺の中でそういったことを、俺は覚えているぞ...いや、思い出したが正しいか。あいつらが襲ってきたときだった」
>
> アイ「ここはいいところだね」
>
> スシ「...」
>
> アイ「変わりたければ大聖堂に行くといいよ。保護プログラムがあるからね」
>
> スシ「...そうか...助かる」
>
> アイ「またね」
>
> アイはそういうと姿を消した。
>
> その時、スシのポケットからピッという音が聞こえた気がした
このあともスシは何度か登場します。
私が好きな作品には、悪人が悪人で終わらない、というものが多いのです。
もしかしたらそこが一番のフィクションなのかもしれませんね。必ずしも現実を描きたいというわけではないのです。
## スシのモデル
スターウォーズのシスです。
そういえば、このスシというキャラにはこんなセリフがあります。
> スシ「数日前、市民に襲われ、私の口はひん曲がった...だが、ますます帝国への意志は強くなったのだ!」
シスも逮捕されそうになったときジェダイを殺し、その後、演説ではジェダイに襲われたといいます。
## 西の国
西の国は「正義」を掲げ、その裏で「武力」を信奉する。他国も同様に裏側のテーマが存在する。
キャラクターはこのような各国のバックグラウンド、設定や文化の影響を受けます。
アイも例外ではありません。
西国の偉大さについて。戦勝国として世界のことを考えた歴史がり、西国では戦い負けたものも握手して勝利者を応援するする伝統がある。その意味は「いかに個人的に納得できない事柄であっても負けは負けと認め、両者が手を取り合って国のために尽くす、そのような態度を形式的にでも国民に見せる」というものだった。
偉大さが失われた瞬間はトランク大統領が選ばれたときだった。
トランクは「自国ファースト」を掲げ、選挙で負けると相手は不正だと主張した。
当時は何をするかわからない西国の大統領に恐怖を抱いた各国の権力者達だが「自分達もあのように身勝手に振る舞いたい」という暗い欲求が生まれるきっかけとなる。
トランクの退任後、他国や人々にその態度や振る舞いは波及し、侵略戦争が巻き起こる。
多くの権力者達は「自国ファースト」を掲げ、「相手は不正をした」、「自分たちは陰謀に巻き込まれた」と騒ぎ立てる。
模範となる立場において、その振る舞いは思った以上に全世界に波及し、混乱に陥る。
それと関係ある話だが、東の国は西の国に戦争で敗れたものの北の国と異なる成長を遂げることになる。北の国は敗戦後、上手くいかないことはすべて戦勝国のせいにした。東の国は戦勝国のせいにしなかった。これらは国民性の割合によって決まる。北国民の多くは「すべて西の国のせいだ。こういった陰謀があり仕組みがあるから自分達は衰退した」と考えていた。東国民は「西の国のおかげ。西の国には感謝している」と考える人が多かった。それが後にその国の発展に大きく影響する。
西の国が絶対的な正義とは言わないし、失敗もあるが、いつまでも敗戦を悔やみ、相手を恨んで上手くいかないことを他人のせいにしている国は成長しなかった。
自国が良ければそれでいいという考えではなく、世界をより良くするためにはどうすればいいかを考える西国民は多く、大統領の偉大さもそこから来ていた。
それが失われると同時に、世界戦争が勃発する。
この辺の事情を見ていくと、それぞれの国の違いが見えてくるだろう。
## 現実感
あらゆる設定に言えることですが、この作品の設定は、そのほとんどが物語に現実感を持たせるために存在します。もしくは、面白さを追求するためですね。
現実感がないお話というものは、あまり面白くないのです。
では、現実感とは一体何なのでしょう。
それは人々の生活や日常に潜んでいるものです。
生活や日常に当たり前のように存在し、なくてはならないもの。
それらを優先順位を付け、重要なものをピックアップし、分解したり、調べたり。
その3つが、貨幣だったり、言語だったり、宇宙だったりするわけです。まあ、最後の宇宙は、単に私が好きなだけですが。
それでも宇宙開発というのは、私達の生活や日常にかなり大きな影響を及ぼしているのですよ。
これがどうなっていて、これからどうなっていくのか。過去、現在、未来の想像を作品に取り込んでいます。

View File

@@ -1,247 +0,0 @@
+++
date = "2024-05-01T00:00:00+09:00"
tags = ["author"]
title = "構成と参照"
+++
## 心と技
漫画で一番重要なのは`心``魂`と呼ばれるものです。これは現実でも同じ。
ただし、それだけで漫画が描けるかというと、それは違う。
では漫画はどのように書けばいいのだろうか。その答えとしては「好きに書けばいい」となる。
この答えも非常に難しい。
好きなものを好きに書かなければ面白くならないし、好きなものを好きに書くだけでは面白くならない。
例えば、嫌なものを嫌々書いても面白い作品ができるとは思えない一方、好き勝手書いて面白い作品ができるかというと、そうはならない。
つまり、漫画を書くのはけっこう大変ってこと。
でも好きじゃなければ続けるのは難しい。
だから、漫画を書くのが好きだったほうがいい。
それを現した言葉が先程の「好きに書けばいい」ということになる。
私は面白いものが書きたいと思っていて、それは、読んだ人を楽しませたいと思っているから。
じゃあ読んだ人を楽しませるにはどうすればいいのかというと、これはテクニック、つまり、技術の問題でもある。
まずは、感情があって、心がある。自分が伝えたいこと、それがある。それがないと、その人の話はつまらないと思う。
だから自分が伝えたいことをどう面白く絵で伝えるのか、それが漫画。
では、どうやったら面白く伝えられるのか。ここではじめて技術が関係してくる。
例えば、後述する陰と陽の考え方がある。陰と陽の混じり合いで物語は面白くなる。
私が好きな瞬間というのもいくつかあって、
敵が味方になる瞬間。一人だと思っていたら、沢山の人が支えてくれていたことがわかる瞬間。本当のことがわかった瞬間。心が通じた瞬間。
その瞬間、その一コマのために、たくさんの物語を積み重ねていくのだと思う。
## 陰と陽
物語において、主人公のライバルの存在は非常に重要。
例えば、この世界が陰と陽でできているという考えがある。
必ず反対のものが存在するなら、物語においてもそのルールに則らなければならない。
それがライバルの存在であり、ライバルの存在は物語を面白くするポイントだと思う。
ライバルで有名なのは、悟空とベジータ、ナルトとサスケなど。これらは主人公の敵と言ってもいい。
ベジータやサスケに嫌悪感を示す人もたくさんいて、あのようなキャラクターは出すべきではない、最終的に始末したほうがよかったという意見がある。
最終的にどうするかは好みの問題だと思うけど、これらの作品においては、陰のキャラクターが物語を面白くしていると言っても過言ではないので、それを取り除くというのは、あり得ない。
やはり面白い作品というのは、陽ばかりのキャラクターではなく、陽と陰、その混じり合いで面白くなるのだと思う。
ただし、最終的にどうするかについては、好みの問題だと思う。
例えば、アベンジャーズは、最終的に敵、陰を討ち滅ぼすことで完結している。
ここは日本とアメリカでどのように描くか傾向が異なると思う。私はどちらも好きだし、どちらも面白く作るのは可能だと思う。
## 八咫烏
縄文時代から弥生時代に移り、天皇が誕生、東国の建国に繋がります。これを神武東征物語という。
以前からいた民族と新しく入ってきた民族が融合していく過程を描いています。
以前からいた民族を出雲、新しく入ってきた民族を大和といいます。
思想や気質の全く異なる民族ですが、出雲の王であったアヂスキタカヒコネ(迦毛大御神)は出雲を裏切り、最終的には勝利者側に協力した後、`八咫烏`と名乗ります。
表向きは神武天皇が大和の都を支配する形になりましたが、裏では八咫烏が支配するようにもなりました。これは八咫烏が`裏天皇`と呼ばれる所以です。その血脈は今なお受け継がれています。
八咫烏の三本足は天、地、人を現し、3という数字は太陽を現しています。その後、陰陽の思想を広めたと言われています。八咫烏は組織名になり、正式名称は八咫烏陰陽道。
## 童話と神話
まずは、童話と神話の話をします。
あらゆる文化作品(創作物)は、有名な神話や童話が元になっていることがよくあります。
ドラゴンボールの孫悟空は、中国の西遊記を元に書かれていて、如意棒と筋斗雲を使います。
ナルトは主に日本神話を引用しています。ライバルであるサスケがアマテラスやツクヨミの技を使い、スサノオを召喚します。
例えば、進撃の巨人には「ユミル」が登場します。
北欧神話には以下のような話があります。
> ユミル(巨人)はオーディン達の三兄弟に殺され、死んだユミルの体から世界が作られていった
なぜ、神話や童話が引用されるのかというと、最も広まった物語だからでしょう。
## 不死
不死にはよく2つのパターンがある。
一つは若返り、もう一つは乗っ取りである。
不死を求めるのは不完全な存在の証明であり、完全な存在の証明でもある。
大抵のボスは不死を求める。
コナンに出てくる黒の組織のボスは、私の推測になるが、不死を求めている。ある薬品を開発していて、その試作品であるアポトーシスの名にちなんだ`アポトキシン4869`は、低確率だが人間を幼児化させることがある。この場合のアポトーシスは老化細胞の自殺に関係すると予想する。ボスが幼児化のことを把握しているかはわからない。どれだけの人間を犠牲にしてでもその薬を完成させるつもりらしい。だが、ベルモットは幼児化を把握しており、若返りを求めている。だから組織が薬を完成させる前に潰れてしまうと困るが、完成させたあとに組織が残るのも困るという微妙な立場だと思う。ベルモットにとって最も理想的なシナリオは、完成と同時に薬を横取りした後、コナンが組織をぶっ潰してくれることだと考えている。
## 終局
最後のボスは、とことんしつこい。
やっと倒したと思ったら、倒していない。
ボスにはボスになるだけの理由があり、器がある。
そのボスは主人公達の力と同じ。
どんな卑怯な手を使っても蘇り向かってくる。
力の差があまりに大きい場合は、主人公が負けることもあるだろう。
ただし、主人公は諦めない。勝つまでやめない。
負けてもパワーアップして悪に挑み、最後に勝つ。
ここらへんを描くのは大変かもしれない。他の作品を参考にするといい。
## 元素
元素はゲームによく登場する「属性」のモデルになっています。
例えば、`原神`というゲームには元素があり、キャラクターは火や水などの元素を使って戦います。
私が思うに、ゲームには物理学を引用する作品が多く、漫画には神話や童話を引用する作品が多いと感じます。
その理由の一つとして考えられるのが文系と理系です。もしかすると開発者には理系が多く、小説家には文系が多いのかもしれませんね。
## 予言
現実には様々な予言書があります。例えば、日月神示やアカシックレコードなど。
物語において、予言書というものは重要な意味を持ちます。
これらは、確定した未来を予言するものではありません。小さな物質世界からすると、それはありえないのです。なぜありえないかというと、例えば、量子の振る舞いから説明できます。
とはいえ、それは後述することにして、まずは予言書が確定した未来を述べるものではなく、願望を述べるものに過ぎないということです。
しかし、その願望も未来に影響し、未来を形作るものの一つです。
したがって、物語において、予言の存在というのは重要な意味を持ちます。
## 秘密
秘密はあったほうが物語は面白くなる傾向にあると思う。
最近の漫画はほとんどに秘密があって、それが最後まで明かされない。
例外はドラゴンボールで、この漫画はそこまで秘密がない。あったとしてもサラッと明かされる事が多い。
この作品は「ある秘密があってそれを探し求める」という感じではなく、機会があれば明かされる感じにしたいと思う。
秘密をそこまで物語の主要な部分に位置づけない方向で考えている。
最も小さいものはいつも目の前にあって、どこにでもあるものだから。
## 月
巨大彗星説は日本人の方がみた夢がモデルになっています。
> ある時、不思議な夢を見た。巨大彗星が太陽に向かって進む。水が蒸発し、地球に降り注ぐ。それが大洪水になった。残った彗星は地球の周りを回りだした。
月の内部は水であるという話があります。
ただし、定説として考えられているのは、地球の形成初期に巨大な星が衝突し、それが地球と月になったというものです。これをジャイアント・インパクト説といいます。
## 量子
アインシュタインは神はサイコロを振らないといい、あらゆるものの挙動は最初から決まっていると考えていました。つまり、この世界はすべて必然であるという考えを持っていました。
反対にボーンは神が何をなさるかなど注文をつけるべきではないといい、つまり、偶然であると考えました。
量子のもつれは、決まっていない状態がまずあり、片方が確定した瞬間、もう片方の状態も確定するというものです。
この点において、あらゆるものは最初から決まっていると考えたアインシュタインが間違いであったとも言えます。
## ニュートロニウム
存在しなかったはずの原子、原子番号0のニュートロニウムについて書きます。
原子は中性子と陽子のバランスが大切で、バランスが崩れると放射性崩壊が起こり、違う原子になります。
違う原子になるということは、観測が難しいということです。
では中性子だけで構成された原子は存在するのでしょうか。
答えとしては「一瞬だけ存在する」です。
それがニュートロニウムです。
現在、ニュートロニウムが最も多く存在する場所は中性子星の内部です。
中性子星の内部では電子が陽子に押しつぶされて中性子になり、電子と陽子の融合。ベータ崩壊が起こり、ニュートロニウムが生成されます。生成と消滅を繰り返しているのか、一つの原子が長く継続しているのかはわかりませんが、一見すると、内部はニュートロニウムで満たされているでしょう。
## メトシェラ
メトシェラ星というものがあります。これはビックバンが始まる前から存在したのではないかという意見もあるくらい古くから存在する星と言われています。
ビックバンは138億年前に起こったと計算されています。私はその計算は間違いだと考えていて、ビックバンが起こったのは200億年以上前です。
それを前提に話をしますが、メトシェラ星の誕生はビックバンの後です。
## プラネット・ナイン
ほぼ確実に存在すると言われている太陽系、第9の惑星、プラネット・ナイン。
その惑星の中心に連星の動きが確認されていますが、未だ発見されていません。
第9惑星は原始ブラックホールであるという説があります。大きさは1m未満。休眠ブラックホールは連星を作ることがあり、多くの星がブラックホールを中心に回ります。地球に最も近いブラックホールも連星です。
## アマテラス粒子
ブラックホールやマグネター、それに類似する天体の合体から放出されるオーマイゴッド粒子やアマテラス粒子は1グラムで地球を破壊するレベルのエネルギーを持ちます。
例えば、ブラックホールとブラックホールがぶつかると天体の一部が飛ばされて宇宙を飛来します。
惑星や粒子の多くは神話にちなんだ名前が付けられています。これについては`宇宙`の章で語られるかもしれません。
## オクトカットのモデル
githubの`octocat`です。
- ref : [github/octocat](https://github.com/octocat)
## トロン
ケンという人物によって開発されたトロンというOSがあります。
東国は縄文時代以降、貨幣も言語も西国のものに置き換えられてしまいますが、このOSも同じような運命をたどります。
しかし、その後、世界に広まり最も使われるOSになります。

View File

@@ -1,14 +1,17 @@
{{ partial "head.html" . }}
{{ partial "navbar.html" . }}
{{ partial "header.html" . }}
{{ partial "content.html" . }}
{{ partial "sns.html" . }}
</div>
<div class="stars">
<!--
{{ partial "content.html" . }}
{{ partial "particles.html" . }}
{{ partial "nasa.html" . }}
{{ partial "galaxy.html" . }}
-->
{{ partial "star.html" . }}
</div>
{{ partial "footer.html" . }}

View File

@@ -1,3 +1,6 @@
<div class="footer-qr">
<a href="/"><span class="footer-link"><img src="/qr.svg"></span></a>
</div>
<div class="footer-link">
<span class="footer-link"><a href="https://bsky.app/profile/yui.syui.ai" target="_blank"><i class="fab fa-bluesky"></i></a></span>
<span class="footer-link"><a href="https://card.syui.ai/ai" target="_blank"><span class="icon-ai"></span></a></span>

View File

@@ -5,8 +5,8 @@
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="author" content="{{ .Site.Author.name }}" />
<meta name="copyright" content="© {{ .Site.Author.name }}" />
<meta name="author" content="{{ .Site.Params.Author }}" />
<meta name="copyright" content="© {{ .Site.Params.Author }}" />
<meta name="description" content="ai" />
<meta name="keywords" content="ai" />
<meta name="robots" content="all" />

View File

@@ -5,8 +5,8 @@
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="author" content="{{ .Site.Author.name }}" />
<meta name="copyright" content="© {{ .Site.Author.name }}" />
<meta name="author" content="{{ .Site.Params.Author }}" />
<meta name="copyright" content="© {{ .Site.Params.Author }}" />
<meta name="description" content="ai" />
<meta name="keywords" content="ai" />
<meta name="robots" content="all" />
@@ -31,7 +31,6 @@
"url": "{{ .Site.BaseURL }}"
}
</script>
<script src="/js/index.js"></script>
{{ range .AlternativeOutputFormats -}}
{{ printf `<link rel="%s" type="%s" href="%s" title="%s" />` .Rel .MediaType.Type .Permalink $.Site.Title | safeHTML }}

View File

@@ -12,15 +12,7 @@
</header>
<div class="containerx">
{{ if eq $o "" }}
<div class="hotkeys-docs">
<table>
<tbody>
<tr>
<td class="bg"><code>ctrl</code> + <code>enter</code></td>
</tr>
</tbody>
</table>
</div>
<span class="menu-right-top">
<!--
<a class="menu-link-left" href="/bitcoin"><i class="fa-brands fa-bitcoin"></i></a>

View File

@@ -3,15 +3,19 @@
<div class="navbar-nav">
<span class="navbar-title-text"><a href="/"><span class="icon-ai"></span></a></span>
<div class="navbar-nav-left">
<!--
<a class="navbar-brand" href="/chara">キャラクター</a>
<a class="navbar-brand" href="/story">ストーリー</a>
<a class="navbar-brand" href="/card">カード</a>
<a class="navbar-brand" href="/blog">ブログ</a>
<a class="navbar-brand" href="/item">アイテム</a>
-->
</div>
</div>
<div class="navbar-nav-right">
<!--
<a class="menu-link-left" href="https://syui.fanbox.cc/shop" target="_blank"><i class="fa-solid fa-bag-shopping"></i></a>
-->
<a class="menu-link-left" href="https://bsky.app/profile/yui.syui.ai" target="_blank"><i class="fa-brands fa-bluesky"></i></a>
</div>
</div>

18
layouts/partials/sns.html Normal file
View File

@@ -0,0 +1,18 @@
<div id="container">
<div class="outer">
<div class="sns-message">
<img src="/icon/avatar.png">
<p>hello, ai ! <a href="https://git.syui.ai/ai/bot">bot</a> written in rust, it runs on an arch based <a href="https://git.syui.ai/ai/os">aios</a>.</p>
<p>there is an original story and a game.</p>
</div>
<div class="hotkeys-docs">
<table>
<tbody>
<tr>
<td class="bg"><code>ctrl</code> + <code>enter</code></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>

View File

@@ -0,0 +1,2 @@
<iframe src="https://card.syui.ai/planet?ms=0&g=moon" allowfullscreen frameborder="0" style="width:95%;height:600px;" id="planet"></iframe>
<script src="/js/index.js"></script>

BIN
static/card/0.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

BIN
static/card/0.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
static/card/1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 544 KiB

BIN
static/card/1.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

BIN
static/card/10.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 933 KiB

BIN
static/card/10.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 160 KiB

BIN
static/card/11.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 688 KiB

BIN
static/card/11.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

BIN
static/card/12.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 516 KiB

BIN
static/card/12.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

BIN
static/card/13.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 416 KiB

BIN
static/card/13.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

BIN
static/card/14.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 462 KiB

BIN
static/card/14.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 KiB

BIN
static/card/15.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 642 KiB

BIN
static/card/15.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

BIN
static/card/2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 361 KiB

BIN
static/card/2.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

BIN
static/card/3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 683 KiB

BIN
static/card/3.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

BIN
static/card/4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 805 KiB

BIN
static/card/4.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

BIN
static/card/5.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 402 KiB

BIN
static/card/5.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

BIN
static/card/6.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 476 KiB

BIN
static/card/6.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

BIN
static/card/7.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 713 KiB

BIN
static/card/7.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

BIN
static/card/8.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 330 KiB

BIN
static/card/8.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

BIN
static/card/9.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 680 KiB

BIN
static/card/9.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

View File

@@ -1,6 +1,6 @@
body {
display:block;
background-color: #f1f1f1;
background-color: #313131;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
width:100%;
margin:0;
@@ -46,6 +46,7 @@ article {
.stars {
background: #313131;
text-align: center;
}
.footer-link {
@@ -1347,3 +1348,28 @@ pre > code > span {
}
}
.sns-message {
padding: 10px;
background-color: #f1f1f1;
}
.sns-message p {
padding: 10px ;
}
.sns-message img {
background-color:#fff;
width:80px;
border-radius:7px;
border: solid 1px #313131;
margin: 30px;
float: left;
}
.footer-qr {
text-align:center;
margin: 100px 0 100px 0;
}
span.footer-link img {
width: 200px;
}

View File

@@ -10,3 +10,29 @@ function blog_list_open() {
}
}
function replace() {
const link = document.getElementById('planet');
const date = new Date();
const durl = 'https://card.syui.ai/planet';
let url;
let u = date.getSeconds().toString().substr(-1);
console.log(u);
switch (u) {
case '0':
url = durl + "?ms=0&g=sun";
break;
case '1':
url = durl + "?ms=0&g=galaxy";
break;
case '2':
url = durl + "?ms=0&g=neutron";
break;
case '3':
url = durl + "?ms=0&g=earth";
break;
default:
url = durl + "?ms=0&g=moon";
}
link.setAttribute('src', url);
}
replace();

View File

@@ -0,0 +1 @@
vrm.syui.ai

Binary file not shown.

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,16 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="referrer" content="strict-origin-when-cross-origin" />
<title>VRM Animation Preview</title>
<style>
html, body, #root { width: 100%; height: 100%; margin: 0; padding: 0; overflow: hidden; }
</style>
<script type="module" crossorigin src="/pkg/atmosphere/assets/index-De4p6DE0.js"></script>
</head>
<body>
<div id="root"></div>
</body>
</html>

Binary file not shown.

View File

@@ -0,0 +1,61 @@
<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Sketchfab Viewer API example</title>
<script type="text/javascript" src="https://static.sketchfab.com/api/sketchfab-viewer-1.12.1.js"></script>
</head>
<body>
<iframe id="api-frame" class="w-full" width="100%" style="position:fixed; top:0; left:0; bottom:0; right:0; width:100%; height:100%;" allow="xr-spatial-tracking; autoplay; fullscreen; xr-spatial-tracking; accelerometer" xr-spatial-tracking web-share frameborder="no" scrolling="no" ></iframe>
<script type="text/javascript">
var iframe = document.getElementById( 'api-frame' );
var uid = 'd6521362b37b48e3a82bce4911409303';
var client = new Sketchfab( iframe );
var api;
client.init( uid, {
success: function onSuccess( api ){
api.start({ preload:1 });
api.addEventListener( 'viewerready', function() {
api.getCameraLookAt((err, camera) => {
if (err) return console.error('カメラ取得失敗');
const direction = [
camera.position[0] - camera.target[0],
camera.position[1] - camera.target[1],
camera.position[2] - camera.target[2]
];
const zoomFactor = 0.01;
const newPosition = [
camera.target[0] + direction[0] * zoomFactor,
camera.target[1] + direction[1] * zoomFactor,
camera.target[2] + direction[2] * zoomFactor
];
api.setCameraLookAt(newPosition, camera.target, 10, (err) => {
if (!err) console.log('ズームアウト成功');
});
});
} );
},
error: function onError() {
console.log( 'Viewer error' );
},
camera:1,
autospin: 0,
preload: 0,
ui_controls: 0,
ui_infos: 0,
ui_inspector: 0,
ui_stop: 0,
ui_watermark: 0,
ui_watermark_link: 0,
ui_annotations: 0,
ui_hint: 0,
ui_ar:0,ui_help:0,
ui_settings:0,
ui_vr:0,
ui_fullscreen:0,
ui_loading: 0,
} );
</script>
</body>
</html>

1
static/qr.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 20 KiB

22
static/slide/404.html Normal file
View File

@@ -0,0 +1,22 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="slidev:version" content="0.49.29">
<link rel="icon" href="https://cdn.jsdelivr.net/gh/slidevjs/slidev/assets/favicon.png">
<title>Unreal Engine 5.5 | aiue - Slidev</title>
<meta name="description" content="## Slidev Starter Template\nPresentation slides for developers.\n\nLearn more at [Sli.dev](https://sli.dev)\n">
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Fira+Code:wght@200;400;600&display=swap" type="text/css">
<script type="module" crossorigin src="/slide/assets/index-DYPPoQLU.js"></script>
<link rel="modulepreload" crossorigin href="/slide/assets/modules/vue-CSR4ejk2.js">
<link rel="modulepreload" crossorigin href="/slide/assets/modules/shiki-tduQW0Ms.js">
<link rel="stylesheet" crossorigin href="/slide/assets/modules/shiki-BPvBenZD.css">
<link rel="stylesheet" crossorigin href="/slide/assets/index-Ce1OlylQ.css">
</head>
<body>
<div id="app"></div>
<div id="mermaid-rendering-container"></div>
</body>
</html>

1
static/slide/_redirects Normal file
View File

@@ -0,0 +1 @@
/slide/* /slide/index.html 200

View File

@@ -0,0 +1 @@
.page-link[data-v-00046222]{border-radius:.25rem;background-color:#9ca3af1a;padding:.5rem 1rem}.page-link[data-v-00046222]:hover{background-color:#9ca3af33}

View File

@@ -0,0 +1 @@
.slidev-note :first-child{margin-top:0}.range[data-v-338ab1e8]{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent}.range[data-v-338ab1e8]::-webkit-slider-thumb{-webkit-appearance:none;height:100%;width:var(--thumb-width, .5rem)}.range[data-v-338ab1e8]::-moz-range-thumb{height:100%;width:var(--thumb-width, .5rem)}

View File

@@ -0,0 +1 @@
.v-popper--theme-menu .v-popper__arrow-inner{border-color:#9ca3af33}

View File

@@ -0,0 +1 @@
.slidev-slide-container[data-v-7972acf1]{position:relative;width:100%;height:100%;overflow:hidden}.slidev-slide-content[data-v-7972acf1]{position:absolute;left:50%;top:50%;overflow:hidden;--un-bg-opacity:1;background-color:rgb(255 255 255 / var(--un-bg-opacity))}.dark .slidev-slide-content[data-v-7972acf1]{--un-bg-opacity:1;background-color:rgb(18 18 18 / var(--un-bg-opacity))}.disable-view-transition[data-v-58ca65c9] *{view-transition-name:none!important}.slidev-page[data-v-58ca65c9]{position:absolute;top:0;right:0;bottom:0;left:0}

View File

@@ -0,0 +1 @@
.page-link[data-v-6e328dd5]{height:10rem;min-width:10rem;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;border-radius:.25rem;background-color:#9ca3af1a;padding:1rem}.page-link[data-v-6e328dd5]:hover{background-color:#9ca3af33}.page-link>svg[data-v-6e328dd5]{font-size:3em;opacity:.5}

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More