Insights / 技術解説
プロフィール情報を下書きに取り込む:手編集と公開操作を守る設計
テキスト・CSV・静的HTML・共通JSONからプロフィールを取り込む実装を一般化。現在値との比較、項目の選択と置換、取消、保存・公開、未対応の入力を整理します。

この記事の目次
すでに書いたプロフィールを別の編集画面へ移すとき、現在の値と取込候補を見比べてから置き換える必要があります。匿名化した取込実装をもとに、取込と公開の境界を紹介します。
手編集を残せるか、自己紹介の一項目で試す
既存の自己紹介に手編集を加え、異なる文を含む入力から候補を作ります。項目を選ばなければ現値が残ること、選択時は置換を確認できること、取消後に元へ戻ることを順に試してください。適用後は下書きと公開ページを比べ、取込だけで公開が変わらないか確認します。
対応する入力形式を先に決める
初期段階のテキスト、CSV、静的HTMLに加え、共通JSONファイルの読込みとひな形のダウンロードを追加しました。貼り付けた内容やファイルを解析することと、URL先へアクセスして情報を取得することは別です。サービスごとの専用export、URLからの自動取得、画像・音声の移行、動的ページや外部サービスのAPI対応を完成済みとはしません。
HTMLは取込元のデータとして扱い、scriptや入力HTMLそのものを公開画面で実行・描画しません。文字数、項目、リンク、入力形式の制約を決め、プロフィールに必要なテキストの候補へ変換します。
候補のプレビューと本人の編集を分ける
解析した結果をすぐ公開せず、現在の値と候補を比較します。本人が項目ごとに選び、必要なら候補の値を編集してから編集画面へ反映します。選んだ項目は現在の値を置き換えるため、再取込時も差分を確認する必要があります。適用の取消もできます。既存値の比較と取消は、別の画面や利用者による編集を含むすべての競合を自動解決する保証ではありません。
共通JSONとサービス別対応状況を分ける
共通JSONのひな形と、七つの活動先サービスの対応状況を表示します。共通形式でデータを読み込めることと、各サービスのURLを直接取得できることは同じではありません。未対応のURLは自動取得せず、貼り付けによる取込へ案内します。表示された活動先のすべてに専用のexportやAPI連携を実装したという意味ではありません。
合成データで、JSONの取込、現在値との比較、選択反映、取消、モバイル表示を確認しました。実利用者の保存・公開までの受入は、これとは別に確認する必要があります。
入力から資格や権利を推定しない
自己紹介文や外部のページに含まれる表現だけで、資格、所属、カテゴリ、ライセンスを自動確定しません。候補として取り込める説明文と、本人確認や申請が必要な情報を分けます。外部の情報が新しくなっても、本人が確定したプロフィールを自動で公開更新しない設計にします。
保存と公開に別の判断を残す
取込候補の適用、下書きの保存、公開snapshotの更新は別の操作です。入力や保存の競合も受入で確認すべき項目で、保存に成功しただけで公開済みとはしません。関連リンクや公開カレンダーのURLも、公開される値を本人が確認し、本人用のメモを公開用データへ混ぜないようにします。
関連する更新:公開予定からHTTPSリンクを開く
取込とは別の編集機能として、公開カレンダーの予定にHTTPSリンクを設定する改修も反映しました。公開側では予定から指定先を新しいタブで直接開き、リンクが無い予定は操作できるリンクを作らず表示します。URLの形式、認証情報を含まないこと、入力長を検証し、リンクには noopener noreferrer を付け、新しいタブが開くことを読み上げ名にも含めます。
関連する入力画面では、コラボ可能枠の不要なタイトル欄と自分用メモ欄を整理しました。DB変更・CI・本番配信・検証用データの画面を確認していますが、本人がログインして実際の予定を保存・公開する受入は未確認です。
- プロフィール取込 対応形式を本人が確認・編集。保存と公開は別操作。
- 公開予定リンク HTTPSリンクは安全な新規tabで開く。リンクなしは非操作表示。
確認できたことと次の受入
テキスト・CSV・静的HTMLと共通JSONの取込処理は実装・統合・本番配信を確認しています。一方、実利用者が取り込み、編集を保持して保存し、公開後も正しく表示されるところまでの通し検証は未実施です。活動先のURLからプロフィール全体を自動作成する別の草案は、まだ本番の完成範囲に含めません。
公開するCSSの境界はユーザーCSSと公開テーマの安全設計、ログインの境界は複数サービスのセッション設計も参照してください。