diff --git a/src/pages/portfolio/[id].jsx b/src/pages/portfolio/[id].jsx
new file mode 100644
index 0000000..027d8c9
--- /dev/null
+++ b/src/pages/portfolio/[id].jsx
@@ -0,0 +1,56 @@
+import { Footer } from "../../components/Footer/Footer";
+import { Header } from "../../components/Header/Header";
+import styles from "./portfolio.module.scss";
+
+// pages/blog/[id].js
+export default function BlogId({ blog }) {
+ return (
+
+
+
+ {blog.title}
+
+
+
+
+ );
+}
+
+// 静的生成のためのパスを指定します
+export const getStaticPaths = async () => {
+ const key = {
+ headers: { "X-API-KEY": process.env.API_KEY },
+ };
+ const data = await fetch(
+ "https://ratio-observatory.microcms.io/api/v1/contents",
+ key
+ )
+ .then((res) => res.json())
+ .catch(() => null);
+ const paths = data.contents.map((content) => `/portfolio/${content.id}`);
+ return { paths, fallback: false };
+};
+
+// データをテンプレートに受け渡す部分の処理を記述します
+export const getStaticProps = async (context) => {
+ const id = context.params.id;
+ const key = {
+ headers: { "X-API-KEY": process.env.API_KEY },
+ };
+ const data = await fetch(
+ "https://ratio-observatory.microcms.io/api/v1/contents/" + id,
+ key
+ )
+ .then((res) => res.json())
+ .catch(() => null);
+ return {
+ props: {
+ blog: data,
+ },
+ };
+};