ポートフォリオサイトを作った話

技術

お久しぶりです。自サイトを全く更新しない男、風祭です。というのも、ポートフォリオサイトの更新を行っていたんですよね。忘れてたことを思い出したり、知らないことを身に着けたりに時間がかかっていました……

松田晃政のポートフォリオ
松田晃政のポートフォリオサイトです。ポートフォリオには簡単な自己紹介、スキル、成果物などが掲載されています。

上記がポートフォリオサイトです(ネット時代にがっつり本名が出てる)。
今回はどんな技術を使ってポートフォリオサイトを作ったかの覚え書きを残しておこうと思います。

全体の構成

まずは全体の構成をどのように作ったか、からお話していきます。最近はPHPとかTypeScriptを主体としたサイトが流行りらしいですが、この怠慢野郎風祭はその辺詳しくないので、HTMLを使ったコーディングになります。ただ、それにしても体裁はどうにかしなければならないので、Bootstrapを使い見た目を担保しています。

Bootstrap
パワフルで拡張性の高い、機能満載のフロントエンドツールキットです。Sassでビルドしてカスタマイズし、あらかじめ用意されたグリッドシステムとコンポーネントを利用し、強力なJavaScriptプラグインでプロジェクトに命を吹き込むことができま...

ちょっと勉強するだけでレスポンシブ対応したサイトを作れるのがこのBootstrap。特に開発環境が大きい画面のPCだとついついスマホのことを忘れちゃうんですよね。Chromeの開発者モードを使って確かめると、テキストが枠からはみ出てしまう事案が発生してしまうケースが起こること起こること。

笑顔で観れそうな動画サイト

上記のように「CSSを完全に理解した」状態を作らないためにも、Bootstrapのようなフレームワークは活用していくべきでしょう。まぁそれでもやらかす時はやらかします。

HTMLでルビ(ふりがな)を振ってみよう!rubyタグの使い方を解説 | ポテパンスタイル
目次1 ルビとは2 HTMLでルビを振るために必要なタグ3 ruby要素でルビを振ってみよう4 CSSでルビを装飾する5 ルビ(ふりがな)を振って、読みやすく親切にルビとはルビとは、漢字などに付けるふりがなのことです。HTMLでも

そういえばルビの振り方を初めて知りました。私の名前を初見で読める方はそう多くないのでね……

初回訪問の演出

アクセスしてくださった方はご存じかもしれませんが、初回訪問時にのみ演出が付きます。どんな演出かは見ていただくとして、あれも既存のものになります。

StarWarsIntro.css : The Star Wars Intro Crawl in Pure CSS
Make great intros to awesome Star Wars tools online. Use StarWarsIntro.css to create The Star Wars Intro Crawl effect.

なんか奇抜な演出ないかなぁ、とGitHubをうろついていたら見つけました。非常に使いやすくまとめてあって助かりました。

あとは2回目の訪問以降にあの演出が出ないようにする実装を組み込むだけです。cookieを使うかローカルストレージを使うかで迷いましたが、(一部の地域では)cookieを入れるときは許可するかのダイアログを入れないといけないので、ローカルストレージにしました。

// ページ読み込み時に実行される関数
window.onload = function onPageLoad() {
    if (!localStorage.getItem("firstTimeUser")) {
        localStorage.setItem("firstTimeUser", "true"); // ローカルストレージに設定
        overlay.style.display = "block";
        document.body.classList.add('no-scroll');
    } else {
        overlay.style.display = "none";
        document.body.classList.remove('no-scroll');
    }
}

ページを読み込んだとき、「firstTimeUser」のキーにtrueがあれば、演出に使っている領域を非表示にし、スクロールを許可するといった感じです。

[JavaScript ] 初回アクセス時に1回だけポップアップ(モーダル)を表示したい
メンテナンスの予定など、必ず確認してもらいたいお知らせを通知する方法として、ポップアップ(モーダルウィンドウ)があります ページを開く度に表示する必要はないため、二回目以降の訪問時には表示させないよう制御する必要がありま

上記を参考に作りました。

ちなみに、もう一度最初の演出を見たい場合はフッターのところにボタンが用意されているので、こちらを押してみてください。

スクロールバー

スクロールバーもCSSで変更できることを最近知りました。デザインをボタンポチポチで作れるサイトがあったので、ここで紹介させて頂きます。

Scrollbar.app
Simple CSS scrollbar editor.

その名も「scrollbar.app」、名が役割を呈していますね。アクセスして、どんなデザインにするかボタンで決めるだけなので、とても助かりました。

お問い合わせフォーム

実はここが一番大変だったポイントでした。一般的にはPHPを使って作るのですが、当HPのWordPressにデータベースを使っているので混在させるリスクや、無料サーバー(追記:現在は有料サーバーに乗り換えています。)を使っている制限からGoogle Formsを使用することにしました。

Google Forms: オンライン フォーム作成ツール | Google Workspace
Google Forms を使用して、さまざまな質問形式でオンライン フォームやアンケートを作成しましょう。どのデバイスでもリアルタイムで結果を分析できます。

特に小規模のフォームだとデータベース構築するコストを考えるとGoogle Formsが便利なんですよねぇ。メール転送や、スプレッドシート連携がかなり強力です。

ただ、「外部サービス使ってる」感が強くなってしまうんですよね。iframeで埋め込むとわかるのですが、レスポンシブ対応できなかったり、デザインが不揃いで何とも言えない感じになります。特にiframe内で縦にスクロールできてしまうのがちょっとダサいですね。

【コピーでOK】iframeのサイズを自動調整する方法
iframeで別Webページを呼び出す際、呼び出すWebページに合わせてiframeのサイズを自動調整する方法をご紹介しています。
iframeの高さを判別して自動的に調整する(JavaScript)
iframeを使っているページなどで、iframeの高さを判別して自動的に調整したい。そんなときのJavaScriptです。 jQueryを使用する方法と、jQueryを使用しない方法の2通りの設定方法を解説します。 cssなどでもできます

レスポンシブ対応に関して、横はwidthを100%にすればいいのですが、高さはそう簡単ではなく、上記の方法を取ったりする必要があったりします。(Google Formsではうまく動作しなかった……)

そんな折にこんな記事を見つけました。

これ見たときは「まさにこれ!」となりました。フォームは自分で作って、データはGoogle Formsに送信することを実現できました。しかもメール転送のコードまで載せていらっしゃった……!

でもって完成したフォームがこちら。裏では……

念のためモザイク処理しときました。

送信先がGoogle Formsになっています。これは他のところでも使える技術ですね。というかこっちのお問い合わせフォームもこれで実装しようかしら。

最後の仕上げ

友人にサイトが動作しているかチェックしてもらうときに気づいたことなのですが、

いつも出てくるやつが出ない!

サイトのプレビューが出ない!

そう、SNSのプレビューが出なかったんですよ、てっきり私はmetaタグを入れとけばどうにかしてくれるでしょと思っていたのですが、そういうわけでは無いらしいです。

OGPってなんだよ!

Open Graph Protcolの略で、HTMLの要素の一つです。SNSでシェアした際に表示されるコンテンツを制御できます。詳しいことは下記サイトが解説しています。

OGPとは?設定すべき理由や適切な設定方法など徹底解説!|SEOラボ
OGPとは“Open Graph Protocol”の略で、FacebookやTwitterなどSNSで拡散された際に表示される内容を意味します。ここを適切に記述しておかなければせっかくのバズを逃す可能性もあるため、正しく理解しておきましょ...

SEOにも効いてくる要素なので、Web業界で仕事したいなら覚えておく要素ですね(他人事)。

できた

まとめ

ということでなんやかんやありましたが、人に見せられる程度のポートフォリオサイトを完成させることができました。あとは各要素をぐりぐり動かせると面白いので、下記サイトを参考にして追加実装していくとします。

サンプル付コピペOK!すごいCSSアニメーションライブラリ30選【2022年版】
ウェブサイトの印象を決める、現役Webデザイナーがこれは外せない!というCSSアニメーションライブラリをまとめてご紹介。用途に応じたアニメーションを実装できる便利なライブラリまとめで、フワフワやユラユラ、ポヨンといった弾む系の動きから、背景...
CSSで作るローディングアニメーション40選〜待ち時間を楽しくするテクニック
ページ読み込みの待ち時間が、思わず楽しくなってしまうようなローディングアニメーションを40個まとめました!cssのみで実装できるものを集めたので、カスタマイズも簡単で、自作する時の参考にもなりますね。ベーシックなものからユニークなものまで幅...

あと役に立ったといえばChatGPTですね。全体を一気に出力してもらうというよりは、「こういう実装ってそもそも可能なの?」みたいな質問をすると、高い確度で返してくれます。もうこれなしには生きていけない……

Just a moment...
Just a moment...

出力されたコードを確認するのはCodePenが便利ですね。ChatGPTで出力→CodePenで確認のループを回すと学習が進みます。

以上がwebエンジニア志望大学生がポートフォリオサイトを作った話、でした。

コメント