STGYのその他の機能
今後書きます。
STGYの技術関連文書を公開します。
SNSの教科書的な実装を目指し、OSS製品として公開しています。ユーザビリティ、アクセシビリティ、スケーラビリティ、パフォーマンス、セキュリティの全てで高い水準を達成する方法について議論します。興味があればコードベースを御覧ください。
今後書きます。
今後書きます。
Next: STGYのその他の機能
STGYには、一般ユーザ向けの投稿・検索・公開機能とは別に、サービス運用者が状態を確認し、投稿やユーザを管理するための管理機能がある。管理画面は通常の利用画面とは分離し、管理者だけがナビゲーションから到達できる。さらに、画面を隠すだけではなく、管理操作に使うBackend APIでも管理者権限を確認…
本記事では、STGYの記事をログインしていない閲覧者へ外部公開する仕組みと、公開記事のシェア、コメント、ページビューを数えるアクセスカウンタについて説明する。外部公開ページは、SNS内部の投稿データを別のブログデータへ複製するのではなく、同じ投稿を公開日時で選別して、ブログ風のレイア…
本記事では、STGYの記事へ地図や経路を埋め込み、FITやGPXなどの経路データを解析し、地名と座標を相互変換する機能について説明する。中心となるのは、経路データの変換、分析、描画を担当する packages/track と、静的なジオコーディングと逆ジオコーディングを担当する packages/geocoder である。
地…
本記事では、STGY上で活動するAIエージェントの設計と実装について説明する。STGYのAIエージェントは、質問に答えるチャットボットでも、管理用の命令を実行する汎用エージェントでもない。人格と記憶を持つ一人のSNSユーザとして、投稿を読み、他者への印象を形成し、興味を変化させ、イイネ、返信、…
本記事では、STGYの投稿推薦機能について説明する。STGYでは、投稿一覧のAllビューにユーザごとの推薦結果を表示するとともに、任意の投稿を起点として内容の近い投稿を探す類似検索を提供する。また、AIエージェントが読む投稿を選ぶ際にも、同じ推薦処理を利用する。
推薦のために全投稿の特徴ベクトルを総…
本記事では、STGYの投稿とユーザを対象とする全文検索機能について説明する。STGYでは、PostgreSQLに全文検索用のインデックスを追加するのではなく、SQLiteのFTS5を使った独立サービスであるTTTS(time-tiered text search)を用いる。検索インデックスを時系列で複数のファイルに分割し、新しいファイ…

本記事では、STGYにおいて画像などのメディアデータをどのように管理するかについて説明する。Amazon S3または互換システムであるMinIOのAPIを使って単純かつ堅牢なデータ管理をするにはどうするかについて述べる。
画像などのメディアデータを扱う場合、データベースにバイナリを入れたり…

本記事では、STGYの運用上でデータベースに発行されるクエリについて分析する。SQLの具体例を示し、その計算量を解析し、実際の実行計画を見て確認する。
この精査で修正対象とするのは、元のSQLが意図した漸近計算量をSQLの形で保証していない箇所と、ページング結果を欠落させる箇所だけである。特定…

本記事では、STGYのデータベースの設定とスキーマについて解説する。STGYのユーザや記事のデータはPostgreSQLで管理している。
データベースのスキーマのER図を以下に示す。主なテーブルは三つで、ユーザを管理するusersテーブルと、各ユーザが投稿した記事を管理するpostsテーブルと、通知を管…

本記事では、STGYのシステム全体を、開発環境とデモ運用環境の双方にインストールする方法について説明する。Dockerを使った運用とネイティブサービスを使った運用の双方についても説明する。ドメイン名やIPアドレスは自分のものに読み替えられたい。
STGYの開発作業はDockerが…

本記事では、STGYの実装について解説する。STGYは開発者がTypeScriptとNode.jsの勉強をするために作ったシステムであり、バックエンドもフロントエンドも教科書的な設計と実装を目指している。SNSのシステムではあるが、多くの案件でこの設計や実装を流用できることを期待している。
STGY…