[{"data":1,"prerenderedAt":853},["ShallowReactive",2],{"i-material-symbols:language":3,"i-material-symbols:light-mode-rounded":8,"i-material-symbols:dark-mode-rounded":10,"i-material-symbols:contrast":12,"i-material-symbols:menu-rounded":14,"case-list-en":16,"i-material-symbols:mic-outline":827,"i-material-symbols:document-scanner-outline":829,"i-material-symbols:groups-outline":831,"i-material-symbols:confirmation-number-outline":833,"i-material-symbols:handshake-outline":835,"i-material-symbols:location-city":837,"i-material-symbols:rocket-launch-outline":839,"i-material-symbols:newspaper":841,"i-material-symbols:support-agent":843,"i-material-symbols:business-center-outline":845,"i-material-symbols:apartment":847,"i-material-symbols:arrow-back-ios-new-rounded":849,"i-material-symbols:arrow-forward-ios-rounded":851},{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":7},0,24,false,"\u003Cpath fill=\"currentColor\" d=\"M8.125 21.213q-1.825-.788-3.187-2.15t-2.15-3.188T2 11.988t.788-3.875t2.15-3.175t3.187-2.15T12.013 2t3.875.788t3.175 2.15t2.15 3.175t.787 3.875t-.787 3.887t-2.15 3.188t-3.175 2.15t-3.875.787t-3.888-.787M12 19.95q.65-.9 1.125-1.875T13.9 16h-3.8q.3 1.1.775 2.075T12 19.95m-2.6-.4q-.45-.825-.787-1.713T8.05 16H5.1q.725 1.25 1.813 2.175T9.4 19.55m5.2 0q1.4-.45 2.488-1.375T18.9 16h-2.95q-.225.95-.562 1.838T14.6 19.55M4.25 14h3.4q-.075-.5-.112-.987T7.5 12t.038-1.012T7.65 10h-3.4q-.125.5-.187.988T4 12t.063 1.013t.187.987m5.4 0h4.7q.075-.5.113-.987T14.5 12t-.038-1.012T14.35 10h-4.7q-.075.5-.112.988T9.5 12t.038 1.013t.112.987m6.7 0h3.4q.125-.5.188-.987T20 12t-.062-1.012T19.75 10h-3.4q.075.5.113.988T16.5 12t-.038 1.013t-.112.987m-.4-6h2.95q-.725-1.25-1.812-2.175T14.6 4.45q.45.825.788 1.713T15.95 8M10.1 8h3.8q-.3-1.1-.775-2.075T12 4.05q-.65.9-1.125 1.875T10.1 8m-5 0h2.95q.225-.95.563-1.838T9.4 4.45Q8 4.9 6.912 5.825T5.1 8\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":9},"\u003Cpath fill=\"currentColor\" d=\"M8.463 15.538Q7 14.075 7 12t1.463-3.537T12 7t3.538 1.463T17 12t-1.463 3.538T12 17t-3.537-1.463M2 13q-.425 0-.712-.288T1 12t.288-.712T2 11h2q.425 0 .713.288T5 12t-.288.713T4 13zm18 0q-.425 0-.712-.288T19 12t.288-.712T20 11h2q.425 0 .713.288T23 12t-.288.713T22 13zm-8.712-8.287Q11 4.425 11 4V2q0-.425.288-.712T12 1t.713.288T13 2v2q0 .425-.288.713T12 5t-.712-.288m0 18Q11 22.426 11 22v-2q0-.425.288-.712T12 19t.713.288T13 20v2q0 .425-.288.713T12 23t-.712-.288M5.65 7.05L4.575 6q-.3-.275-.288-.7t.288-.725q.3-.3.725-.3t.7.3L7.05 5.65q.275.3.275.7t-.275.7t-.687.288t-.713-.288M18 19.425l-1.05-1.075q-.275-.3-.275-.712t.275-.688q.275-.3.688-.287t.712.287L19.425 18q.3.275.288.7t-.288.725q-.3.3-.725.3t-.7-.3M16.95 7.05q-.3-.275-.288-.687t.288-.713L18 4.575q.275-.3.7-.288t.725.288q.3.3.3.725t-.3.7L18.35 7.05q-.3.275-.7.275t-.7-.275M4.575 19.425q-.3-.3-.3-.725t.3-.7l1.075-1.05q.3-.275.712-.275t.688.275q.3.275.288.688t-.288.712L6 19.425q-.275.3-.7.288t-.725-.288\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":11},"\u003Cpath fill=\"currentColor\" d=\"M12 21q-3.775 0-6.387-2.613T3 12q0-3.45 2.25-5.988T11 3.05q.325-.05.575.088t.4.362t.163.525t-.188.575q-.425.65-.638 1.375T11.1 7.5q0 2.25 1.575 3.825T16.5 12.9q.775 0 1.538-.225t1.362-.625q.275-.175.563-.162t.512.137q.25.125.388.375t.087.6q-.35 3.45-2.937 5.725T12 21\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":13},"\u003Cpath fill=\"currentColor\" d=\"M8.1 21.213q-1.825-.788-3.175-2.138T2.788 15.9T2 12t.788-3.9t2.137-3.175T8.1 2.788T12 2t3.9.788t3.175 2.137T21.213 8.1T22 12t-.788 3.9t-2.137 3.175t-3.175 2.138T12 22t-3.9-.788m4.9-1.287q2.975-.375 4.988-2.613T20 12t-2.013-5.312T13 4.075z\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":15},"\u003Cpath fill=\"currentColor\" d=\"M4 18q-.425 0-.712-.288T3 17t.288-.712T4 16h16q.425 0 .713.288T21 17t-.288.713T20 18zm0-5q-.425 0-.712-.288T3 12t.288-.712T4 11h16q.425 0 .713.288T21 12t-.288.713T20 13zm0-5q-.425 0-.712-.288T3 7t.288-.712T4 6h16q.425 0 .713.288T21 7t-.288.713T20 8z\"\u002F>",[17,125,208,273,348,423,494,562,630,699,764],{"id":18,"title":19,"body":20,"description":89,"extension":96,"field":97,"icon":98,"kind":99,"meta":100,"navigation":101,"order":102,"path":103,"scope":104,"seo":111,"slug":112,"stack":113,"stem":120,"summary":121,"__hash__":122,"japaneseOnly":101,"locales":123},"cases\u002Fcases\u002Fja\u002F01-streaming-platform.md","配信プラットフォームの全面刷新と課金基盤の再構築",{"type":21,"value":22,"toc":88},"minimark",[23,27,31,34,47,50,64,67],[24,25,26],"h2",{"id":26},"概要",[28,29,30],"p",{},"クリエイターとファンをつなぐ配信プラットフォームの全面リニューアルです。長年 PHP（Laravel）で運用されてきたサービスを、機能を整理し直したうえで、Django の API と Nuxt の SSR による構成へ作り替えました。要件の整理から設計、デザイン、開発、インフラ、リリース後の運用まで一貫して担当しています。",[24,32,33],{"id":33},"課題",[35,36,37,41,44],"ul",{},[38,39,40],"li",{},"長く積み重なった機能と仕様が、コードの中にしか残っていない",[38,42,43],{},"課金・ポイント・報酬など、お金の流れが複雑で、誤りが許されない",[38,45,46],{},"既存の利用者やデータを、サービスを止めずに新しい基盤へ引き継ぐ必要がある",[24,48,49],{"id":49},"取り組み",[35,51,52,55,58,61],{},[38,53,54],{},"旧システムの挙動を洗い出し、機能を網羅した要件仕様書を作成してから再設計しました。",[38,56,57],{},"課金・ポイント・報酬は、すべての増減を台帳として記録する設計にし、残高や支払いをいつでも追跡・検証できるようにしました。",[38,59,60],{},"旧データベースから段階的にデータを移し、既存アカウントは初回ログイン時に新しい認証基盤へ移行する仕組みで、利用者に再登録を求めずに引き継ぎました。",[38,62,63],{},"ライブ配信（予約・通知）、HLS によるストリーミング再生、プッシュ通知に対応した PWA など、配信体験を支える機能を実装しました。",[24,65,66],{"id":66},"技術のポイント",[35,68,69,76,82],{},[38,70,71,75],{},[72,73,74],"strong",{},"台帳による整合性","：お金の流れを台帳で追えるようにし、不正や不整合を仕組みで防ぐ。",[38,77,78,81],{},[72,79,80],{},"段階的な移行","：旧システムと並行しながら、データと認証を利用者の負担なく移す。",[38,83,84,87],{},[72,85,86],{},"インフラのコード化","：AWS 上の環境を Terraform で管理し、再現性のある構築と運用を実現。",{"title":89,"searchDepth":90,"depth":90,"links":91},"",2,[92,93,94,95],{"id":26,"depth":90,"text":26},{"id":33,"depth":90,"text":33},{"id":49,"depth":90,"text":49},{"id":66,"depth":90,"text":66},"md","クリエイター支援","mic","migration",{},true,1,"\u002Fcases\u002Fja\u002F01-streaming-platform",[105,106,107,108,109,110],"企画","設計","デザイン","開発","インフラ","運用",{"title":19,"description":89},"streaming-platform",[114,115,116,117,118,119],"Django","Nuxt（SSR）","PWA","AWS","Terraform","Laravel（移行元）","cases\u002Fja\u002F01-streaming-platform","長く運用されてきた配信プラットフォームを、PHP から Django と Nuxt の構成へ全面的に作り直しました。ライブ配信や課金、報酬の仕組みまで含め、企画から運用までを担っています。","dztktK00YVYF2GO8xibjwSDss32_M_SqcxDsafxPtFQ",[124],"ja",{"id":126,"title":127,"body":128,"description":89,"extension":96,"field":192,"icon":193,"kind":194,"meta":195,"navigation":101,"order":90,"path":196,"scope":197,"seo":198,"slug":199,"stack":200,"stem":204,"summary":205,"__hash__":206,"japaneseOnly":101,"locales":207},"cases\u002Fcases\u002Fja\u002F02-ai-document-saas.md","生成 AI で書類の仕分けとデータ化を自動化する SaaS",{"type":21,"value":129,"toc":186},[130,132,135,137,148,150,164,166],[24,131,26],{"id":26},[28,133,134],{},"事業所に日々届く書類の仕分けや転記を、生成 AI で自動化するマルチテナントの SaaS です。管理サイト、事業所ごとの利用者向け画面、サービスサイト、API までをゼロから設計・開発し、リリース後の運用と改善も担っています。",[24,136,33],{"id":33},[35,138,139,142,145],{},[38,140,141],{},"書類の種類や様式がばらばらで、人の手で仕分け・転記するのに大きな手間がかかる",[38,143,144],{},"複数の事業所が使うため、データをテナントごとに確実に分ける必要がある",[38,146,147],{},"AI の処理には費用がかかるため、精度とコストの両立が求められる",[24,149,49],{"id":49},[35,151,152,155,158,161],{},[38,153,154],{},"取り込んだ書類をページ単位で解析し、向きや内容を判定したうえで、まとまりごとに分割・分類するパイプラインを構築しました。",[38,156,157],{},"必要な情報は構造化データとして取り出し、関連する記録へ自動で紐付けます。帳票の作成と PDF 出力にも対応しています。",[38,159,160],{},"処理の不要なページを早い段階で見分けて AI に送らないなど、運用コストを抑える工夫を入れています。",[38,162,163],{},"処理に失敗したときは自動で再試行・復旧し、担当者の手を止めない設計にしました。",[24,165,66],{"id":66},[35,167,168,174,180],{},[38,169,170,173],{},[72,171,172],{},"マルチテナント設計","：テナントごとのデータ分離と権限を、アプリケーションの土台から設計。",[38,175,176,179],{},[72,177,178],{},"生成 AI のパイプライン","：Gemini を使い、解析・分割・分類・抽出の各段階を組み合わせて精度を確保。",[38,181,182,185],{},[72,183,184],{},"管理画面","：django-unfold を使い、運用担当者が扱いやすい画面を短期間で実現。",{"title":89,"searchDepth":90,"depth":90,"links":187},[188,189,190,191],{"id":26,"depth":90,"text":26},{"id":33,"depth":90,"text":33},{"id":49,"depth":90,"text":49},{"id":66,"depth":90,"text":66},"介護・福祉","document","new",{},"\u002Fcases\u002Fja\u002F02-ai-document-saas",[106,107,108,109,110],{"title":127,"description":89},"ai-document-saas",[114,201,202,203,118],"django-unfold","Gemini","AWS ECS","cases\u002Fja\u002F02-ai-document-saas","事業所に届く大量の書類を、生成 AI でページ単位に解析し、分類・データ化するマルチテナント SaaS をゼロから開発しました。","cPugvORT-KQXMwQKDu3YtOWK55gIj_3EqntxrbAgQ74",[124],{"id":209,"title":210,"body":211,"description":89,"extension":96,"field":260,"icon":261,"kind":194,"meta":262,"navigation":101,"order":263,"path":264,"scope":265,"seo":266,"slug":267,"stack":268,"stem":269,"summary":270,"__hash__":271,"japaneseOnly":101,"locales":272},"cases\u002Fcases\u002Fja\u002F03-member-service.md","企業向け会員制 Web サービスの開発",{"type":21,"value":212,"toc":254},[213,215,218,220,228,230,238,240],[24,214,26],{"id":26},[28,216,217],{},"企業の担当者が利用する会員制の Web サービスです。デザインからシステムの設計・開発までを担当し、Django の管理画面と API、Nuxt の SSR による利用者向けのアプリケーションを構築しました。",[24,219,33],{"id":33},[35,221,222,225],{},[38,223,224],{},"個人と組織の両方の単位で、会員と権限を管理する必要がある",[38,226,227],{},"蓄積された情報を、利用者が目的に合わせて探しやすくしたい",[24,229,49],{"id":49},[35,231,232,235],{},[38,233,234],{},"会員登録・ログイン、組織の管理、料金プランなど、会員制サービスの基盤を構築しました。",[38,236,237],{},"蓄積された情報の検索、お気に入りや閲覧履歴、利用者どうしの掲示板を実装しました。",[24,239,66],{"id":66},[35,241,242,248],{},[38,243,244,247],{},[72,245,246],{},"SSR による体験","：ログイン後の画面も含めて Nuxt の SSR で構築し、表示の速さと検索エンジンへの対応を両立。",[38,249,250,253],{},[72,251,252],{},"管理と運営","：コンテンツや会員の情報を、運営チームが管理画面から扱える構成に。",{"title":89,"searchDepth":90,"depth":90,"links":255},[256,257,258,259],{"id":26,"depth":90,"text":26},{"id":33,"depth":90,"text":33},{"id":49,"depth":90,"text":49},{"id":66,"depth":90,"text":66},"官民連携","members",{},3,"\u002Fcases\u002Fja\u002F03-member-service",[106,107,108],{"title":210,"description":89},"member-service",[114,115],"cases\u002Fja\u002F03-member-service","企業の担当者が利用する会員制サービスを、ゼロから開発しました。会員登録から組織管理、データベース検索、掲示板までを備えています。","DG0Lht84Lr4dEC8tejKaQ7Q8veRhTQYMUDmQgDRrFVs",[124],{"id":274,"title":275,"body":276,"description":89,"extension":96,"field":334,"icon":335,"kind":194,"meta":336,"navigation":101,"order":337,"path":338,"scope":339,"seo":340,"slug":341,"stack":342,"stem":344,"summary":345,"__hash__":346,"japaneseOnly":101,"locales":347},"cases\u002Fcases\u002Fja\u002F04-event-system.md","年次イベントの特設サイトと参加者管理システム",{"type":21,"value":277,"toc":328},[278,280,283,285,296,298,312,314],[24,279,26],{"id":26},[28,281,282],{},"毎年開催されるイベントのための、特設サイトと参加者管理システムです。開催年度ごとの特設ページのデザインと実装に加え、参加者の管理、メール送信、会場での受付までを一つのシステムで扱えるようにしました。",[24,284,33],{"id":33},[35,286,287,290,293],{},[38,288,289],{},"年度ごとに特設ページを作り直しつつ、仕組みは継続して使いたい",[38,291,292],{},"申し込みに外部のサービスやフォームを組み合わせていたため、管理が分散していた",[38,294,295],{},"当日の会場受付を、多くの参加者に対して素早く行う必要がある",[24,297,49],{"id":49},[35,299,300,303,306,309],{},[38,301,302],{},"参加者ごとのマイページで、申し込みや予約ができるようにしました。",[38,304,305],{},"管理画面から、参加者の管理、コンテンツの更新、メールの一斉送信ができるようにしました。",[38,307,308],{},"会場では QR コードを読み取って受付を行い、参加者の情報と当日の割り当てをその場で確認できるようにしました。",[38,310,311],{},"年度ごとの特設ページは、共通の仕組みの上でデザインだけを差し替えられる構成にしています。",[24,313,66],{"id":66},[35,315,316,322],{},[38,317,318,321],{},[72,319,320],{},"SSG と SPA の組み合わせ","：告知ページは静的に生成して高速に配信し、マイページなどの動的な部分は SPA で構築。",[38,323,324,327],{},[72,325,326],{},"一貫した運営","：申し込みから受付までを自前のシステムにまとめ、運営の手間とデータの分散を解消。",{"title":89,"searchDepth":90,"depth":90,"links":329},[330,331,332,333],{"id":26,"depth":90,"text":26},{"id":33,"depth":90,"text":33},{"id":49,"depth":90,"text":49},{"id":66,"depth":90,"text":66},"人材・教育","ticket",{},4,"\u002Fcases\u002Fja\u002F04-event-system",[106,107,108],{"title":275,"description":89},"event-system",[114,343],"Nuxt（SSG + SPA）","cases\u002Fja\u002F04-event-system","毎年開催されるイベントの特設サイトと、申し込みから当日の受付までを一貫して扱う参加者管理システムを、ゼロから開発しました。","CCa-P-NAsVOlPHKigAy9xhJ-VOsU9yxTZ1LfV3sk-BM",[124],{"id":349,"title":350,"body":351,"description":89,"extension":96,"field":260,"icon":409,"kind":99,"meta":410,"navigation":101,"order":411,"path":412,"scope":413,"seo":414,"slug":415,"stack":416,"stem":419,"summary":420,"__hash__":421,"japaneseOnly":101,"locales":422},"cases\u002Fcases\u002Fja\u002F05-wordpress-migration.md","サービスサイトの WordPress からヘッドレス構成への移行",{"type":21,"value":352,"toc":403},[353,355,358,360,371,373,387,389],[24,354,26],{"id":26},[28,356,357],{},"WordPress で運用されていたサービスサイトを、Django の管理画面と API、Nuxt による静的サイト生成（SSG）の構成へ移行しました。既存のデザインを活かしつつ、必要な箇所は部分的にリデザインしています。",[24,359,33],{"id":33},[35,361,362,365,368],{},[38,363,364],{},"ページの表示に時間がかかり、閲覧体験と検索での評価に影響していた",[38,366,367],{},"更新する情報の種類が増え、運用に合った管理の仕組みが必要になっていた",[38,369,370],{},"デザインやコンテンツの資産は、できるだけそのまま引き継ぎたい",[24,372,49],{"id":49},[35,374,375,378,381,384],{},[38,376,377],{},"コンテンツを Django の管理画面へ移し、情報の種類ごとに入力しやすい画面を用意しました。",[38,379,380],{},"公開サイトは Nuxt の SSG で生成し、表示速度を改善しました。",[38,382,383],{},"既存のデザインを再現したうえで、使いにくかった箇所を部分的に見直しました。",[38,385,386],{},"構造化データやメタ情報を整え、SEO の対策を行いました。",[24,388,66],{"id":66},[35,390,391,397],{},[38,392,393,396],{},[72,394,395],{},"ヘッドレス構成","：管理と公開を分け、公開側は静的配信で高速かつ安定。",[38,398,399,402],{},[72,400,401],{},"資産を活かした移行","：デザインとコンテンツを引き継ぎ、見た目を大きく変えずに基盤だけを刷新。",{"title":89,"searchDepth":90,"depth":90,"links":404},[405,406,407,408],{"id":26,"depth":90,"text":26},{"id":33,"depth":90,"text":33},{"id":49,"depth":90,"text":49},{"id":66,"depth":90,"text":66},"handshake",{},5,"\u002Fcases\u002Fja\u002F05-wordpress-migration",[106,107,108],{"title":350,"description":89},"wordpress-migration",[114,417,418],"Nuxt（SSG）","WordPress（移行元）","cases\u002Fja\u002F05-wordpress-migration","WordPress で運用されていたサービスサイトを、既存のデザインを活かしながら Django と Nuxt の構成へ移行し、表示速度と SEO を改善しました。","ALnRsbYUh4IwvvyL6QRf54dCF-JYy0QZi8PpuXj_laA",[124],{"id":424,"title":425,"body":426,"description":89,"extension":96,"field":481,"icon":482,"kind":194,"meta":483,"navigation":101,"order":484,"path":485,"scope":486,"seo":487,"slug":488,"stack":489,"stem":490,"summary":491,"__hash__":492,"japaneseOnly":101,"locales":493},"cases\u002Fcases\u002Fja\u002F06-public-website.md","官民連携拠点の公式サイトと運用のための CMS",{"type":21,"value":427,"toc":475},[428,430,433,435,446,448,459,461],[24,429,26],{"id":26},[28,431,432],{},"自治体が運営する官民連携拠点の公式サイトです。デザインからシステムの設計・実装までをゼロから担当し、Django の管理画面と API、Nuxt による静的サイト生成の構成で構築しました。",[24,434,33],{"id":33},[35,436,437,440,443],{},[38,438,439],{},"公募の情報、活動の報告、お知らせ、参加団体の紹介など、性質の異なる情報を扱う",[38,441,442],{},"担当の職員が、技術者に頼らず日々の更新を行えるようにしたい",[38,444,445],{},"公共のサイトとして、安定して速く表示できることが求められる",[24,447,49],{"id":49},[35,449,450,453,456],{},[38,451,452],{},"情報の種類ごとに入力画面を分けた CMS を構築し、職員が迷わず更新できるようにしました。",[38,454,455],{},"公開サイトは Nuxt の SSG で生成し、静的に配信しています。",[38,457,458],{},"情報が増えても探しやすい一覧と詳細ページを設計しました。",[24,460,66],{"id":66},[35,462,463,469],{},[38,464,465,468],{},[72,466,467],{},"静的配信による安定性","：アクセスが集中しても表示が遅くなりにくい構成。",[38,470,471,474],{},[72,472,473],{},"運用に合わせた CMS","：入力項目を情報の種類ごとに設計し、更新の手間と誤りを減らす。",{"title":89,"searchDepth":90,"depth":90,"links":476},[477,478,479,480],{"id":26,"depth":90,"text":26},{"id":33,"depth":90,"text":33},{"id":49,"depth":90,"text":49},{"id":66,"depth":90,"text":66},"自治体・公共","city",{},6,"\u002Fcases\u002Fja\u002F06-public-website",[106,107,108],{"title":425,"description":89},"public-website",[114,417],"cases\u002Fja\u002F06-public-website","自治体の官民連携拠点の公式サイトを、デザインからシステムまでゼロから構築しました。性質の異なる情報を職員が更新できる CMS を備えています。","FdnAl6XvReQXV4Hj1AAxnarJeUsrkC7hCdjecXrir5A",[124],{"id":495,"title":496,"body":497,"description":89,"extension":96,"field":549,"icon":550,"kind":194,"meta":551,"navigation":101,"order":552,"path":553,"scope":554,"seo":555,"slug":556,"stack":557,"stem":558,"summary":559,"__hash__":560,"japaneseOnly":101,"locales":561},"cases\u002Fcases\u002Fja\u002F07-program-website.md","スタートアップ支援プログラムの公式サイトと運営 CMS",{"type":21,"value":498,"toc":543},[499,501,504,506,514,516,527,529],[24,500,26],{"id":26},[28,502,503],{},"スタートアップを支援するプログラムの公式サイトです。デザインはパートナーが担当し、LaunchAt はシステムの設計から実装までを担いました。Django の管理画面と API、Nuxt による静的サイト生成で構築しています。",[24,505,33],{"id":33},[35,507,508,511],{},[38,509,510],{},"複数のプログラムの募集、採択企業、お知らせ、関係者の紹介など、更新する情報が多い",[38,512,513],{},"運営チームが、技術者に頼らずに情報を追加・更新できるようにしたい",[24,515,49],{"id":49},[35,517,518,521,524],{},[38,519,520],{},"プログラムや採択企業、お知らせ、関係者などを、それぞれの入力画面で管理できる CMS を構築しました。",[38,522,523],{},"募集期間などのデータをもとに、締め切りの表示を自動で切り替えるようにしました。",[38,525,526],{},"公開サイトは Nuxt の SSG で生成し、デザインを忠実に再現しました。",[24,528,66],{"id":66},[35,530,531,537],{},[38,532,533,536],{},[72,534,535],{},"デザインパートナーとの協業","：受け取ったデザインを、運用しやすいデータ構造と画面に落とし込む。",[38,538,539,542],{},[72,540,541],{},"静的配信","：公開側は静的に配信し、速さと安定性を確保。",{"title":89,"searchDepth":90,"depth":90,"links":544},[545,546,547,548],{"id":26,"depth":90,"text":26},{"id":33,"depth":90,"text":33},{"id":49,"depth":90,"text":49},{"id":66,"depth":90,"text":66},"スタートアップ支援","rocket",{},7,"\u002Fcases\u002Fja\u002F07-program-website",[106,108],{"title":496,"description":89},"program-website",[114,417],"cases\u002Fja\u002F07-program-website","スタートアップを支援するプログラムの公式サイトを、システムの設計から実装までゼロから構築しました。募集情報や採択企業を運営チームが CMS で管理できます。","GcfaTkr0p1fcBCDkjwsfhd7VVTpavrMgSGc3QpS07iA",[124],{"id":563,"title":564,"body":565,"description":89,"extension":96,"field":617,"icon":618,"kind":194,"meta":619,"navigation":101,"order":620,"path":621,"scope":622,"seo":623,"slug":624,"stack":625,"stem":626,"summary":627,"__hash__":628,"japaneseOnly":101,"locales":629},"cases\u002Fcases\u002Fja\u002F08-owned-media.md","記事を継続的に発信するオウンドメディアの構築",{"type":21,"value":566,"toc":611},[567,569,572,574,582,584,595,597],[24,568,26],{"id":26},[28,570,571],{},"事例紹介やインタビュー、寄稿などを継続的に発信するオウンドメディアです。デザインはパートナーが担当し、LaunchAt はシステムの設計と実装を担いました。Django の管理画面と API、Nuxt の静的サイト生成で構築しています。",[24,573,33],{"id":33},[35,575,576,579],{},[38,577,578],{},"記事を継続的に公開していくため、編集しやすい CMS が必要",[38,580,581],{},"検索からの流入を増やすため、表示の速さと SEO への配慮が欠かせない",[24,583,49],{"id":49},[35,585,586,589,592],{},[38,587,588],{},"記事の種類やカテゴリに合わせた CMS を構築し、編集者が記事を作りやすい入力画面を用意しました。",[38,590,591],{},"カテゴリでの絞り込みや、関連する記事・サービスへの導線を設計しました。",[38,593,594],{},"公開サイトは Nuxt の SSG で生成し、表示速度と SEO を確保しています。",[24,596,66],{"id":66},[35,598,599,605],{},[38,600,601,604],{},[72,602,603],{},"記事を量産できる CMS","：記事の種類ごとに入力項目を整理し、編集の手間を減らす。",[38,606,607,610],{},[72,608,609],{},"基盤の共通化","：関連するサイトと同じ構成を使い、開発と運用の負担を抑える。",{"title":89,"searchDepth":90,"depth":90,"links":612},[613,614,615,616],{"id":26,"depth":90,"text":26},{"id":33,"depth":90,"text":33},{"id":49,"depth":90,"text":49},{"id":66,"depth":90,"text":66},"メディア","media",{},8,"\u002Fcases\u002Fja\u002F08-owned-media",[106,108],{"title":564,"description":89},"owned-media",[114,417],"cases\u002Fja\u002F08-owned-media","事例やインタビューを継続的に発信するオウンドメディアを、システムの設計から実装までゼロから構築しました。","-JT-YQBhZ5kdPrgXr1UVyWR97QoEMoo7nG0VdvMt3CQ",[124],{"id":631,"title":632,"body":633,"description":89,"extension":96,"field":97,"icon":684,"kind":194,"meta":685,"navigation":101,"order":686,"path":687,"scope":688,"seo":689,"slug":690,"stack":691,"stem":695,"summary":696,"__hash__":697,"japaneseOnly":101,"locales":698},"cases\u002Fcases\u002Fja\u002F09-help-center.md","ヘルプセンターの構築と公開の自動化",{"type":21,"value":634,"toc":678},[635,637,640,642,650,652,663,665],[24,636,26],{"id":26},[28,638,639],{},"Web サービスの利用者に向けたヘルプセンターです。よくある質問、お知らせ、ガイドライン、リリースノートなどを掲載し、記事を横断して検索できます。デザインからインフラまでを担当しました。",[24,641,33],{"id":33},[35,643,644,647],{},[38,645,646],{},"問い合わせを減らすため、利用者が自分で答えを見つけられる場所が必要",[38,648,649],{},"運営チームが、技術者に頼らずに記事を公開・更新できるようにしたい",[24,651,49],{"id":49},[35,653,654,657,660],{},[38,655,656],{},"記事は microCMS で管理し、カテゴリ別の一覧と横断検索で探しやすくしました。",[38,658,659],{},"公開サイトは Nuxt の SSG で生成し、S3 と CloudFront で配信しています。",[38,661,662],{},"microCMS で記事を公開すると、Webhook から GitHub Actions と AWS のパイプラインが動き、サイトの再生成とデプロイが自動で行われます。",[24,664,66],{"id":66},[35,666,667,673],{},[38,668,669,672],{},[72,670,671],{},"公開の自動化","：記事の公開からサイトへの反映まで、人の手を介さない仕組み。",[38,674,675,677],{},[72,676,86],{},"：配信環境を CloudFormation で管理し、再現できる形に。",{"title":89,"searchDepth":90,"depth":90,"links":679},[680,681,682,683],{"id":26,"depth":90,"text":26},{"id":33,"depth":90,"text":33},{"id":49,"depth":90,"text":49},{"id":66,"depth":90,"text":66},"support",{},9,"\u002Fcases\u002Fja\u002F09-help-center",[106,107,108,109],{"title":632,"description":89},"help-center",[692,417,117,693,694],"microCMS","CloudFormation","GitHub Actions","cases\u002Fja\u002F09-help-center","サービスのヘルプセンターを、ヘッドレス CMS と静的サイト生成で構築しました。記事を公開するだけで、サイトが自動で更新されます。","3Kr_xh9Cx_-0JX4rihZd9bEy4_HhNWZ6YQtPLGc1tIU",[124],{"id":700,"title":701,"body":702,"description":89,"extension":96,"field":334,"icon":752,"kind":194,"meta":753,"navigation":101,"order":754,"path":755,"scope":756,"seo":757,"slug":758,"stack":759,"stem":760,"summary":761,"__hash__":762,"japaneseOnly":101,"locales":763},"cases\u002Fcases\u002Fja\u002F10-corporate-site-hr.md","ヘッドレス CMS で運用するコーポレートサイト",{"type":21,"value":703,"toc":746},[704,706,709,711,719,721,731,733],[24,705,26],{"id":26},[28,707,708],{},"人材分野の企業のコーポレートサイトです。デザインから実装までを担当し、microCMS と Nuxt による静的サイト生成で構築しました。",[24,710,33],{"id":33},[35,712,713,716],{},[38,714,715],{},"サービス紹介、事例、ニュース、採用情報など、更新の多い情報を手軽に運用したい",[38,717,718],{},"サーバーの管理にかかる手間と費用を抑えたい",[24,720,49],{"id":49},[35,722,723,726,728],{},[38,724,725],{},"更新の多い情報は microCMS で管理し、担当者が管理画面から更新できるようにしました。",[38,727,455],{},[38,729,730],{},"問い合わせへの導線を、各ページから自然に用意しました。",[24,732,66],{"id":66},[35,734,735,741],{},[38,736,737,740],{},[72,738,739],{},"ヘッドレス CMS の活用","：CMS をサービスとして使い、サーバーの運用を持たずに済む構成。",[38,742,743,745],{},[72,744,541],{},"：表示が速く、保守の手間も小さい。",{"title":89,"searchDepth":90,"depth":90,"links":747},[748,749,750,751],{"id":26,"depth":90,"text":26},{"id":33,"depth":90,"text":33},{"id":49,"depth":90,"text":49},{"id":66,"depth":90,"text":66},"business",{},10,"\u002Fcases\u002Fja\u002F10-corporate-site-hr",[106,107,108],{"title":701,"description":89},"corporate-site-hr",[692,417],"cases\u002Fja\u002F10-corporate-site-hr","人材分野の企業のコーポレートサイトを、デザインから実装までゼロから構築しました。ヘッドレス CMS で、少ない負担で運用できます。","vcGYPpDKDEYfPVxunt1OF-Zvy_gZ5ZzhE-nhw4Vx-jU",[124],{"id":765,"title":766,"body":767,"description":89,"extension":96,"field":192,"icon":815,"kind":194,"meta":816,"navigation":101,"order":817,"path":818,"scope":819,"seo":820,"slug":821,"stack":822,"stem":823,"summary":824,"__hash__":825,"japaneseOnly":101,"locales":826},"cases\u002Fcases\u002Fja\u002F11-corporate-site-ai.md","プロダクトと連動するコーポレートサイト",{"type":21,"value":768,"toc":809},[769,771,774,776,784,786,794,796],[24,770,26],{"id":26},[28,772,773],{},"生成 AI のプロダクトを展開する企業のコーポレートサイトです。プロダクトの開発とあわせて、会社の顔となるサイトのデザインと実装を担当しました。microCMS と Nuxt による静的サイト生成で構築しています。",[24,775,33],{"id":33},[35,777,778,781],{},[38,779,780],{},"事業とプロダクトの両方を、わかりやすく伝えたい",[38,782,783],{},"お知らせや活動の紹介を、担当者が手軽に更新できるようにしたい",[24,785,49],{"id":49},[35,787,788,791],{},[38,789,790],{},"事業の紹介、プロダクトの紹介、お知らせ、よくある質問、問い合わせを、一貫したデザインで構成しました。",[38,792,793],{},"更新の多い情報は microCMS で管理し、管理画面から更新できるようにしました。",[24,795,66],{"id":66},[35,797,798,804],{},[38,799,800,803],{},[72,801,802],{},"プロダクトとの一体感","：プロダクトと同じチームが手がけ、伝える内容と見た目を揃える。",[38,805,806,808],{},[72,807,541],{},"：表示が速く、運用の負担が小さい構成。",{"title":89,"searchDepth":90,"depth":90,"links":810},[811,812,813,814],{"id":26,"depth":90,"text":26},{"id":33,"depth":90,"text":33},{"id":49,"depth":90,"text":49},{"id":66,"depth":90,"text":66},"apartment",{},11,"\u002Fcases\u002Fja\u002F11-corporate-site-ai",[106,107,108],{"title":766,"description":89},"corporate-site-ai",[692,417],"cases\u002Fja\u002F11-corporate-site-ai","生成 AI のプロダクトを展開する企業のコーポレートサイトを、デザインから実装までゼロから構築しました。","lamKApuDyYMRspkGMtH7vPxwLlmN6HwuncfgARtCW84",[124],{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":828},"\u003Cpath fill=\"currentColor\" d=\"M9.875 13.125Q9 12.25 9 11V5q0-1.25.875-2.125T12 2t2.125.875T15 5v6q0 1.25-.875 2.125T12 14t-2.125-.875M11 21v-3.075q-2.6-.35-4.3-2.325T5 11h2q0 2.075 1.463 3.538T12 16t3.538-1.463T17 11h2q0 2.625-1.7 4.6T13 17.925V21zm1.713-9.287Q13 11.425 13 11V5q0-.425-.288-.712T12 4t-.712.288T11 5v6q0 .425.288.713T12 12t.713-.288\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":830},"\u003Cpath fill=\"currentColor\" d=\"M2 6V1h5v2H4v3zm18 0V3h-3V1h5v5zM2 23v-5h2v3h3v2zm15 0v-2h3v-3h2v5zM7 18h10V6H7zm0 2q-.825 0-1.412-.587T5 18V6q0-.825.588-1.412T7 4h10q.825 0 1.413.588T19 6v12q0 .825-.587 1.413T17 20zm2-10h6V8H9zm0 3h6v-2H9zm0 3h6v-2H9zm-2 2V6z\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":832},"\u003Cpath fill=\"currentColor\" d=\"M0 18v-1.575q0-1.075 1.1-1.75T4 14q.325 0 .625.013t.575.062q-.35.525-.525 1.1t-.175 1.2V18zm6 0v-1.625q0-.8.438-1.463t1.237-1.162T9.588 13T12 12.75q1.325 0 2.438.25t1.912.75t1.225 1.163t.425 1.462V18zm13.5 0v-1.625q0-.65-.162-1.225t-.488-1.075q.275-.05.563-.062T20 14q1.8 0 2.9.663t1.1 1.762V18zM8.125 16H15.9q-.25-.5-1.388-.875T12 14.75t-2.512.375T8.125 16M4 13q-.825 0-1.412-.587T2 11q0-.85.588-1.425T4 9q.85 0 1.425.575T6 11q0 .825-.575 1.413T4 13m16 0q-.825 0-1.412-.587T18 11q0-.85.588-1.425T20 9q.85 0 1.425.575T22 11q0 .825-.575 1.413T20 13m-8-1q-1.25 0-2.125-.875T9 9q0-1.275.875-2.137T12 6q1.275 0 2.138.863T15 9q0 1.25-.862 2.125T12 12m0-2q.425 0 .713-.288T13 9t-.288-.712T12 8t-.712.288T11 9t.288.713T12 10m0-1\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":834},"\u003Cpath fill=\"currentColor\" d=\"M12 17q.425 0 .713-.288T13 16t-.288-.712T12 15t-.712.288T11 16t.288.713T12 17m0-4q.425 0 .713-.288T13 12t-.288-.712T12 11t-.712.288T11 12t.288.713T12 13m0-4q.425 0 .713-.288T13 8t-.288-.712T12 7t-.712.288T11 8t.288.713T12 9m8 11H4q-.825 0-1.412-.587T2 18v-4q.825 0 1.413-.587T4 12t-.587-1.412T2 10V6q0-.825.588-1.412T4 4h16q.825 0 1.413.588T22 6v4q-.825 0-1.412.588T20 12t.588 1.413T22 14v4q0 .825-.587 1.413T20 20m0-2v-2.55q-.925-.55-1.463-1.462T18 12t.538-1.987T20 8.55V6H4v2.55q.925.55 1.463 1.463T6 12t-.537 1.988T4 15.45V18zm-8-6\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":836},"\u003Cpath fill=\"currentColor\" d=\"M11.875 20q.1 0 .2-.05t.15-.1l8.2-8.2q.3-.3.438-.675t.137-.75q0-.4-.137-.763t-.438-.637l-4.25-4.25q-.275-.3-.638-.437T14.776 4q-.375 0-.75.138t-.675.437l-.275.275l1.85 1.875q.375.35.55.8t.175.95q0 1.05-.712 1.763t-1.763.712q-.5 0-.962-.175t-.813-.525L9.525 8.4L5.15 12.775q-.075.075-.112.163T5 13.125q0 .2.15.363t.35.162q.1 0 .2-.05t.15-.1l3.4-3.4l1.4 1.4l-3.375 3.4q-.075.075-.112.163t-.038.187q0 .2.15.35t.35.15q.1 0 .2-.05t.15-.1l3.4-3.375l1.4 1.4l-3.375 3.4q-.075.05-.112.15t-.038.2q0 .2.15.35t.35.15q.1 0 .188-.038t.162-.112l3.4-3.375l1.4 1.4l-3.4 3.4q-.075.075-.112.162t-.038.188q0 .2.163.35t.362.15m-.025 2q-.925 0-1.637-.612t-.838-1.538q-.85-.125-1.425-.7t-.7-1.425q-.85-.125-1.412-.712T5.15 15.6q-.95-.125-1.55-.825t-.6-1.65q0-.5.188-.962t.537-.813l5.8-5.775L12.8 8.85q.05.075.15.113t.2.037q.225 0 .375-.137t.15-.363q0-.1-.038-.2t-.112-.15L9.95 4.575q-.275-.3-.637-.437T8.55 4q-.375 0-.75.138t-.675.437L3.6 8.125q-.225.225-.375.525t-.2.6t0 .613t.2.587l-1.45 1.45q-.425-.575-.625-1.262T1 9.25t.35-1.362t.825-1.188L5.7 3.175Q6.3 2.6 7.038 2.3T8.55 2t1.513.3t1.312.875l.275.275l.275-.275q.6-.575 1.338-.875t1.512-.3t1.513.3t1.312.875L21.825 7.4q.575.575.875 1.325t.3 1.525t-.3 1.513t-.875 1.312l-8.2 8.175q-.35.35-.812.55t-.963.2M9.375 8\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":838},"\u003Cpath fill=\"currentColor\" d=\"M3 21V7h6V5l3-3l3 3v6h6v10zm2-2h2v-2H5zm0-4h2v-2H5zm0-4h2V9H5zm6 8h2v-2h-2zm0-4h2v-2h-2zm0-4h2V9h-2zm0-4h2V5h-2zm6 12h2v-2h-2zm0-4h2v-2h-2z\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":840},"\u003Cpath fill=\"currentColor\" d=\"m5.65 10.025l1.95.825q.35-.7.725-1.35t.825-1.3l-1.4-.275zM9.2 12.1l2.85 2.825q1.05-.4 2.25-1.225t2.25-1.875q1.75-1.75 2.738-3.887T20.15 4q-1.8-.125-3.95.863T12.3 7.6q-1.05 1.05-1.875 2.25T9.2 12.1m3.875-3.037q0-.838.575-1.413t1.425-.575t1.425.575t.575 1.413t-.575 1.412t-1.425.575t-1.425-.575t-.575-1.412m1.05 9.437l2.1-2.1l-.275-1.4q-.65.45-1.3.812t-1.35.713zM21.95 2.175q.475 3.025-.587 5.888T17.7 13.525L18.2 16q.1.5-.05.975t-.5.825l-4.2 4.2l-2.1-4.925L7.075 12.8L2.15 10.7l4.175-4.2q.35-.35.838-.5t.987-.05l2.475.5q2.6-2.6 5.45-3.675t5.875-.6m-18.025 13.8q.875-.875 2.138-.887t2.137.862t.863 2.138t-.888 2.137q-.625.625-2.087 1.075t-4.038.8q.35-2.575.8-4.038t1.075-2.087m1.425 1.4q-.25.25-.5.913t-.35 1.337q.675-.1 1.338-.337t.912-.488q.3-.3.325-.725T6.8 17.35t-.725-.288t-.725.313\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":842},"\u003Cpath fill=\"currentColor\" d=\"M4 21q-.825 0-1.412-.587T2 19V3l1.675 1.675L5.325 3L7 4.675L8.675 3l1.65 1.675L12 3l1.675 1.675L15.325 3L17 4.675L18.675 3l1.65 1.675L22 3v16q0 .825-.587 1.413T20 21zm0-2h7v-6H4zm9 0h7v-2h-7zm0-4h7v-2h-7zm-9-4h16V8H4z\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":844},"\u003Cpath fill=\"currentColor\" d=\"M11 21v-2h8v-7.1q0-2.925-2.037-4.962T12 4.9T7.038 6.938T5 11.9V18H4q-.825 0-1.412-.587T2 16v-2q0-.525.263-.987T3 12.275l.075-1.325q.2-1.7.988-3.15t1.975-2.525T8.762 3.6T12 3t3.225.6t2.725 1.663t1.975 2.512t1 3.15l.075 1.3q.475.225.738.675t.262.95v2.3q0 .5-.262.95t-.738.675V19q0 .825-.587 1.413T19 21zm-2.713-7.287Q8 13.425 8 13t.288-.712T9 12t.713.288T10 13t-.288.713T9 14t-.712-.288m6 0Q14 13.426 14 13t.288-.712T15 12t.713.288T16 13t-.288.713T15 14t-.712-.288M6.025 12.45Q5.85 9.8 7.625 7.9T12.05 6q2.225 0 3.913 1.413T18 11.025Q15.725 11 13.813 9.8t-2.938-3.25q-.4 2-1.687 3.563T6.025 12.45\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":846},"\u003Cpath fill=\"currentColor\" d=\"M4 21q-.825 0-1.412-.587T2 19V8q0-.825.588-1.412T4 6h4V4q0-.825.588-1.412T10 2h4q.825 0 1.413.588T16 4v2h4q.825 0 1.413.588T22 8v11q0 .825-.587 1.413T20 21zm6-15h4V4h-4zm10 9h-5v2H9v-2H4v4h16zm-9 0h2v-2h-2zm-7-2h5v-2h6v2h5V8H4zm8 1\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":848},"\u003Cpath fill=\"currentColor\" d=\"M3 21V7h4V3h10v8h4v10h-8v-4h-2v4zm2-2h2v-2H5zm0-4h2v-2H5zm0-4h2V9H5zm4 4h2v-2H9zm0-4h2V9H9zm0-4h2V5H9zm4 8h2v-2h-2zm0-4h2V9h-2zm0-4h2V5h-2zm4 12h2v-2h-2zm0-4h2v-2h-2z\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":850},"\u003Cpath fill=\"currentColor\" d=\"m9.55 12l7.35 7.35q.375.375.363.875t-.388.875t-.875.375t-.875-.375l-7.7-7.675q-.3-.3-.45-.675t-.15-.75t.15-.75t.45-.675l7.7-7.7q.375-.375.888-.363t.887.388t.375.875t-.375.875z\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":852},"\u003Cpath fill=\"currentColor\" d=\"m14.475 12l-7.35-7.35q-.375-.375-.363-.888t.388-.887t.888-.375t.887.375l7.675 7.7q.3.3.45.675t.15.75t-.15.75t-.45.675l-7.7 7.7q-.375.375-.875.363T7.15 21.1t-.375-.888t.375-.887z\"\u002F>",1794605450812]