PageSourceSearch

https://www.greenstudio.jp/portfolio/

html greenstudio.jp collected 2026-10-02 16:06:29 UTC 78,104 bytes, 22 lines download raw bytes

1<!DOCTYPE html><html lang="ja"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/images/avatar.webp" fetchPriority="high"/><meta name="apple-mobile-web-app-title" content="GS"/><title>GREEN STUDIO</title><meta name="description" content="iOS、Android、Webアプリを開発しています。個人開発と平行して受託開発もおこなっています。"/><link rel="preload" as="font" type="font/woff2" href="/fonts/inter-latin.woff2" crossorigin="anonymous"/><link rel="icon" type="image/png" href="/favicon-96x96.png" sizes="96x96"/><link rel="icon" type="image/svg+xml" href="/favicon.svg"/><link rel="shortcut icon" href="/favicon.ico"/><link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"/><link rel="manifest" href="/site.webmanifest"/><link rel="modulepreload" href="/assets/manifest-b692ada9.js"/><link rel="modulepreload" href="/assets/entry.client-Q9l9s2QG.js"/><link rel="modulepreload" href="/assets/components-CMk5EBPk.js"/><link rel="modulepreload" href="/assets/errorBoundaries-Ct5Ol2TR.js"/><link rel="modulepreload" href="/assets/jsx-runtime-D5HcuN-e.js"/><link rel="modulepreload" href="/assets/root-Sm4AK8A4.js"/><link rel="modulepreload" href="/assets/lib-Bl-9KF2c.js"/><link rel="modulepreload" href="/assets/DefaultLayout-Y1JaOacZ.js"/><link rel="modulepreload" href="/assets/clsx-DB0hHKMi.js"/><link rel="modulepreload" href="/assets/_-Bz4vphrk.js"/><link rel="modulepreload" href="/assets/iconBase-hdQ4eZEa.js"/><link rel="modulepreload" href="/assets/ExternalLink-DrpI3tQJ.js"/><link rel="modulepreload" href="/assets/portfolio-B-vZGYor.js"/><link rel="modulepreload" href="/assets/fa-C1YD51hd.js"/><link rel="modulepreload" href="/assets/skill-DdmKFG1i.js"/><link rel="modulepreload" href="/assets/Skill-BAoxlkP4.js"/><link rel="modulepreload" href="/assets/BlogPostsSkeleton-B9RhUOnJ.js"/><link rel="modulepreload" href="/assets/_.portfolio._index-bVUZbKSO.js"/><link rel="stylesheet" href="/assets/root-B4eIQGLH.css"/>
1<script>(function(){try{var t=localStorage.getItem('hs_theme');var d=t==='dark';document.documentElement.classList.toggle('dark',d);document.documentElement.style.colorScheme=d?'dark':'light';}catch(e){}})();</script>
1</head><body><header class="sticky top-0 inset-x-0 flex flex-wrap md:justify-start md:flex-nowrap z-40 w-full before:absolute before:inset-0 before:max-w-5xl before:mx-2 lg:before:mx-auto before:rounded-6.5 before:bg-white-800/30 before:backdrop-blur-md"><nav class="relative max-w-5xl w-full py-2.5 ps-5 pe-2 md:flex md:items-center md:justify-between md:py-0 mx-2 lg:mx-auto"><div class="px-4 md:px-0 flex justify-between items-center"><div class="flex items-center"><a class="flex-none rounded-md text-xl inline-block font-semibold focus:outline-hidden focus:opacity-80 text-black dark:text-white" href="/" aria-label="GREEN STUDIO">GREEN STUDIO</a></div><div class="md:hidden"><button type="button" class="flex justify-center items-center size-7 border border-gray-200 text-gray-500 rounded-full hover:bg-gray-200 focus:outline-hidden focus:bg-gray-200 dark:border-neutral-700 dark:text-neutral-400 dark:hover:bg-neutral-700 dark:focus:bg-neutral-700" id="hs-navbar-header-floating-collapse" aria-expanded="false" aria-controls="hs-navbar-header-floating" aria-label="Toggle navigation"><svg class="shrink-0 size-3.5" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="3" x2="21" y1="6" y2="6"></line><line x1="3" x2="21" y1="12" y2="12"></line><line x1="3" x2="21" y1="18" y2="18"></line></svg><svg class="shrink-0 hidden" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 6 6 18"></path><path d="m6 6 12 12"></path></svg></button></div></div><div id="hs-navbar-header-floating" class="overflow-hidden transition-all duration-300 basis-full grow md:block hidden" aria-labelledby="hs-navbar-header-floating-collapse"><div class="flex flex-col md:flex-row md:items-center md:justify-end gap-2 md:gap-3 mt-3 md:mt-0 py-2 md:py-0 md:ps-7"><a class="py-0.5 md:py-3 px-4 md:px-1 border-s-2 md:border-s-0 md:border-b-2 text-gray-500 hover:text-gray-800 focus:outline-hidden dark:text-neutral-400 dark:hover:text-neutral-200 border-transparent" href="/" data-discover="true">ホーム</a><a aria-current="page" class="py-0.5 md:py-3 px-4 md:px-1 border-s-2 md:border-s-0 md:border-b-2 text-gray-500 hover:text-gray-800 focus:outline-hidden dark:text-neutral-400 dark:hover:text-neutral-200 border-transparent" href="/portfolio" data-discover="true">ポートフォリオ</a><a class="py-0.5 md:py-3 px-4 md:px-1 border-s-2 md:border-s-0 md:border-b-2 text-gray-500 hover:text-gray-800 focus:outline-hidden dark:text-neutral-400 dark:hover:text-neutral-200 border-transparent" href="/skill" data-discover="true">スキル</a><a class="py-0.5 md:py-3 px-4 md:px-1 border-s-2 md:border-s-0 md:border-b-2 text-gray-500 hover:text-gray-800 focus:outline-hidden dark:text-neutral-400 dark:hover:text-neutral-200 border-transparent" href="/resume" data-discover="true">経歴</a><a class="py-0.5 md:py-3 px-4 md:px-1 border-s-2 md:border-s-0 md:border-b-2 text-gray-500 hover:text-gray-800 focus:outline-hidden dark:text-neutral-400 dark:hover:text-neutral-200 border-transparent" href="/contact" data-discover="true">お問い合わせ</a><a class="py-0.5 md:py-3 px-4 md:px-1 border-s-2 md:border-s-0 md:border-b-2 text-gray-500 hover:text-gray-800 focus:outline-hidden dark:text-neutral-400 dark:hover:text-neutral-200 border-transparent" href="https://www.greenstudio.jp/wp/">ブログ</a></div></div></nav></header><main id="content"><div id="home" class="w-full max-w-5xl mx-auto pt-10 md:pt-16 px-4 sm:px-6 lg:px-8 scroll-mt-14"><div id="profile" class="flex items-center gap-x-3"><div class="shrink-0"><img class="shrink-0 size-16 rounded-full" src="/images/avatar.webp" alt="Avatar" width="64" height="64" fetchPriority="high"/></div><div class="grow"><h1 class="text-lg font-medium text-gray-800 dark:text-neutral-200">PONTAGO</h1><p class="text-sm text-gray-600 dark:text-neutral-400">iOS, Android, Web Developer</p></div></div><div class="mt-8"><div class="text-sm text-gray-600 dark:text-neutral-400"><p>東京に住んでいる1985年生まれの男です。2006年からフリーランスとして活動しています。</p><p>個人アプリの開発と並行して受託開発もおこなっています。iOS、Android、Webアプリの開発が得意です。サーバ構築などバックエンドからフロントエンドまでフルスタックでの対応可能です。</p><p class="mt-2">中学生時代にプログラミングに興味を持って以来、よくわからないものを量産し続けている。たくさんの人たちに使ってもらえるような面白いものを作りたい。</p><p class="mt-2">ラーメンとボルダリングが好き。</p></div><div class="flex justify-start"><ul class="mt-5 flex flex-col gap-y-3"><li class="flex items-center gap-x-2.5"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" class="text-gray-800 dark:text-neutral-200" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M389.2 48h70.6L305.6 224.2 487 464H345L233.7 318.6 106.5 464H35.8L200.7 275.5 26.8 48H172.4L272.9 180.9 389.2 48zM364.4 421.8h39.1L151.1 88h-42L364.4 421.8z"></path></svg><a class="text-[13px] text-gray-500 hover:text-gray-800 hover:decoration-2 focus:outline-hidden focu
1s:decoration-2 dark:text-neutral-500 dark:hover:text-neutral-400" href="https://x.com/happytar0">@happytar0</a></li><li class="flex items-center gap-x-2.5"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 496 512" class="text-gray-800 dark:text-neutral-200" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"></path></svg><a class="text-[13px] text-gray-500 hover:text-gray-800 hover:decoration-2 focus:outline-hidden focus:decoration-2 dark:text-neutral-500 dark:hover:text-neutral-400" href="https://github.com/pontago">@pontago</a></li><li class="flex items-center gap-x-2.5"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" class="text-gray-800 dark:text-neutral-200" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M255.9 120.9l9.1-15.7c5.6-9.8 18.1-13.1 27.9-7.5 9.8 5.6 13.1 18.1 7.5 27.9l-87.5 151.5h63.3c20.5 0 32 24.1 23.1 40.8H113.8c-11.3 0-20.4-9.1-20.4-20.4 0-11.3 9.1-20.4 20.4-20.4h52l66.6-115.4-20.8-36.1c-5.6-9.8-2.3-22.2 7.5-27.9 9.8-5.6 22.2-2.3 27.9 7.5l8.9 15.7zm-78.7 218l-19.6 34c-5.6 9.8-18.1 13.1-27.9 7.5-9.8-5.6-13.1-18.1-7.5-27.9l14.6-25.2c16.4-5.1 29.8-1.2 40.4 11.6zm168.9-61.7h53.1c11.3 0 20.4 9.1 20.4 20.4 0 11.3-9.1 20.4-20.4 20.4h-29.5l19.9 34.5c5.6 9.8 2.3 22.2-7.5 27.9-9.8 5.6-22.2 2.3-27.9-7.5-33.5-58.1-58.7-101.6-75.4-130.6-17.1-29.5-4.9-59.1 7.2-69.1 13.4 23 33.4 57.7 60.1 104zM256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm216 248c0 118.7-96.1 216-216 216-118.7 0-216-96.1-216-216 0-118.7 96.1-216 216-216 118.7 0 216 96.1 216 216z"></path></svg><a class="text-[13px] text-gray-500 hover:text-gray-800 hover:decoration-2 focus:outline-hidden focus:decoration-2 dark:text-neutral-500 dark:hover:text-neutral-400" href="https://apps.apple.com/jp/developer/greenstudio/id406307134">AppStore</a></li><li class="flex items-center gap-x-2.5"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" class="text-gray-800 dark:text-neutral-200" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M325.3 234.3L104.6 13l280.8 161.2-60.1 60.1zM47 0C34 6.8 25.3 19.2 25.3 35.3v441.3c0 16.1 8.7 28.5 21.7 35.3l256.6-256L47 0zm425.2 225.6l-58.9-34.1-65.7 64.5 65.7 64.5 60.1-34.1c18-14.3 18-46.5-1.2-60.8zM104.6 499l280.8-161.2-60.1-60.1L104.6 499z"></path></svg><a class="text-[13px] text-gray-500 hover:text-gray-800 hover:decoration-2 focus:outline-hidden focus:decoration-2 dark:text-neutral-500 dark:hover:text-neutral-400" href="https://play.google.com/store/apps/developer?id=GREENSTUDIO">Google Play</a></li></ul><ul class="mt-5 mx-10 flex flex-col gap-y-3"><li class="flex items-center gap-x-2.5"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 24 24" class="text-gray-800 dark:text-neutral-200" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="m13 3 3.293 3.293-7 7 1.414 1.414 7-7L21 11V3z"></path><path d="M19 19H5V5h7l-2-2H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h14c1.103 0 2-.897 2-2v-5l-2-2v7z"></path></svg><a class="text-[13px] text-gray-500 hover:text-gray-800 hover:decoration-2 focus:outline-hidden focu
1s:decoration-2 dark:text-neutral-500 dark:hover:text-neutral-400" href="https://www.lancers.jp/profile/greenstudio">Lancers</a></li><li class="flex items-center gap-x-2.5"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 24 24" class="text-gray-800 dark:text-neutral-200" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="m13 3 3.293 3.293-7 7 1.414 1.414 7-7L21 11V3z"></path><path d="M19 19H5V5h7l-2-2H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h14c1.103 0 2-.897 2-2v-5l-2-2v7z"></path></svg><a class="text-[13px] text-gray-500 hover:text-gray-800 hover:decoration-2 focus:outline-hidden focus:decoration-2 dark:text-neutral-500 dark:hover:text-neutral-400" href="https://crowdworks.jp/public/employees/379114">クラウドワークス</a></li></ul></div></div><div class="my-8"><div class="flex"><h2 class="font-medium text-gray-800 dark:text-neutral-200">新着ブログ</h2><a class="flex place-self-end group" href="https://www.greenstudio.jp/wp/"><div class="ml-2 mb-0.5 text-xs text-gray-500 group-hover:text-gray-800 dark:text-neutral-400 dark:group-hover:text-white">もっと見る</div><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 320 512" class="text-gray-500 group-hover:text-gray-800 dark:text-neutral-400 dark:group-hover:text-white size-3 mt-0.5" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M278.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-160 160c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L210.7 256 73.4 118.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l160 160z"></path></svg></a></div><!--$?--><template id="B:0"></template><div class="mt-4 w-full grid grid-cols-1 sm:grid-cols-2 auto-rows-[13rem] gap-4 min-h-[83rem] sm:min-h-[41rem]"><ul class="h-full overflow-hidden p-4 rounded-xl border border-gray-200 dark:border-neutral-700 space-y-3"><li class="h-6 w-full bg-gray-100 rounded dark:bg-neutral-800"></li><li class="h-4 w-1/2 bg-gray-100 rounded dark:bg-neutral-800"></li><li class="h-16 w-full bg-gray-100 rounded dark:bg-neutral-800"></li></ul><ul class="h-full overflow-hidden p-4 rounded-xl border border-gray-200 dark:border-neutral-700 space-y-3"><li class="h-6 w-full bg-gray-100 rounded dark:bg-neutral-800"></li><li class="h-4 w-1/2 bg-gray-100 rounded dark:bg-neutral-800"></li><li class="h-16 w-full bg-gray-100 rounded dark:bg-neutral-800"></li></ul><ul class="h-full overflow-hidden p-4 rounded-xl border border-gray-200 dark:border-neutral-700 space-y-3"><li class="h-6 w-full bg-gray-100 rounded dark:bg-neutral-800"></li><li class="h-4 w-1/2 bg-gray-100 rounded dark:bg-neutral-800"></li><li class="h-16 w-full bg-gray-100 rounded dark:bg-neutral-800"></li></ul><ul class="h-full overflow-hidden p-4 rounded-xl border border-gray-200 dark:border-neutral-700 space-y-3"><li class="h-6 w-full bg-gray-100 rounded dark:bg-neutral-800"></li><li class="h-4 w-1/2 bg-gray-100 rounded dark:bg-neutral-800"></li><li class="h-16 w-full bg-gray-100 rounded dark:bg-neutral-800"></li></ul><ul class="h-full overflow-hidden p-4 rounded-xl border border-gray-200 dark:border-neutral-700 space-y-3"><li class="h-6 w-full bg-gray-100 rounded dark:bg-neutral-800"></li><li class="h-4 w-1/2 bg-gray-100 rounded dark:bg-neutral-800"></li><li class="h-16 w-full bg-gray-100 rounded dark:bg-neutral-800"></li></ul><ul class="h-full overflow-hidden p-4 rounded-xl border border-gray-200 dark:border-neutral-700 space-y-3"><li class="h-6 w-full bg-gray-100 rounded dark:bg-neutral-800"></li><li class="h-4 w-1/2 bg-gray-100 rounded dark:bg-neutral-800"></li><li class="h-16 w-full bg-gray-100 rounded dark:bg-neutral-800"></li></ul></div><!--/$--></div><div id="portfolio" class="my-8 scroll-mt-14"><h2 class="font-medium text-gray-800 dark:text-neutral-200">ポートフォリオ</h2><div class="mb-2 text-xs text-gray-600 dark:text-neutral-400">ポートフォリオの一部を表示しています。その他は<a href="/resume" data-discover="true">経歴ページ</a>からご確認いただけます。</div><div class="py-4 grid grid-cols-1 sm:grid-cols-3 gap-8 lg:gap-12 justify-items-center"><div><a class="group flex flex-col focus:outline-hidden text-left" href="/portfolio/colorwalker" data-discover="true"><div class="overflow-hidden bg-gray-100 rounded dark:bg-neutral-800"><img class="h-48 w-96 group-hover:scale-105 group-focus:scale-105 transition-transform duration-500 ease-in-out object-cover rounded" src="/images/portfolio/colorwalker/cover.webp" alt="Color Walker" width="384" height="192" loading="lazy" decoding="async"/></div><div class="pt-4"><h3 class="relative inline-block font-medium text-black before:absolute before:bottom-0.5 before:start-0 before:-z-1 before:w-full before:h-1 before:bg-lime-400 before:transition before:origin-left before:scale-x-0 group-hover:before:scale-x-100 dark:text-white">Color Walker</h3><p class="text-sm mt-1 text-gray-600 dark:text-neutral-400">お題のカラーを探して撮影。集めた色をコラージュに仕立てるアプリ</p><div class="mt-3 flex flex-wrap gap-2"><span class="py-1.5 px-3 bg-white text-gray-600 border border-gray-200 text-xs sm:text-sm rounded-xl dark:bg-neutral-900 dark:border-neutral-700 dark:text-neutral-400">iOS</span><span class="py-1.5 px-3 bg-white text-gray-600 border border-gray-200 text-xs sm:text-sm rounded-xl dark:bg-neutral-900 dark:border-neutral-700 dark:text-neutral-400">Android</span></div></div></a></div><div><a class="group flex flex-col focus:outline-hidden text-left" href="/portfolio/otenki-live" data-discover="true"><div class="overflow-hidden bg-gray-100 rounded dark:bg-neutral-800"><img class="h-48 w-96 group-hover:scale-105 group-focus:scale-105 transition-transform duration-500 ease-in-out object-cover rounded" src="/images/portfolio/otenki-live/cover.webp" alt="お天気ライブ" width="384" height="192" loading="lazy" decoding="async"/></div><div class="pt-4"><h3 class="relative inline-block font-medium text-black before:absolute before:bottom-0.5 before:start-0 before:-z-1 before:w-full before:h-1 before:bg-lime-400 before:transition before:origin-left before:scale-x-0 group-hover:before:scale-x-100 dark:text-white">お天気ライブ</h3><p class="text-sm mt-1 text-gray-600 dark:text-neutral-400">天気予報データとライブカメラ映像の検出データを組み合わせた天気予報サービス</p><div class="mt-3 flex flex-wrap gap-2"><span class="py-1.5 px-3 bg-white text-gray-600 border border-gray-200 text-xs sm:text-sm rounded-xl dark:bg-neutral-900 dark:border-neutral-700 dark:text-neutral-400">Web</span></div></div></a></div><div><a class="group flex flex-col focus:outline-hidden text-left" href="/portfolio/greenstudio-web" data-discover="true"><div class="overflow-hidden bg-gray-100 rounded dark:bg-neutral-800"><img class="h-48 w-96 group-hover:scale-105 group-focus:scale-105 transition-transform duration-500 ease-in-out object-cover rounded" src="/images/portfolio/greenstudio-web/cover.webp" alt="GREEN STUDIO WEB" width="384" height="192" loading="lazy" decoding="async"/></div><div class="pt-4"><h3 class="relative inline-block font-medium text-black before:absolute before:bottom-0.5 before:start-0 before:-z-1 before:w-full before:h-1 before:bg-lime-400 before:transition before:origin-left before:scale-x-0 group-hover:before:scale-x-100 dark:text-white">GREEN STUDIO WEB</h3><p class="text-sm mt-1 text-gray-600 dark:text-neutral-400">自分が作ったものをまとめたポートフォリオサイト</p><div class="mt-3 flex flex-wrap gap-2"><span class="py-1.5 px-3 bg-white text-gray-600 border border-gray-200 text-xs sm:text-sm rounded-xl dark:bg-neutral-900 dark:border-neutral-700 dark:text-neutral-400">Web</span></div></div></a></div><div><a class="group flex flex-col focus:outline-hidden text-left" href="/portfolio/balancemanagement" data-discover="true"><div class="overflow-hidden bg-gray-100 rounded dark:bg-neutral-800"><img class="h-48 w-96 group-hover:scale-105 group-focus:scale-105 transition-transform duration-500 ease-in-out object-cover rounded" src="/images/portfolio/balancemanagement/cover.webp" alt="収支管理アプリ" width="384" height="192" loading="lazy" decoding="async"/></div><div class="pt-4"><h3 class="relative inline-block font-medium text-black before:absolute before:bottom-0.5 before:start-0 before:-z-1 before:w-full before:h-1 before:bg-lime-400 before:transition before:origin-left before:scale-x-0 group-hover:before:scale-x-100 dark:text-white">収支管理アプリ</h3><p class="text-sm mt-1 text-gray-600 dark:text-neutral-400">iOSとAndroidで使えるシンプルな収支管理アプリ</p><div class="mt-3 flex flex-wrap gap-2"><span class="py-1.5 px-3 bg-white text-gray-600 border border-gray-200 text-xs sm:text-sm rounded-xl dark:bg-neutral-900 dark:border-neutral-700 dark:text-neutral-400">iOS</span><span class="py-1.5 px-3 bg-white text-gray-600 border border-gray-200 text-xs sm:text-sm rounded-xl dark:bg-neutral-900 dark:border-neutral-700 dark:text-neutral-400">Android</span></div></div></a></div><div><a class="group flex flex-col focus:outline-hidden text-left" href="/portfolio/supdrops" data-discover="true"><div class="overflow-hidden bg-gray-100 rounded dark:bg-neutral-800"><img class="h-48 w-96 group-hover:scale-105 group-focus:scale-105 transition-transform duration-500 ease-in-out object-cover rounded" src="/images/portfolio/supdrops/cover.webp" alt="Supreme Droplists" width="384" height="192" loading="lazy" decoding="async"/></div><div class="pt-4"><h3 class="relative inline-block font-medium text-black before:absolute before:bottom-0.5 before:start-0 before:-z-1 before:w-full before:h-1 before:bg-lime-400 before:transition before:origin-left before:scale-x-0 group-hover:before:scale-x-100 dark:text-white">Supreme Droplists</h3><p class="text-sm mt-1 text-gray-600 dark:text-neutral-400">Supremeの新作アイテムやアーカイブをチェックできるサイト</p><div class="mt-3 flex flex-wrap gap-2"><span class="py-1.5 px-3 bg-white text-gray-600 border border-gray-200 text-xs sm:text-sm rounded-xl dark:bg-neutral-900 dark:border-neutral-700 dark:text-neutral-400">Web</span></div></div></a></div><div><a class="group flex flex-col focus:outline-hidden text-left" href="/portfolio/tdnetviewer-web" data-discover="true"><div class="overflow-hidden bg-gray-100 rounded dark:bg-neutral-800"><img class="h-48 w-96 group-hover:scale-105 group-focus:scale-105 transition-transform duration-500 ease-in-out object-cover rounded" src="/images/portfolio/tdnetviewer-web/cover.webp" alt="適時開示情報WEB" width="384" height="192" loading="lazy" decoding="async"/></div><div class="pt-4"><h3 class="relative inline-block font-medium text-black before:absolute before:bottom-0.5 before:start-0 before:-z-1 before:w-full before:h-1 before:bg-lime-400 before:transition before:origin-left before:scale-x-0 group-hover:before:scale-x-100 dark:text-white">適時開示情報WEB</h3><p class="text-sm mt-1 text-gray-600 dark:text-neutral-400">適時開示情報をWebから閲覧できるサイト</p><div class="mt-3 flex flex-wrap gap-2"><span class="py-1.5 px-3 bg-white text-gray-600 border border-gray-200 text-xs sm:text-sm rounded-xl dark:bg-neutral-900 dark:border-neutral-700 dark:text-neutral-400">Web</span></div></div></a></div><div><a class="group flex flex-col focus:outline-hidden text-left" href="/portfolio/tdnetviewer-app" data-discover="true"><div class="overflow-hidden bg-gray-100 rounded dark:bg-neutral-800"><img class="h-48 w-96 group-hover:scale-105 group-focus:scale-105 transition-transform duration-500 ease-in-out object-cover rounded" src="/images/portfolio/tdnetviewer-app/cover.webp" alt="適時開示情報アプリ" width="384" height="192" loading="lazy" decoding="async"/></div><div class="pt-4"><h3 class="relative inline-block font-medium text-black before:absolute before:bottom-0.5 before:start-0 before:-z-1 before:w-full before:h-1 before:bg-lime-400 before:transition before:origin-left before:scale-x-0 group-hover:before:scale-x-100 dark:text-white">適時開示情報アプリ</h3><p class="text-sm mt-1 text-gray-600 dark:text-neutral-400">TDNETとEDINETの適時開示をPUSH通知で受け取れるアプリ</p><div class="mt-3 flex flex-wrap gap-2"><span class="py-1.5 px-3 bg-white text-gray-600 border border-gray-200 text-xs sm:text-sm rounded-xl dark:bg-neutral-900 dark:border-neutral-700 dark:text-neutral-400">iOS</span><span class="py-1.5 px-3 bg-white text-gray-600 border border-gray-200 text-xs sm:text-sm rounded-xl dark:bg-neutral-900 dark:border-neutral-700 dark:text-neutral-400">Android</span></div></div></a></div><div><a class="group flex flex-col focus:outline-hidden text-left" href="/portfolio/inputhankaku" data-discover="true"><div class="overflow-hidden bg-gray-100 rounded dark:bg-neutral-800"><img class="h-48 w-96 group-hover:scale-105 group-focus:scale-105 transition-transform duration-500 ease-in-out object-cover rounded" src="/images/portfolio/inputhankaku/cover.webp" alt="半角カナ入力アプリ" width="384" height="192" loading="lazy" decoding="async"/></div><div class="pt-4"><h3 class="relative inline-block font-medium text-black before:absolute before:bottom-0.5 before:start-0 before:-z-1 before:w-full before:h-1 before:bg-lime-400 before:transition before:origin-left before:scale-x-0 group-hover:before:scale-x-100 dark:text-white">半角カナ入力アプリ</h3><p class="text-sm mt-1 text-gray-600 dark:text-neutral-400">ワンタップで半角カタカナに変換できるシンプルなアプリ</p><div class="mt-3 flex flex-wrap gap-2"><span class="py-1.5 px-3 bg-white text-gray-600 border border-gray-200 text-xs sm:text-sm rounded-xl dark:bg-neutral-900 dark:border-neutral-700 dark:text-neutral-400">iOS</span></div></div></a></div><div><a class="group flex flex-col focus:outline-hidden text-left" href="/portfolio/screencapture" data-discover="true"><div class="overflow-hidden bg-gray-100 rounded dark:bg-neutral-800"><img class="h-48 w-96 group-hover:scale-105 group-focus:scale-105 transition-transform duration-500 ease-in-out object-cover rounded" src="/images/portfolio/screencapture/cover.webp" alt="画面メモアプリ" width="384" height="192" loading="lazy" decoding="async"/></div><div class="pt-4"><h3 class="relative inline-block font-medium text-black before:absolute before:bottom-0.5 before:start-0 before:-z-1 before:w-full before:h-1 before:bg-lime-400 before:transition before:origin-left before:scale-x-0 group-hover:before:scale-x-100 dark:text-white">画面メモアプリ</h3><p class="text-sm mt-1 text-gray-600 dark:text-neutral-400">ブラウザで表示した画面を保存できるシンプルなアプリ</p><div class="mt-3 flex flex-wrap gap-2"><span class="py-1.5 px-3 bg-white text-gray-600 border border-gray-200 text-xs sm:text-sm rounded-xl dark:bg-neutral-900 dark:border-neutral-700 dark:text-neutral-400">iOS</span></div></div></a></div><div><a class="group flex flex-col focus:outline-hidden text-left" href="/portfolio/smileplayer2" data-discover="true"><div class="overflow-hidden bg-gray-100 rounded dark:bg-neutral-800"><img class="h-48 w-96 group-hover:scale-105 group-focus:scale-105 transition-transform duration-500 ease-in-out object-cover rounded" src="/images/portfolio/smileplayer2/cover.webp" alt="SmilePlayer2" width="384" height="192" loading="lazy" decoding="async"/></div><div class="pt-4"><h3 class="relative inline-block font-medium text-black before:absolute before:bottom-0.5 before:start-0 before:-z-1 before:w-full before:h-1 before:bg-lime-400 before:transition before:origin-left before:scale-x-0 group-hover:before:scale-x-100 dark:text-white">SmilePlayer2</h3><p class="text-sm mt-1 text-gray-600 dark:text-neutral-400">非公式のニコニコ動画専用の動画プレイヤー</p><div class="mt-3 flex flex-wrap gap-2"><span class="py-1.5 px-3 bg-white text-gray-600 border border-gray-200 text-xs sm:text-sm rounded-xl dark:bg-neutral-900 dark:border-neutral-700 dark:text-neutral-400">iOS</span></div></div></a></div><div><a class="group flex flex-col focus:outline-hidden text-left" href="/portfolio/smileplayerhd" data-discover="true"><div class="overflow-hidden bg-gray-100 rounded dark:bg-neutral-800"><img class="h-48 w-96 group-hover:scale-105 group-focus:scale-105 transiti
1on-transform duration-500 ease-in-out object-cover rounded" src="/images/portfolio/smileplayerhd/cover.webp" alt="SmilePlayerHD" width="384" height="192" loading="lazy" decoding="async"/></div><div class="pt-4"><h3 class="relative inline-block font-medium text-black before:absolute before:bottom-0.5 before:start-0 before:-z-1 before:w-full before:h-1 before:bg-lime-400 before:transition before:origin-left before:scale-x-0 group-hover:before:scale-x-100 dark:text-white">SmilePlayerHD</h3><p class="text-sm mt-1 text-gray-600 dark:text-neutral-400">非公式のニコニコ動画専用のiPad動画プレイヤー</p><div class="mt-3 flex flex-wrap gap-2"><span class="py-1.5 px-3 bg-white text-gray-600 border border-gray-200 text-xs sm:text-sm rounded-xl dark:bg-neutral-900 dark:border-neutral-700 dark:text-neutral-400">iOS</span></div></div></a></div><div><a class="group flex flex-col focus:outline-hidden text-left" href="/portfolio/ashiatoplus" data-discover="true"><div class="overflow-hidden bg-gray-100 rounded dark:bg-neutral-800"><img class="h-48 w-96 group-hover:scale-105 group-focus:scale-105 transition-transform duration-500 ease-in-out object-cover rounded" src="/images/portfolio/ashiatoplus/cover.webp" alt="あしあとプラス" width="384" height="192" loading="lazy" decoding="async"/></div><div class="pt-4"><h3 class="relative inline-block font-medium text-black before:absolute before:bottom-0.5 before:start-0 before:-z-1 before:w-full before:h-1 before:bg-lime-400 before:transition before:origin-left before:scale-x-0 group-hover:before:scale-x-100 dark:text-white">あしあとプラス</h3><p class="text-sm mt-1 text-gray-600 dark:text-neutral-400">mixiのあしあとを独自に記録するアプリ</p><div class="mt-3 flex flex-wrap gap-2"><span class="py-1.5 px-3 bg-white text-gray-600 border border-gray-200 text-xs sm:text-sm rounded-xl dark:bg-neutral-900 dark:border-neutral-700 dark:text-neutral-400">Web</span></div></div></a></div></div></div><div id="skill" class="my-10 sm:my-14 scroll-mt-14"><h2 class="font-medium text-gray-800 dark:text-neutral-200">スキル</h2><div class="mt-4 w-1/2"><div class="flex justify-normal"><div class="inline-block mb-2 ms-[calc(33%-20px)] py-0.5 px-1.5 bg-blue-50 border border-blue-200 text-xs font-medium text-blue-600 rounded-lg dark:bg-blue-800/30 dark:border-blue-800 dark:text-blue-500">Level1</div><div class="inline-block mb-2 ms-[calc(33%-50px)] py-0.5 px-1.5 bg-teal-50 border border-teal-200 text-xs font-medium text-teal-700 rounded-lg dark:bg-teal-800/30 dark:border-teal-800 dark:text-teal-500">Level2</div><div class="inline-block mb-2 ms-[calc(33%-50px)] py-0.5 px-1.5 bg-yellow-50 border border-yellow-200 text-xs font-medium text-yellow-700 rounded-lg dark:bg-yellow-800/30 dark:border-yellow-800 dark:text-yellow-500">Level3</div></div><div class="flex h-1.5 bg-gray-200 rounded-full overflow-hidden dark:bg-neutral-700"><div class="flex flex-col justify-center overflow-hidden bg-blue-600 text-xs text-white text-center whitespace-nowrap" style="width:33%" role="progressbar" aria-label="Level1の範囲" aria-valuenow="10" aria-valuemin="0" aria-valuemax="30"></div><div class="flex flex-col justify-center overflow-hidden bg-teal-500 text-xs text-white text-center whitespace-nowrap" style="width:33%" role="progressbar" aria-label="Level2の範囲" aria-valuenow="10" aria-valuemin="0" aria-valuemax="30"></div><div class="flex flex-col justify-center overflow-hidden bg-yellow-500 text-xs text-white text-center whitespace-nowrap" style="width:34%" role="progressbar" aria-label="Level3の範囲" aria-valuenow="10" aria-valuemin="0" aria-valuemax="30"></div></div></div><div class="mt-2"><div class="inline-block mb-1 py-0.5 px-1.5 bg-blue-50 border border-blue-200 text-xs font-medium text-blue-600 rounded-lg dark:bg-blue-800/30 dark:border-blue-800 dark:text-blue-500">Level1</div><p class="text-xs text-gray-600 dark:text-neutral-400">簡単なプログラムを作成・修正できる。もしくは最近使用していない。</p><div class="inline-block mb-1 py-0.5 px-1.5 bg-teal-50 border border-teal-200 text-xs font-medium text-teal-700 rounded-lg dark:bg-teal-800/30 dark:border-teal-800 dark:text-teal-500">Level2</div><p class="text-xs text-gray-600 dark:text-neutral-400">個人アプリ開発、受託開発で使用したことがある。直近使用率低め、経験が不十分だと感じるレベル。</p><div class="inline-block mb-1 py-0.5 px-1.5 bg-yellow-50 border border-yellow-200 text-xs font-medium text-yellow-700 rounded-lg dark:bg-yellow-800/30 dark:border-yellow-800 dark:text-yellow-500">Level3</div><p class="text-xs text-gray-600 dark:text-neutral-400">個人アプリ開発、受託開発で使用したことがある。直近5年以内で使用している。</p></div><div class="grid grid-cols-1 mt-2 sm:grid-cols-2 gap-x-3 border-gray-200  divide-gray-200 dark:border-neutral-700 dark:divide-neutral-700"><div class="sm:-ms-4 sm:px-4"><h2 class="text-center text-sm mt-4 font-medium text-gray-600 dark:text-neutral-400">プログラミング言語・DB</h2><div><div class="space-y-5"></div><div class="mt-2"><div class="mb-2 flex justify-between items-center"><h3 class="text-sm font-semibold text-gray-600 dark:text-neutral-400">TypeScript, JavaScript</h3><span class="text-sm text-gray-600 dark:text-neutral-400">3年以上</span></div><div class="flex w-full h-1.5 bg-gray-200 rounded-full overflow-hidden dark:bg-neutral-700" role="progressbar" aria-label="TypeScript, JavaScriptの習熟レベル" aria-valuenow="3" aria-valuemin="0" aria-valuemax="3"><div class="flex flex-col justify-center rounded-full overflow-hidden  text-xs text-white text-center whitespace-nowrap transition duration-500  bg-yellow-500" style="width:100%"></div></div></div><div class="mt-2"><div class="mb-2 flex justify-between items-center"><h3 class="text-sm font-semibold text-gray-600 dark:text-neutral-400">PHP</h3><span class="text-sm text-gray-600 dark:text-neutral-400">3年以上</span></div><div class="flex w-full h-1.5 bg-gray-200 rounded-full overflow-hidden dark:bg-neutral-700" role="progressbar" aria-label="PHPの習熟レベル" aria-valuenow="2" aria-valuemin="0" aria-valuemax="3"><div class="flex flex-col justify-center rounded-full overflow-hidden  text-xs text-white text-center whitespace-nowrap transition duration-500  bg-teal-500" style="width:66%"></div></div></div><div class="mt-2"><div class="mb-2 flex justify-between items-center"><h3 class="text-sm font-semibold text-gray-600 dark:text-neutral-400">Ruby</h3><span class="text-sm text-gray-600 dark:text-neutral-400">3年以上</span></div><div class="flex w-full h-1.5 bg-gray-200 rounded-full overflow-hidden dark:bg-neutral-700" role="progressbar" aria-label="Rubyの習熟レベル" aria-valuenow="2" aria-valuemin="0" aria-valuemax="3"><div class="flex flex-col justify-center rounded-full overflow-hidden  text-xs text-white text-center whitespace-nowrap transition duration-500  bg-teal-500" style="width:66%"></div></div></div><div class="mt-2"><div class="mb-2 flex justify-between items-center"><h3 class="text-sm font-semibold text-gray-600 dark:text-neutral-400">Objective-C</h3><span class="text-sm text-gray-600 dark:text-neutral-400">3年以上</span></div><div class="flex w-full h-1.5 bg-gray-200 rounded-full overflow-hidden dark:bg-neutral-700" role="progressbar" aria-label="Objective-Cの習熟レベル" aria-valuenow="3" aria-valuemin="0" aria-valuemax="3"><div class="flex flex-col justify-center rounded-full overflow-hidden  text-xs text-white text-center whitespace-nowrap transition duration-500  bg-yellow-500" style="width:100%"></div></div></div><div class="mt-2"><div class="mb-2 flex justify-between items-center"><h3 class="text-sm font-semibold text-gray-600 dark:text-neutral-400">Swift</h3><span class="text-sm text-gray-600 dark:text-neutral-400">3年以上</span></div><div class="flex w-full h-1.5 bg-gray-200 rounded-full overflow-hidden dark:bg-neutral-700" role="progressbar" aria-label="Swiftの習熟レベル" aria-valuenow="3" aria-valuemin="0" aria-valuemax="3"><div class="flex flex-col justify-center rounded-full overflow-hidden  text-xs text-white text-center whitespace-nowrap transition duration-500  bg-yellow-500" style="width:100%"></div></div></div><div class="mt-2"><div class="mb-2 flex justify-between items-center"><h3 class="text-sm font-semibold text-gray-600 dark:text-neutral-400">Kotlin</h3><span class="text-sm text-gray-600 dark:text-neutral-400">1年未満</span></div><div class="flex w-full h-1.5 bg-gray-200 rounded-full overflow-hidden dark:bg-neutral-700" role="progressbar" aria-label="Kotlinの習熟レベル" aria-valuenow="2" aria-valuemin="0" aria-valuemax="3"><div class="flex flex-col justify-center rounded-full overflow-hidden  text-xs text-white text-center whitespace-nowrap transition duration-500  bg-teal-500" style="width:66%"></div></div></div><div class="mt-2"><div class="mb-2 flex justify-between items-center"><h3 class="text-sm font-semibold text-gray-600 dark:text-neutral-400">Dart</h3><span class="text-sm text-gray-600 dark:text-neutral-400">1年未満</span></div><div class="flex w-full h-1.5 bg-gray-200 rounded-full overflow-hidden dark:bg-neutral-700" role="progressbar" aria-label="Dartの習熟レベル" aria-valuenow="2" aria-valuemin="0" aria-valuemax="3"><div class="flex flex-col justify-center rounded-full overflow-hidden  text-xs text-white text-center whitespace-nowrap transition duration-500  bg-teal-500" style="width:66%"></div></div></div><div class="mt-2"><div class="mb-2 flex justify-between items-center"><h3 class="text-sm font-semibold text-gray-600 dark:text-neutral-400">Java</h3><span class="text-sm text-gray-600 dark:text-neutral-400">1年未満</span></div><div class="flex w-full h-1.5 bg-gray-200 rounded-full overflow-hidden dark:bg-neutral-700" role="progressbar" aria-label="Javaの習熟レベル" aria-valuenow="1" aria-valuemin="0" aria-valuemax="3"><div class="flex flex-col justify-center rounded-full overflow-hidden  text-xs text-white text-center whitespace-nowrap transition duration-500  bg-blue-600" style="width:33%"></div></div></div><div class="mt-2"><div class="mb-2 flex justify-between items-center"><h3 class="text-sm font-semibold text-gray-600 dark:text-neutral-400">VB, C++</h3><span class="text-sm text-gray-600 dark:text-neutral-400">1年以上</span></div><div class="flex w-full h-1.5 bg-gray-200 rounded-full overflow-hidden dark:bg-neutral-700" role="progressbar" aria-label="VB, C++の習熟レベル" aria-valuenow="1" aria-valuemin="0" aria-valuemax="3"><div class="flex flex-col justify-center rounded-full overflow-hidden  text-xs text-white text-center whitespace-nowrap transition duration-500  bg-blue-600" style="width:33%"></div></div></div><div class="mt-2"><div class="mb-2 flex justify-between items-center"><h3 class="text-sm font-semibold text-gray-600 dark:text-neutral-400">C#</h3><span class="text-sm text-gray-600 dark:text-neutral-400">1年未満</span></div><div class="flex w-full h-1.5 bg-gray-200 rounded-full overflow-hidden dark:bg-neutral-700" role="progressbar" aria-label="C#の習熟レベル" aria-valuenow="1" aria-valuemin="0" aria-valuemax="3"><div class="flex flex-col justify-center rounded-full overflow-hidden  text-xs text-white text-center whitespace-nowrap transition duration-500  bg-blue-600" style="width:33%"></div></div></div><div class="mt-2"><div class="mb-2 flex justify-between items-center"><h3 class="text-sm font-semibold text-gray-600 dark:text-neutral-400">ColdFusion</h3><span class="text-sm text-gray-600 dark:text-neutral-400">1年未満</span></div><div class="flex w-full h-1.5 bg-gray-200 rounded-full overflow-hidden dark:bg-neutral-700" role="progressbar" aria-label="ColdFusionの習熟レベル" aria-valuenow="1" aria-valuemin="0" aria-valuemax="3"><div class="flex flex-col justify-center rounded-full overflow-hidden  text-xs text-white text-center whitespace-nowrap transition duration-500  bg-blue-600" style="width:33%"></div></div></div><div class="mt-2"><div class="mb-2 flex justify-between items-center"><h3 class="text-sm font-semibold text-gray-600 dark:text-neutral-400">MySQL</h3><span class="text-sm text-gray-600 dark:text-neutral-400">3年以上</span></div><div class="flex w-full h-1.5 bg-gray-200 rounded-full overflow-hidden dark:bg-neutral-700" role="progressbar" aria-label="MySQLの習熟レベル" aria-valuenow="3" aria-valuemin="0" aria-valuemax="3"><div class="flex flex-col justify-center rounded-full overflow-hidden  text-xs text-white text-center whitespace-nowrap transition duration-500  bg-yellow-500" style="width:100%"></div></div></div><div class="mt-2"><div class="mb-2 flex justify-between items-center"><h3 class="text-sm font-semibold text-gray-600 dark:text-neutral-400">PostgreSQL</h3><span class="text-sm text-gray-600 dark:text-neutral-400">1年以上</span></div><div class="flex w-full h-1.5 bg-gray-200 rounded-full overflow-hidden dark:bg-neutral-700" role="progressbar" aria-label="PostgreSQLの習熟レベル" aria-valuenow="2" aria-valuemin="0" aria-valuemax="3"><div class="flex flex-col justify-center rounded-full overflow-hidden  text-xs text-white text-center whitespace-nowrap transition duration-500  bg-teal-500" style="width:66%"></div></div></div><div class="mt-2"><div class="mb-2 flex justify-between items-center"><h3 class="text-sm font-semibold text-gray-600 dark:text-neutral-400">MS SQL Server</h3><span class="text-sm text-gray-600 dark:text-neutral-400">1年未満</span></div><div class="flex w-full h-1.5 bg-gray-200 rounded-full overflow-hidden dark:bg-neutral-700" role="progressbar" aria-label="MS SQL Serverの習熟レベル" aria-valuenow="1" aria-valuemin="0" aria-valuemax="3"><div class="flex flex-col justify-center rounded-full overflow-hidden  text-xs text-white text-center whitespace-nowrap transition duration-500  bg-blue-600" style="width:33%"></div></div></div><div class="mt-2"><div class="mb-2 flex justify-between items-center"><h3 class="text-sm font-semibold text-gray-600 dark:text-neutral-400">Oracle</h3><span class="text-sm text-gray-600 dark:text-neutral-400">1年未満</span></div><div class="flex w-full h-1.5 bg-gray-200 rounded-full overflow-hidden dark:bg-neutral-700" role="progressbar" aria-label="Oracleの習熟レベル" aria-valuenow="1" aria-valuemin="0" aria-valuemax="3"><div class="flex flex-col justify-center rounded-full overflow-hidden  text-xs text-white text-center whitespace-nowrap transition duration-500  bg-blue-600" style="width:33%"></div></div></div></div></div><div class="sm:px-4"><h2 class="text-center text-sm mt-4 font-medium text-gray-600 dark:text-neutral-400">フレームワーク・ライブラリ・インフラ</h2><div><div class="space-y-5"></div><div class="mt-2"><div class="mb-2 flex justify-between items-center"><h3 class="text-sm font-semibold text-gray-600 dark:text-neutral-400">Nuxt.js</h3><span class="text-sm text-gray-600 dark:text-neutral-400">3年以上</span></div><div class="flex w-full h-1.5 bg-gray-200 rounded-full overflow-hidden dark:bg-neutral-700" role="progressbar" aria-label="Nuxt.jsの習熟レベル" aria-valuenow="3" aria-valuemin="0" aria-valuemax="3"><div class="flex flex-col justify-center rounded-full overflow-hidden  text-xs text-white text-center whitespace-nowrap transition duration-500  bg-yellow-500" style="width:100%"></div></div></div><div class="mt-2"><div class="mb-2 flex justify-between items-center"><h3 class="text-sm font-semibold text-gray-600 dark:text-neutral-400">Remix</h3><span class="text-sm text-gray-600 dark:text-neutral-400">1年未満</span></div><div class="flex w-full h-1.5 bg-gray-200 rounded-full overflow-hidden dark:bg-neutral-700" role="progressbar" aria-label="Remixの習熟レベル" aria-valuenow="1" aria-valuemin="0" aria-valuemax="3"><div class="flex flex-col justify-center rounded-full overflow-hidden  text-xs text-white text-center whitespace-nowrap transition duration-500  bg-blue-600" style="width:33%"></div></div></div><div class="mt-2"><div class="mb-2 flex justify-between items-center"><h3 class="text-sm font-semibold text-gray-600 dark:text-neutral-400">Vue.js</h3><span class="text-sm text-gray-600 dark:text-neutral-400">3年以上</span></div><div class="flex w-full h-1.5 bg-gray-
1200 rounded-full overflow-hidden dark:bg-neutral-700" role="progressbar" aria-label="Vue.jsの習熟レベル" aria-valuenow="3" aria-valuemin="0" aria-valuemax="3"><div class="flex flex-col justify-center rounded-full overflow-hidden  text-xs text-white text-center whitespace-nowrap transition duration-500  bg-yellow-500" style="width:100%"></div></div></div><div class="mt-2"><div class="mb-2 flex justify-between items-center"><h3 class="text-sm font-semibold text-gray-600 dark:text-neutral-400">React</h3><span class="text-sm text-gray-600 dark:text-neutral-400">1年未満</span></div><div class="flex w-full h-1.5 bg-gray-200 rounded-full overflow-hidden dark:bg-neutral-700" role="progressbar" aria-label="Reactの習熟レベル" aria-valuenow="1" aria-valuemin="0" aria-valuemax="3"><div class="flex flex-col justify-center rounded-full overflow-hidden  text-xs text-white text-center whitespace-nowrap transition duration-500  bg-blue-600" style="width:33%"></div></div></div><div class="mt-2"><div class="mb-2 flex justify-between items-center"><h3 class="text-sm font-semibold text-gray-600 dark:text-neutral-400">Electron</h3><span class="text-sm text-gray-600 dark:text-neutral-400">1年未満</span></div><div class="flex w-full h-1.5 bg-gray-200 rounded-full overflow-hidden dark:bg-neutral-700" role="progressbar" aria-label="Electronの習熟レベル" aria-valuenow="2" aria-valuemin="0" aria-valuemax="3"><div class="flex flex-col justify-center rounded-full overflow-hidden  text-xs text-white text-center whitespace-nowrap transition duration-500  bg-teal-500" style="width:66%"></div></div></div><div class="mt-2"><div class="mb-2 flex justify-between items-center"><h3 class="text-sm font-semibold text-gray-600 dark:text-neutral-400">Jetpack Compose</h3><span class="text-sm text-gray-600 dark:text-neutral-400">1年未満</span></div><div class="flex w-full h-1.5 bg-gray-200 rounded-full overflow-hidden dark:bg-neutral-700" role="progressbar" aria-label="Jetpack Composeの習熟レベル" aria-valuenow="2" aria-valuemin="0" aria-valuemax="3"><div class="flex flex-col justify-center rounded-full overflow-hidden  text-xs text-white text-center whitespace-nowrap transition duration-500  bg-teal-500" style="width:66%"></div></div></div><div class="mt-2"><div class="mb-2 flex justify-between items-center"><h3 class="text-sm font-semibold text-gray-600 dark:text-neutral-400">Flutter</h3><span class="text-sm text-gray-600 dark:text-neutral-400">1年未満</span></div><div class="flex w-full h-1.5 bg-gray-200 rounded-full overflow-hidden dark:bg-neutral-700" role="progressbar" aria-label="Flutterの習熟レベル" aria-valuenow="2" aria-valuemin="0" aria-valuemax="3"><div class="flex flex-col justify-center rounded-full overflow-hidden  text-xs text-white text-center whitespace-nowrap transition duration-500  bg-teal-500" style="width:66%"></div></div></div><div class="mt-2"><div class="mb-2 flex justify-between items-center"><h3 class="text-sm font-semibold text-gray-600 dark:text-neutral-400">CakePHP</h3><span class="text-sm text-gray-600 dark:text-neutral-400">1年以上</span></div><div class="flex w-full h-1.5 bg-gray-200 rounded-full overflow-hidden dark:bg-neutral-700" role="progressbar" aria-label="CakePHPの習熟レベル" aria-valuenow="2" aria-valuemin="0" aria-valuemax="3"><div class="flex flex-col justify-center rounded-full overflow-hidden  text-xs text-white text-center whitespace-nowrap transition duration-500  bg-teal-500" style="width:66%"></div></div></div><div class="mt-2"><div class="mb-2 flex justify-between items-center"><h3 class="text-sm font-semibold text-gray-600 dark:text-neutral-400">Ruby On Rails</h3><span class="text-sm text-gray-600 dark:text-neutral-400">1年以上</span></div><div class="flex w-full h-1.5 bg-gray-200 rounded-full overflow-hidden dark:bg-neutral-700" role="progressbar" aria-label="Ruby On Railsの習熟レベル" aria-valuenow="2" aria-valuemin="0" aria-valuemax="3"><div class="flex flex-col justify-center rounded-full overflow-hidden  text-xs text-white text-center whitespace-nowrap transition duration-500  bg-teal-500" style="width:66%"></div></div></div><div class="mt-2"><div class="mb-2 flex justify-between items-center"><h3 class="text-sm font-semibold text-gray-600 dark:text-neutral-400">Spring Framework</h3><span class="text-sm text-gray-600 dark:text-neutral-400">1年未満</span></div><div class="flex w-full h-1.5 bg-gray-200 rounded-full overflow-hidden dark:bg-neutral-700" role="progressbar" aria-label="Spring Frameworkの習熟レベル" aria-valuenow="1" aria-valuemin="0" aria-valuemax="3"><div class="flex flex-col justify-center rounded-full overflow-hidden  text-xs text-white text-center whitespace-nowrap transition duration-500  bg-blue-600" style="width:33%"></div></div></div><div class="mt-2"><div class="mb-2 flex justify-between items-center"><h3 class="text-sm font-semibold text-gray-600 dark:text-neutral-400">AWS(EC2、RDS、ELB、CloudWatch)</h3><span class="text-sm text-gray-600 dark:text-neutral-400">1年以上</span></div><div class="flex w-full h-1.5 bg-gray-200 rounded-full overflow-hidden dark:bg-neutral-700" role="progressbar" aria-label="AWS(EC2、RDS、ELB、CloudWatch)の習熟レベル" aria-valuenow="2" aria-valuemin="0" aria-valuemax="3"><div class="flex flex-col justify-center rounded-full overflow-hidden  text-xs text-white text-center whitespace-nowrap transition duration-500  bg-teal-500" style="width:66%"></div></div></div><div class="mt-2"><div class="mb-2 flex justify-between items-center"><h3 class="text-sm font-semibold text-gray-600 dark:text-neutral-400">Azure</h3><span class="text-sm text-gray-600 dark:text-neutral-400">1年未満</span></div><div class="flex w-full h-1.5 bg-gray-200 rounded-full overflow-hidden dark:bg-neutral-700" role="progressbar" aria-label="Azureの習熟レベル" aria-valuenow="1" aria-valuemin="0" aria-valuemax="3"><div class="flex flex-col justify-center rounded-full overflow-hidden  text-xs text-white text-center whitespace-nowrap transition duration-500  bg-blue-600" style="width:33%"></div></div></div><div class="mt-2"><div class="mb-2 flex justify-between items-center"><h3 class="text-sm font-semibold text-gray-600 dark:text-neutral-400">Linux</h3><span class="text-sm text-gray-600 dark:text-neutral-400">3年以上</span></div><div class="flex w-full h-1.5 bg-gray-200 rounded-full overflow-hidden dark:bg-neutral-700" role="progressbar" aria-label="Linuxの習熟レベル" aria-valuenow="3" aria-valuemin="0" aria-valuemax="3"><div class="flex flex-col justify-center rounded-full overflow-hidden  text-xs text-white text-center whitespace-nowrap transition duration-500  bg-yellow-500" style="width:100%"></div></div></div><div class="mt-2"><div class="mb-2 flex justify-between items-center"><h3 class="text-sm font-semibold text-gray-600 dark:text-neutral-400">FreeBSD</h3><span class="text-sm text-gray-600 dark:text-neutral-400">1年以上</span></div><div class="flex w-full h-1.5 bg-gray-200 rounded-full overflow-hidden dark:bg-neutral-700" role="progressbar" aria-label="FreeBSDの習熟レベル" aria-valuenow="2" aria-valuemin="0" aria-valuemax="3"><div class="flex flex-col justify-center rounded-full overflow-hidden  text-xs text-white text-center whitespace-nowrap transition duration-500  bg-teal-500" style="width:66%"></div></div></div></div></div></div></div><div><div class="mb-2 text-gray-600 dark:text-neutral-400">その他</div><div class="text-sm text-gray-600 dark:text-neutral-400">GitHub Actions, Docker, Tailwind, Vuetify, Preline UI, ActionScript, CodeIgniter, memcached, TokyoTyrant, Redis, qmail, Postfix, CourierIMAP, Dovecot, SpamAssassin, bsfilter, ClamAV, bind, Samba, NFS, Apache, lighttpd, Nginx, SQLite</div></div><div class="my-8"><a href="https://wakatime.com/@pontago" target="_blank" rel="noopener noreferrer"><div class="flex items-center gap-x-0.5"><div class="text-gray-600 dark:text-neutral-400">WakaTime</div><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 24 24" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="m13 3 3.293 3.293-7 7 1.414 1.414 7-7L21 11V3z"></path><path d="M19 19H5V5h7l-2-2H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h14c1.103 0 2-.897 2-2v-5l-2-2v7z"></path></svg></div></a><img class="w-full h-72 sm:h-96 object-contain dark:bg-gray-500" src="https://wakatime.com/share/@pontago/c6f3c792-c14f-419a-aa08-2e5c8551d071.svg" alt="WakaTimeで計測したコーディング時間のグラフ" loading="lazy" decoding="async"/></div></div></main><footer class="mt-8 w-full max-w-5xl mx-auto px-4 sm:px-6 lg:px-8"><div class="py-6 border-t border-gray-200 dark:border-neutral-700"><div class="flex flex-wrap justify-between items-center gap-2"><div><p class="text-xs text-gray-600 dark:text-neutral-400">© 2025 GREEN STUDIO.</p></div><ul class="flex flex-wrap items-center"><li class="inline-block relative pe-4 text-xs last:pe-0 last-of-type:before:hidden before:absolute before:top-1/2 before:end-1.5 before:-translate-y-1/2 before:size-[3px] before:rounded-full before:bg-gray-400 dark:text-neutral-500 dark:before:bg-neutral-600"><a class="text-xs text-gray-500 underline hover:text-gray-800 hover:decoration-2 focus:outline-hidden focu
1s:decoration-2 dark:text-neutral-500 dark:hover:text-neutral-400" href="https://www.greenstudio.jp/wp/app-terms/">アプリの利用規約</a></li><li class="inline-block relative pe-4 text-xs last:pe-0 last-of-type:before:hidden before:absolute before:top-1/2 before:end-1.5 before:-translate-y-1/2 before:size-[3px] before:rounded-full before:bg-gray-400 dark:text-neutral-500 dark:before:bg-neutral-600"><a class="text-xs text-gray-500 underline hover:text-gray-800 hover:decoration-2 focus:outline-hidden focus:decoration-2 dark:text-neutral-500 dark:hover:text-neutral-400" href="https://www.greenstudio.jp/wp/app-privacy-policy/">プライバシーポリシー</a></li></ul><ul class="flex flex-wrap items-center"><li class="inline-block relative pe-4 text-xs last:pe-0 last-of-type:before:hidden before:absolute before:top-1/2 before:end-1.5 before:-translate-y-1/2 before:size-[3px] before:rounded-full before:bg-gray-400 dark:text-neutral-500 dark:before:bg-neutral-600"><a class="text-xs text-gray-500 underline hover:text-gray-800 hover:decoration-2 focus:outline-hidden focus:decoration-2 dark:text-neutral-500 dark:hover:text-neutral-400" href="https://x.com/happytar0">X (Twitter)</a></li><li class="inline-block pe-4 text-xs"><a class="text-xs text-gray-500 underline hover:text-gray-800 hover:decoration-2 focus:outline-hidden focus:decoration-2 dark:text-neutral-500 dark:hover:text-neutral-400" href="https://github.com/pontago">GitHub</a></li><li class="inline-block"><button type="button" class="relative justify-center items-center size-7 border border-gray-200 text-gray-500 rounded-full hover:bg-gray-200 focus:outline-hidden focus:bg-gray-200 dark:border-neutral-700 dark:text-neutral-400 dark:hover:bg-neutral-700 dark:focus:bg-neutral-700 flex"><span class="sr-only">Dark</span><svg class="shrink-0 size-3.5" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z"></path></svg></button><button type="button" class="relative justify-center items-center size-7 border border-gray-200 text-gray-500 rounded-full hover:bg-gray-200 focus:outline-hidden focus:bg-gray-200 dark:border-neutral-700 dark:text-neutral-400 dark:hover:bg-neutral-700 dark:focus:bg-neutral-700 hidden"><span class="sr-only">Light</span><svg class="shrink-0 size-3.5" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="4"></circle><path d="M12 2v2"></path><path d="M12 20v2"></path><path d="m4.93 4.93 1.41 1.41"></path><path d="m17.66 17.66 1.41 1.41"></path><path d="M2 12h2"></path><path d="M20 12h2"></path><path d="m6.34 17.66-1.41 1.41"></path><path d="m19.07 4.93-1.41 1.41"></path></svg></button></li></ul></div></div></footer>
1<script>((storageKey, restoreKey) => {
2		if (!window.history.state || !window.history.state.key) {
3			let key = Math.random().toString(32).slice(2);
4			window.history.replaceState({ key }, "");
5		}
6		try {
7			let storedY = JSON.parse(sessionStorage.getItem(storageKey) || "{}")[restoreKey || window.history.state.key];
8			if (typeof storedY === "number") window.scrollTo(0, storedY);
9		} catch (error) {
10			console.error(error);
11			sessionStorage.removeItem(storageKey);
12		}
13	})("react-router-scroll-positions", null)</script>
13<script>window.__reactRouterContext = {"basename":"/","future":{"unstable_enableNodeReadableStream":false,"unstable_optimizeDeps":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamController = controller;}}).pipeThrough(new TextEncoderStream());</script>
13<script type="module" async="">import "/assets/manifest-b692ada9.js";
14import * as route0 from "/assets/root-Sm4AK8A4.js";
15import * as route1 from "/assets/_-Bz4vphrk.js";
16import * as route2 from "/assets/_.portfolio._index-bVUZbKSO.js";
17  
18  window.__reactRouterRouteModules = {"root":route0,"routes/_":route1,"routes/_.portfolio._index":route2};
19
20import("/assets/entry.client-Q9l9s2QG.js");</script>
20<!--$?--><template id="B:1"></template><!--/$-->
20<script id="_R_">requestAnimationFrame(function(){$RT=performance.now()});</script>
20<div hidden id="S:0"><div class="mt-4 w-full grid grid-cols-1 sm:grid-cols-2 auto-rows-[13rem] gap-4 min-h-[83rem] sm:min-h-[41rem]"><ul class="h-full overflow-hidden p-4 rounded-xl border border-gray-200 dark:border-neutral-700 space-y-3"><li class="h-6 w-full bg-gray-100 rounded dark:bg-neutral-800"></li><li class="h-4 w-1/2 bg-gray-100 rounded dark:bg-neutral-800"></li><li class="h-16 w-full bg-gray-100 rounded dark:bg-neutral-800"></li></ul><ul class="h-full overflow-hidden p-4 rounded-xl border border-gray-200 dark:border-neutral-700 space-y-3"><li class="h-6 w-full bg-gray-100 rounded dark:bg-neutral-800"></li><li class="h-4 w-1/2 bg-gray-100 rounded dark:bg-neutral-800"></li><li class="h-16 w-full bg-gray-100 rounded dark:bg-neutral-800"></li></ul><ul class="h-full overflow-hidden p-4 rounded-xl border border-gray-200 dark:border-neutral-700 space-y-3"><li class="h-6 w-full bg-gray-100 rounded dark:bg-neutral-800"></li><li class="h-4 w-1/2 bg-gray-100 rounded dark:bg-neutral-800"></li><li class="h-16 w-full bg-gray-100 rounded dark:bg-neutral-800"></li></ul><ul class="h-full overflow-hidden p-4 rounded-xl border border-gray-200 dark:border-neutral-700 space-y-3"><li class="h-6 w-full bg-gray-100 rounded dark:bg-neutral-800"></li><li class="h-4 w-1/2 bg-gray-100 rounded dark:bg-neutral-800"></li><li class="h-16 w-full bg-gray-100 rounded dark:bg-neutral-800"></li></ul><ul class="h-full overflow-hidden p-4 rounded-xl border border-gray-200 dark:border-neutral-700 space-y-3"><li class="h-6 w-full bg-gray-100 rounded dark:bg-neutral-800"></li><li class="h-4 w-1/2 bg-gray-100 rounded dark:bg-neutral-800"></li><li class="h-16 w-full bg-gray-100 rounded dark:bg-neutral-800"></li></ul><ul class="h-full overflow-hidden p-4 rounded-xl border border-gray-200 dark:border-neutral-700 space-y-3"><li class="h-6 w-full bg-gray-100 rounded dark:bg-neutral-800"></li><li class="h-4 w-1/2 bg-gray-100 rounded dark:bg-neutral-800"></li><li class="h-16 w-full bg-gray-100 rounded dark:bg-neutral-800"></li></ul></div></div>
20<script>$RB=[];$RV=function(a){$RT=performance.now();for(var b=0;b<a.length;b+=2){var c=a[b],e=a[b+1];null!==e.parentNode&&e.parentNode.removeChild(e);var f=c.parentNode;if(f){var g=c.previousSibling,h=0;do{if(c&&8===c.nodeType){var d=c.data;if("/$"===d||"/&"===d)if(0===h)break;else h--;else"$"!==d&&"$?"!==d&&"$~"!==d&&"$!"!==d&&"&"!==d||h++}d=c.nextSibling;f.removeChild(c);c=d}while(c);for(;e.firstChild;)f.insertBefore(e.firstChild,c);g.data="$";g._reactRetry&&requestAnimationFrame(g._reactRetry)}}a.length=0};
21$RC=function(a,b){if(b=document.getElementById(b))(a=document.getElementById(a))?(a.previousSibling.data="$~",$RB.push(a,b),2===$RB.length&&("number"!==typeof $RT?requestAnimationFrame($RV.bind(null,$RB)):(a=performance.now(),setTimeout($RV.bind(null,$RB),2300>a&&2E3<a?2300-a:$RT+300-a)))):b.parentNode.removeChild(b)};$RC("B:0","S:0")</script>
21<div hidden id="S:1">
21<script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_3\":-5,\"_4\":-5},\"loaderData\",{\"_5\":6},\"actionData\",\"errors\",\"routes/_\",{\"_7\":8,\"_9\":10},\"skills\",[224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252],\"portfolios\",[11,12,13,14,15,16,17,18,19,20,21,22],{\"_23\":202,\"_25\":202,\"_26\":203,\"_28\":204,\"_30\":205,\"_32\":206,\"_34\":207,\"_36\":208,\"_38\":209,\"_40\":210},{\"_23\":186,\"_25\":186,\"_26\":187,\"_28\":188,\"_30\":189,\"_32\":190,\"_34\":191,\"_36\":192,\"_38\":193,\"_40\":194},{\"_23\":171,\"_25\":171,\"_26\":172,\"_28\":173,\"_30\":174,\"_32\":175,\"_34\":176,\"_36\":177,\"_38\":178,\"_40\":179},{\"_23\":153,\"_25\":153,\"_26\":154,\"_28\":155,\"_30\":156,\"_32\":157,\"_34\":158,\"_36\":159,\"_38\":160,\"_40\":161},{\"_23\":138,\"_25\":138,\"_26\":139,\"_28\":140,\"_30\":141,\"_32\":142,\"_34\":143,\"_36\":144,\"_38\":145,\"_40\":146},{\"_23\":123,\"_25\":123,\"_26\":124,\"_28\":125,\"_30\":126,\"_32\":127,\"_34\":128,\"_36\":129,\"_38\":130,\"_40\":131},{\"_23\":105,\"_25\":105,\"_26\":106,\"_28\":107,\"_30\":108,\"_32\":109,\"_34\":110,\"_36\":111,\"_38\":112,\"_40\":113},{\"_23\":91,\"_76\":77,\"_25\":91,\"_26\":92,\"_28\":93,\"_30\":94,\"_32\":95,\"_34\":96,\"_36\":97,\"_38\":98,\"_40\":99},{\"_23\":75,\"_76\":77,\"_25\":75,\"_26\":78,\"_28\":79,\"_30\":80,\"_32\":81,\"_34\":82,\"_36\":83,\"_38\":84,\"_40\":85},{\"_23\":62,\"_25\":62,\"_26\":63,\"_28\":64,\"_30\":65,\"_32\":66,\"_34\":67,\"_36\":53,\"_38\":68,\"_40\":69},{\"_23\":47,\"_25\":47,\"_26\":48,\"_28\":49,\"_30\":50,\"_32\":51,\"_34\":52,\"_36\":53,\"_38\":54,\"_40\":55},{\"_23\":24,\"_25\":24,\"_26\":27,\"_28\":29,\"_30\":31,\"_32\":33,\"_34\":35,\"_36\":37,\"_38\":39,\"_40\":41},\"id\",\"ashiatoplus\",\"name\",\"title\",\"あしあとプラス\",\"categories\",[44],\"cover\",\"/images/portfolio/ashiatoplus/cover.webp\",\"subtitle\",\"mixiのあしあとを独自に記録するアプリ\",\"description\",\"mixiのあしあとを独自に記録するオープンソーシャルアプリです。\u003cbr/\u003e独自のアクセス解析機能でアクセス数を確認できます。\u003cbr/\u003eアプリランキング1位、30万以上のユーザーに使われ、300万/日のアクセスに対応しました。\u003cbr/\u003e現在は公開終了しています。\",\"techDescription\",\"AWS(EC2、RDS、ELB、CloudWatch)、Linux、Apache、Ruby、Ruby On Rails(2.3系)、MySQL、JavaScript。\",\"images\",[31],\"links\",[42],{\"_43\":44,\"_45\":46},\"category\",\"Web\",\"url\",\"https://gamebiz.jp/news/33820\",\"smileplayerhd\",\"SmilePlayerHD\",[61],\"/images/portfolio/smileplayerhd/cover.webp\",\"非公式のニコニコ動画専用のiPad動画プレイヤー\",\"FLV形式のニコニコ動画を再生できるiPadアプリです。\u003cbr/\u003ePCと同じ高画質での再生が可能で、コメントの表示や投稿もできます。\u003cbr/\u003eFLV形式の動画も変換して保存することで再生できるようになっています。\u003cbr/\u003e現在は公開終了しています。\",\"iOS、Objective-C、SQLite、FFmpeg。設計からプログラミングまですべて担当。\",[56,57,58,59,60],[],\"/images/portfolio/smileplayerhd/1_s.png\",\"/images/portfolio/smileplayerhd/2_s.png\",\"/images/portfolio/smileplayerhd/3_s.png\",\"/images/portfolio/smileplayerhd/4_s.png\",\"/images/portfolio/smileplayerhd/5_s.png\",\"iOS\",\"smileplayer2\",\"SmilePlayer2\",[61],\"/images/portfolio/smileplayer2/cover.webp\",\"非公式のニコニコ動画専用の動画プレイヤー\",\"リアルタイムデコードでFLV形式のニコニコ動画を再生できるアプリです。\u003cbr/\u003ePCと同じ高画質での再生が可能で、コメントの表示や投稿もできます。独自のNG機能で動画やコメントを非表示にできます。\u003cbr/\u003e総ダウンロード74万、カテゴリランキング5位以内に入りました。\u003cbr/\u003e現在は公開終了しています。\",[70,71,72,73,74],[],\"/images/portfolio/smileplayer2/1_s.png\",\"/images/portfolio/smileplayer2/2_s.png\",\"/images/portfolio/smileplayer2/3_s.png\",\"/images/portfolio/smileplayer2/4_s.png\",\"/images/portfolio/smileplayer2/5_s.png\",\"screencapture\",\"print\",false,\"画面メモアプリ\",[61],\"/images/portfolio/screencapture/cover.webp\",\"ブラウザで表示した画面を保存できるシンプルなアプリ\",\"ブラウザで表示した画面を画像として保存できるアプリです。\u003cbr/\u003eスクロールが必要な画面で見切れていても縦長で保存できるようにしました。Safariアドオンや保存したスクショのフォルダ管理も可能です。\",\"iOS、Objective-C、SQLite。設計からプログラミングまですべて担当。\",[88,89,90],[86],{\"_43\":61,\"_45\":87},\"https://apps.apple.com/jp/app/id1059898616?platform=iphone\",\"/images/portfolio/screencapture/1_s.png\",\"/images/portfolio/screencapture/2_s.png\",\"/images/portfolio/screencapture/3_s.png\",\"inputhankaku\",\"半角カナ入力アプリ\",[61],\"/images/portfolio/inputhankaku/cover.webp\",\"ワンタップで半角カタカナに変換できるシンプルなアプリ\",\"ひらがなや全角カタカナを半角カタカナに変換できるアプリです。\u003cbr/\u003eひらがなã
21®å¤‰æ›ã‚„クリップボードからの入力にも対応しています。\",\"iOS、Objective-C、Swift、Swift UI。設計からプログラミングまですべて担当。\",[102,103,104],[100],{\"_43\":61,\"_45\":101},\"https://apps.apple.com/jp/app/id672641438?platform=iphone\",\"/images/portfolio/inputhankaku/3_s.png\",\"/images/portfolio/inputhankaku/1_s.png\",\"/images/portfolio/inputhankaku/2_s.png\",\"tdnetviewer-app\",\"適時開示情報アプリ\",[61,116],\"/images/portfolio/tdnetviewer-app/cover.webp\",\"TDNETとEDINETの適時開示をPUSH通知で受け取れるアプリ\",\"TDNET、EDINETの適時開示を過去3年分検索できます。\u003cbr/\u003e新着の適時開示をリアルタイムでPUSH通知で受け取れる他、決算予定カレンダーやAI要約にも対応しています。iOSとAndroidともにネイティブ実装しました。\",\"iOS/Android、Swift、Swift UI(ウィジェット箇所のみ)、Kotlin、Hilt、Jetpack Compose、Retrofit、Glance、Firebase。設計からプログラミングまですべて担当。\",[119,120,121,122],[114,115],{\"_43\":61,\"_45\":118},{\"_43\":116,\"_45\":117},\"Android\",\"https://play.google.com/store/apps/details?id=jp.pontago.tdnetviewer\",\"https://apps.apple.com/jp/app/id1437884389?platform=iphone\",\"/images/portfolio/tdnetviewer-app/1_s.png\",\"/images/portfolio/tdnetviewer-app/2_s.png\",\"/images/portfolio/tdnetviewer-app/3_s.png\",\"/images/portfolio/tdnetviewer-app/4_s.png\",\"tdnetviewer-web\",\"適時開示情報WEB\",[44],\"/images/portfolio/tdnetviewer-web/cover.webp\",\"適時開示情報をWebから閲覧できるサイト\",\"TDNET、EDINETの適時開示一覧を表示するサービスです。\u003cbr/\u003eDBからデータを取得するためのAPIの実装、Vueを利用したPDFの表示を実装しました。\",\"JavaScript、Express(4系)、Nuxt.js(2系)、Vue.js(2系)、Vuetify、MySQL(5.7系、Mroonga)。設計からプログラミングまですべて担当。\",[134,135,136,137],[132],{\"_43\":44,\"_45\":133},\"https://tdview.net/\",\"/images/portfolio/tdnetviewer-web/1.png\",\"/images/portfolio/tdnetviewer-web/2.png\",\"/images/portfolio/tdnetviewer-web/3.png\",\"/images/portfolio/tdnetviewer-web/4.png\",\"supdrops\",\"Supreme Droplists\",[44],\"/images/portfolio/supdrops/cover.webp\",\"Supremeの新作アイテムやアーカイブをチェックできるサイト\",\"Supremeの新作リリース情報をチェックできるサイトです。\u003cbr/\u003e先行して販売される海外の情報をもとにいち早くリリース情報を確認できます。\",\"JavaScript、TypeScript、Nuxt.js(2系)、Vue.js(2系)、Express(4系)、Vuetify、MySQL(5.7系、Mroonga)。設計からプログラミングまですべて担当。\",[149,150,151,152],[147],{\"_43\":44,\"_45\":148},\"https://supdrops.com/\",\"/images/portfolio/supdrops/1.png\",\"/images/portfolio/supdrops/2.png\",\"/images/portfolio/supdrops/3.png\",\"/images/portfolio/supdrops/4.png\",\"balancemanagement\",\"収支管理アプリ\",[61,116],\"/images/portfolio/balancemanagement/cover.webp\",\"iOSとAndroidで使えるシンプルな収支管理アプリ\",\"収支を管理するアプリです。家計簿、投資・キャンブルの収支管理を簡単におこなえます。\u003cbr/\u003eカレンダーでの収支一覧表示、カテゴリ・タグでの分類、グラフ表示などすべての機能が無料で使えます。\",\"iOS/Android、Flutter(3系)、Dart、Riverpod、drift、SQLite3、Firebase、RevenueCat。\u003cbr/\u003e設計からプログラミングまですべて担当。レイヤードアーキテクチャで実装してみました。\",[166,167,168,169,170],[162,163],{\"_43\":61,\"_45\":165},{\"_43\":116,\"_45\":164},\"https://play.google.com/store/apps/details?id=jp.pontago.balancemanagement\",\"https://apps.apple.com/jp/app/id6739166490?platform=iphone\",\"/images/portfolio/balancemanagement/1_s.png\",\"/images/portfolio/balancemanagement/2_s.png\",\"/images/portfolio/balancemanagement/3_s.png\",\"/images/portfolio/balancemanagement/4_s.png\",\"/images/portfolio/balancemanagement/5_s.png\",\"greenstudio-web\",\"GREEN STUDIO WEB\",[44],\"/images/portfolio/greenstudio-web/cover.webp\",\"自分が作ったものをまとめたポートフォリオサイト\",\"自分が作ったものをまとめたポートフォリオサイトです。\u003cbr/\u003eRemix、Reactを使用して作りました。GitHubでソースコードも公開しています。\u003cbr/\u003eGitHub Actionsを使用してデプロイまで自動化できるようにしました。\u003cbr/\u003eさくらインターネットの共有サーバで動作するようにSPA+PHPで実装。\",\"JavaScript、TypeScript、Remix、React、TailwindCSS、Preline UI、PHP、GitHub Actions、Docker。\",[182,183,184,185],[180],{\"_43\":44,\"_45\":181},\"https://github.com/pontago/greenstudio-web\",\"/images/portfolio/greenstudio-web/1.png\",\"/images/portfolio/greenstudio-web/2.png\",\"/images/portfolio/greenstudio-web/3.png\",\"/images/portfolio/greenstudio-web/4.png\",\"otenki-live\",\"お天気ライブ\",[44],\"/images/portfolio/otenki-live/cover.webp\",\"天気予報データとライブカメラ映像の検出データを組み合わせた天気予報サービス\",\"機械学習モデルを用いて歩行者の人数や服装、傘を検出し、天気予報とçµ
21„み合わせて表示を行うサービスです。\u003cbr/\u003eGitHubでソースコードも公開しています。\u003cbr/\u003eFastAPI+Next.jsをAWSサーバレス構成で構築、TerraformとGitHub Actionsを使用してデプロイまで自動化できるようにしました。\",\"FastAPI、Python、uv、ruff、mypy、Next.js、TypeScript、React、Storybook、Vitest、Playwright E2E、MSW、shadcn/ui、TailwindCSS、EfficientNetV2、SAHI、YOLO、GitHub Actions、Docker、Terraform、AWS(Lambda、CloudFront、DynamoDB、SQS、SES、S3、ECR、EventBridge)。\",[199,200,201],[195,196],{\"_43\":44,\"_45\":198},{\"_43\":44,\"_45\":197},\"https://github.com/pontago/otenki-live\",\"https://otenki.pontago.net\",\"/images/portfolio/otenki-live/1.png\",\"/images/portfolio/otenki-live/2.png\",\"/images/portfolio/otenki-live/3.png\",\"colorwalker\",\"Color Walker\",[61,116],\"/images/portfolio/colorwalker/cover.webp\",\"お題のカラーを探して撮影。集めた色をコラージュに仕立てるアプリ\",\"お題のカラーを抽選し、街を歩きながら見つけた色を撮影してコラージュを作成できるアプリです。\u003cbr/\u003eひとりで楽しめるほか、グループで担当カラーを振り分け、撮影した写真の共有やチャットもできます。\",\"iOS/Android、Flutter(3系)、Dart、Riverpod、Hono、TypeScript、Cloudflare Workers、Durable Objects、D1、R2、Firebase。\u003cbr/\u003e設計からプログラミングまですべて担当。\",[217,218,219,220,221,222,223],[211,212,213],{\"_43\":44,\"_45\":216},{\"_43\":61,\"_45\":215},{\"_43\":116,\"_45\":214},\"https://play.google.com/store/apps/details?id=jp.pontago.colorwalker\",\"https://apps.apple.com/app/id6795416397\",\"https://colorwalker.app/\",\"/images/portfolio/colorwalker/1_s.png\",\"/images/portfolio/colorwalker/2_s.png\",\"/images/portfolio/colorwalker/3_s.png\",\"/images/portfolio/colorwalker/4_s.png\",\"/images/portfolio/colorwalker/5_s.png\",\"/images/portfolio/colorwalker/6_s.png\",\"/images/portfolio/colorwalker/7_s.png\",{\"_23\":319,\"_43\":291,\"_25\":320,\"_256\":262,\"_258\":263},{\"_23\":317,\"_43\":291,\"_25\":318,\"_256\":257,\"_258\":263},{\"_23\":315,\"_43\":291,\"_25\":316,\"_256\":257,\"_258\":263},{\"_23\":313,\"_43\":291,\"_25\":314,\"_256\":262,\"_258\":263},{\"_23\":311,\"_43\":291,\"_25\":312,\"_256\":262,\"_258\":263},{\"_23\":309,\"_43\":291,\"_25\":310,\"_256\":257,\"_258\":267},{\"_23\":307,\"_43\":291,\"_25\":308,\"_256\":257,\"_258\":267},{\"_23\":305,\"_43\":291,\"_25\":306,\"_256\":266,\"_258\":267},{\"_23\":303,\"_43\":291,\"_25\":304,\"_256\":266,\"_258\":259},{\"_23\":301,\"_43\":291,\"_25\":302,\"_256\":266,\"_258\":267},{\"_23\":299,\"_43\":291,\"_25\":300,\"_256\":266,\"_258\":267},{\"_23\":297,\"_43\":291,\"_25\":298,\"_256\":262,\"_258\":263},{\"_23\":295,\"_43\":291,\"_25\":296,\"_256\":257,\"_258\":259},{\"_23\":293,\"_43\":291,\"_25\":294,\"_256\":266,\"_258\":267},{\"_23\":290,\"_43\":291,\"_25\":292,\"_256\":266,\"_258\":267},{\"_23\":288,\"_43\":254,\"_25\":289,\"_256\":262,\"_258\":263},{\"_23\":286,\"_43\":254,\"_25\":287,\"_256\":266,\"_258\":267},{\"_23\":284,\"_43\":254,\"_25\":285,\"_256\":262,\"_258\":263},{\"_23\":282,\"_43\":254,\"_25\":283,\"_256\":266,\"_258\":267},{\"_23\":280,\"_43\":254,\"_25\":281,\"_256\":257,\"_258\":267},{\"_23\":278,\"_43\":254,\"_25\":279,\"_256\":257,\"_258\":267},{\"_23\":276,\"_43\":254,\"_25\":277,\"_256\":257,\"_258\":267},{\"_23\":274,\"_43\":254,\"_25\":275,\"_256\":257,\"_258\":259},{\"_23\":272,\"_43\":254,\"_25\":273,\"_256\":257,\"_258\":259},{\"_23\":270,\"_43\":254,\"_25\":271,\"_256\":266,\"_258\":267},{\"_23\":268,\"_43\":254,\"_25\":269,\"_256\":257,\"_258\":259},{\"_23\":264,\"_43\":254,\"_25\":265,\"_256\":266,\"_258\":267},{\"_23\":260,\"_43\":254,\"_25\":261,\"_256\":262,\"_258\":263},{\"_23\":253,\"_43\":254,\"_25\":255,\"_256\":257,\"_258\":259},\"frameworks-13\",\"frameworks\",\"FreeBSD\",\"level\",2,\"experience\",\"1年以上\",\"frameworks-12\",\"Linux\",3,\"3年以上\",\"frameworks-11\",\"Azure\",1,\"1年未満\",\"frameworks-10\",\"AWS(EC2、RDS、ELB、CloudWatch)\",\"frameworks-9\",\"Spring Framework\",\"frameworks-8\",\"Ruby On Rails\",\"frameworks-7\",\"CakePHP\",\"frameworks-6\",\"Flutter\",\"frameworks-5\",\"Jetpack Compose\",\"frameworks-4\",\"Electron\",\"frameworks-3\",\"React\",\"frameworks-2\",\"Vue.js\",\"frameworks-1\",\"Remix\",\"frameworks-0\",\"Nuxt.js\",\"languages-14\",\"languages\",\"Oracle\",\"languages-13\",\"MS SQL Server\",\"languages-12\",\"PostgreSQL\",\"languages-11\",\"MySQL\",\"languages-10\",\"ColdFusion\",\"languages-9\",\"C#\",\"languages-8\",\"VB, C++\",\"languages-7\",\"Java\",\"languages-6\",\"Dart\",\"languages-5\",\"Kotlin\",\"languages-4\",\"Swift\",\"languages-3\",\"Objective-C\",\"languages-2\",\"Ruby\",\"languages-1\",\"PHP\",\"languages-0\",\"TypeScript, JavaScript\"]\n");</script>
21<!--$?--><template id="B:2"></template><!--/$--></div>
21<script>$RC("B:1","S:1")</script>
21<div hidden id="S:2">
21<script>window.__reactRouterContext.streamController.close();</script>
21</div>
21<script>$RC("B:2","S:2")</script>
21<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"3401e16c7a5a4b4fb4cd9d4e56c7eed7","r":1,"spa":2}' crossorigin="anonymous"></script>
21
22</body></html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.