掲題のとおりです。
先日ひとりで自宅酒に浸っていたところ、HN「わたはり」を名乗り始めて10年くらい経つなと気づき、せっかくだからwatahari.comを取ってやろうと思ったらしく(酔っているので記憶はあやしい)、翌朝起きるとValueDomainから領収書メールが届いていました。
初めて「わたはりさん」と呼んできた学生時代の友人todoさん、お元気ですか。
せっかくなので、vue.jsに初挑戦してvuetifyに初挑戦してnetlifyに初挑戦したらあっけなく個人サイトができました。
目次
思い出話
初めてHTML/CSSに触れたのは、思い起こせば20年くらい前だったでしょうか。
Windows98についてきてたFrontPage Expressって覚えてますか。私はさっき調べるまで、「あの赤い羽根?ペン?みたいなアイコンのソフト・・・」くらいしか覚えてませんでした。あのFrontPage Expressでセコセコと、framesetごりごり、maqueeタグごりごり、マウスカーソルにはもちろんシャラシャラしたなにかがくっついてきて、、、しかもこれ、インターネットに公開するわけでもなく、PCローカルで作って遊んでいました。
FrontPage Expressがあまりに非力だった(あるいは使いこなせなかった)結果、HTML/CSS/Javascriptを「とほほ」さんで勉強し、図書館で謎のクソ厚本を読み、十数年も経ったいまは、Web系エンジニアをやっているんだからわからないものです。意識高くいえばDot to dotってやつですか。いや、同じことに熱中したまま成長していないだけかもしれません。
実際に、作ったウェブサイトを初めてインターネット上に置いた(もちろん工事中のページがたくさん)のは15年前くらいの忍者サーバだと思いますが、逆に言えばその頃の知識の残り香+αだけでやってきた人生でした。
もちろん今ではある程度は色々組めますが、残念ながら昨今のフロントエンドは全くわかりません。なんせ仕事ですので(社内ツールをbootstrapで組んだのを除けば)デザイナーさんが組んでくださったHTMLをベースにサービスを組んでいくわけですし、今はゴリゴリのアプリケーションバックエンドを担当しております。
悔しい。
初めて組んだHTMLが、ブラウザで表示したらなぜかきれいに表示されたときの感動。
コピペで置いたJSのおかげで、マウスカーソルにシャラシャラがついた嬉しさ。
そういうものを忘れていたんじゃないか。
というわけで、なんか聞いたことあるモダンな感じのあれをやってみたい。
そんな感じでやってみました。
四苦八苦したメモ
(この章は個人用メモなので読まなくていいです)
★選定基準
なんかJSでさくっと組んだらブラウザ側でい〜〜感じにアレしてくれるアレやってみたい。そんな動機で選定し、node.jsにしよ→vue.jsにしよう→vuetify使ったろう、となった。
ホスティングはどうやらnetilifyってのが楽そう。コードはgithubに置いておけば、よしなにデプロイしてくれるし、どうせ誰も見ないウェブサイトなら無料枠で断然収まりそう。
★セットアップと構築メモ
anyenv等々インストール。
anyenv(随分前に入れてたので再インストール)
$ brew reinstall anyenv
$ anyenv init
$ echo 'eval "$(anyenv init -)"' >> ~/.bash_profile
$ exec $SHELL -l
$ anyenv install --init
blackmint:~ watahari$ brew reinstall anyenv
==> Downloading https://homebrew.bintray.com/bottles/anyenv-1.1.1.mojave.bottle.tar.gz
Already downloaded: /Users/watahari/Library/Caches/Homebrew/downloads/8bf4362e86fa71924c51fe1833bcf52d2f1ec89b67dd2aa570e65faa7ad3bf99--anyenv-1.1.1.mojave.bottle.tar.gz
==> Reinstalling anyenv
==> Pouring anyenv-1.1.1.mojave.bottle.tar.gz
🍺 /usr/local/Cellar/anyenv/1.1.1: 23 files, 29.6KB
==> `brew cleanup` has not been run in 30 days, running now...
blackmint:~ watahari$ brew cleanup
Warning: Skipping gdbm: most recent version 1.18.1_1 not installed
Warning: Skipping openssl@1.1: most recent version 1.1.1g not installed
Warning: Skipping pkg-config: most recent version 0.29.2_3 not installed
Warning: Skipping pyenv: most recent version 1.2.20 not installed
Warning: Skipping python@3.8: most recent version 3.8.5 not installed
Warning: Skipping readline: most recent version 8.0.4 not installed
Warning: Skipping sqlite: most recent version 3.32.3 not installed
Warning: Skipping xz: most recent version 5.2.5 not installed
blackmint:~ watahari$ anyenv init
# Load anyenv automatically by adding
# the following to ~/.bash_profile:
eval "$(anyenv init -)"
blackmint:~ watahari$ echo 'eval "$(anyenv init -)"' >> ~/.bash_profile
blackmint:~ watahari$ exec $SHELL -l
ANYENV_DEFINITION_ROOT(/Users/watahari/.config/anyenv/anyenv-install) doesn't exist. You can initialize it by:
> anyenv install --init
blackmint:~ watahari$ anyenv install --init
Manifest directory doesn't exist: /Users/watahari/.config/anyenv/anyenv-install
Do you want to checkout ? [y/N]: y
Cloning https://github.com/anyenv/anyenv-install.git master to /Users/watahari/.config/anyenv/anyenv-install...
Cloning into '/Users/watahari/.config/anyenv/anyenv-install'...
remote: Enumerating objects: 48, done.
remote: Total 48 (delta 0), reused 0 (delta 0), pack-reused 48
Unpacking objects: 100% (48/48), done.
Completed!
blackmint:~ watahari$ anyenv -v
anyenv 1.1.1
anyenv-update
$ mkdir -p $(anyenv root)/plugins
$ git clone https://github.com/znz/anyenv-update.git $(anyenv root)/plugins/anyenv-update
blackmint:~ watahari$ mkdir -p $(anyenv root)/plugins
blackmint:~ watahari$ git clone https://github.com/znz/anyenv-update.git $(anyenv root)/plugins/anyenv-update
Cloning into '/Users/watahari/.anyenv/plugins/anyenv-update'...
remote: Enumerating objects: 87, done.
remote: Total 87 (delta 0), reused 0 (delta 0), pack-reused 87
Unpacking objects: 100% (87/87), done.
anyenv-git
$ git clone https://github.com/znz/anyenv-update.git $(anyenv root)/plugins/anyenv-update
blackmint:~ watahari$ git clone https://github.com/znz/anyenv-update.git $(anyenv root)/plugins/anyenv-update
Cloning into '/Users/watahari/.anyenv/plugins/anyenv-update'...
remote: Enumerating objects: 87, done.
remote: Total 87 (delta 0), reused 0 (delta 0), pack-reused 87
Unpacking objects: 100% (87/87), done.
nodenv
$ anyenv install nodenv
$ exec $SHELL -l
blackmint:~ watahari$ anyenv install nodenv
/var/folders/r7/vkxr66ws5ggdlpftxtjb0tmc0000gn/T/nodenv.20200813003515.34152 ~
Cloning https://github.com/nodenv/nodenv.git master to nodenv...
Cloning into 'nodenv'...
remote: Enumerating objects: 14, done.
remote: Counting objects: 100% (14/14), done.
remote: Compressing objects: 100% (13/13), done.
remote: Total 4017 (delta 2), reused 4 (delta 1), pack-reused 4003
Receiving objects: 100% (4017/4017), 731.96 KiB | 1007.00 KiB/s, done.
Resolving deltas: 100% (2633/2633), done.
~
~/.anyenv/envs/nodenv/plugins ~
Cloning https://github.com/nodenv/node-build.git master to node-build...
Cloning into 'node-build'...
remote: Enumerating objects: 76, done.
remote: Counting objects: 100% (76/76), done.
remote: Compressing objects: 100% (50/50), done.
remote: Total 19727 (delta 31), reused 53 (delta 19), pack-reused 19651
Receiving objects: 100% (19727/19727), 3.50 MiB | 1.25 MiB/s, done.
Resolving deltas: 100% (12645/12645), done.
~
~/.anyenv/envs/nodenv/plugins ~
Cloning https://github.com/nodenv/nodenv-default-packages.git master to nodenv-default-packages...
Cloning into 'nodenv-default-packages'...
remote: Enumerating objects: 552, done.
remote: Total 552 (delta 0), reused 0 (delta 0), pack-reused 552
Receiving objects: 100% (552/552), 118.25 KiB | 298.00 KiB/s, done.
Resolving deltas: 100% (290/290), done.
~
~/.anyenv/envs/nodenv/plugins ~
Cloning https://github.com/nodenv/nodenv-vars.git master to nodenv-vars...
Cloning into 'nodenv-vars'...
remote: Enumerating objects: 211, done.
remote: Total 211 (delta 0), reused 0 (delta 0), pack-reused 211
Receiving objects: 100% (211/211), 31.82 KiB | 465.00 KiB/s, done.
Resolving deltas: 100% (76/76), done.
~
Install nodenv succeeded!
Please reload your profile (exec $SHELL -l) or open a new session.
blackmint:~ watahari$ exec $SHELL -l
blackmint:~ watahari$ nodenv -v
nodenv 1.4.0+3.631d0b6
なんかこれはやっといたほうがよさげ
$ anyenv install nodenv
$ exec $SHELL -l
nodeいれる
$ nodenv install -l
$ nodenv install 13.14.0
blackmint:~ watahari$ nodenv install 13.14.0
Downloading node-v13.14.0-darwin-x64.tar.gz...
-> https://nodejs.org/dist/v13.14.0/node-v13.14.0-darwin-x64.tar.gz
WARNING: node-v13.14.0-darwin-x64 is in LTS Maintenance mode and nearing its end of life.
It only receives *critical* security updates, *critical* bug fixes and documentation updates.
Installing node-v13.14.0-darwin-x64...
Installed node-v13.14.0-darwin-x64 to /Users/watahari/.anyenv/envs/nodenv/versions/13.14.0
Installed default packages for 13.14.0
blackmint:~ watahari$ node -vcl
v13.14.0
blackmint:~ watahari$ npm -v
6.14.4
vue.js環境設定編
この辺からは公式ドキュメント通りにやればいい。
vue cliをいれる
$ npm install -g @vue/cli
VueのApp作成。
default (ver2)を選択した。なんとなくデフォっぽいので。
それにしてもめちゃ丁寧ね。モダ〜〜ン。
blackmint:~ watahari$ npm install -g @vue/cli
npm WARN deprecated @hapi/joi@15.1.1: joi is leaving the @hapi organization and moving back to 'joi' (https://github.com/sideway/joi/issues/2411)
npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
npm WARN deprecated @hapi/bourne@1.3.2: This version has been deprecated and is no longer supported or maintained
npm WARN deprecated @hapi/topo@3.1.6: This version has been deprecated and is no longer supported or maintained
npm WARN deprecated @hapi/address@2.1.4: This version has been deprecated and is no longer supported or maintained
npm WARN deprecated @hapi/hoek@8.5.1: This version has been deprecated and is no longer supported or maintained
npm WARN deprecated har-validator@5.1.5: this library is no longer supported
npm WARN deprecated urix@0.1.0: Please see https://github.com/lydell/urix#deprecated
npm WARN deprecated resolve-url@0.2.1: https://github.com/lydell/resolve-url#deprecated
npm WARN deprecated chokidar@2.1.8: Chokidar 2 will break on node v14+. Upgrade to chokidar 3 with 15x less dependencies.
npm WARN deprecated fsevents@1.2.13: fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.
/Users/watahari/.anyenv/envs/nodenv/versions/13.14.0/bin/vue -> /Users/watahari/.anyenv/envs/nodenv/versions/13.14.0/lib/node_modules/@vue/cli/bin/vue.js
> fsevents@1.2.13 install /Users/watahari/.anyenv/envs/nodenv/versions/13.14.0/lib/node_modules/@vue/cli/node_modules/fsevents
> node install.js
SOLINK_MODULE(target) Release/.node
CXX(target) Release/obj.target/fse/fsevents.o
SOLINK_MODULE(target) Release/fse.node
> core-js@3.6.5 postinstall /Users/watahari/.anyenv/envs/nodenv/versions/13.14.0/lib/node_modules/@vue/cli/node_modules/core-js
> node -e "try{require('./postinstall')}catch(e){}"
Thank you for using core-js ( https://github.com/zloirock/core-js ) for polyfilling JavaScript standard library!
The project needs your help! Please consider supporting of core-js on Open Collective or Patreon:
> https://opencollective.com/core-js
> https://www.patreon.com/zloirock
Also, the author of core-js ( https://github.com/zloirock ) is looking for a good job -)
> @apollo/protobufjs@1.0.4 postinstall /Users/watahari/.anyenv/envs/nodenv/versions/13.14.0/lib/node_modules/@vue/cli/node_modules/@apollo/protobufjs
> node scripts/postinstall
> nodemon@1.19.4 postinstall /Users/watahari/.anyenv/envs/nodenv/versions/13.14.0/lib/node_modules/@vue/cli/node_modules/nodemon
> node bin/postinstall || exit 0
Love nodemon? You can now support the project via the open collective:
> https://opencollective.com/nodemon/donate
> ejs@2.7.4 postinstall /Users/watahari/.anyenv/envs/nodenv/versions/13.14.0/lib/node_modules/@vue/cli/node_modules/ejs
> node ./postinstall.js
Thank you for installing EJS: built with the Jake JavaScript build tool (https://jakejs.com/)
npm WARN @vue/compiler-sfc@3.0.0-rc.5 requires a peer of vue@3.0.0-rc.5 but none is installed. You must install peer dependencies yourself.
+ @vue/cli@4.5.3
added 1307 packages from 704 contributors in 113.604s
blackmint:~ watahari$ vue --version
@vue/cli 4.5.2
$ vue create wataharicom
blackmint:dev watahari$ vue create wataharicom
Vue CLI v4.5.2
┌─────────────────────────────────────────┐
│ │
│ New version available 4.5.2 → 4.5.3 │
│ │
└─────────────────────────────────────────┘
? Please pick a preset: Default ([Vue 2] babel, eslint)
Vue CLI v4.5.2
✨ Creating project in /Users/watahari/dev/wataharicom.
🗃 Initializing git repository...
⚙️ Installing CLI plugins. This might take a while...
> fsevents@1.2.13 install /Users/watahari/dev/wataharicom/node_modules/watchpack-chokidar2/node_modules/fsevents
> node install.js
SOLINK_MODULE(target) Release/.node
CXX(target) Release/obj.target/fse/fsevents.o
SOLINK_MODULE(target) Release/fse.node
> fsevents@1.2.13 install /Users/watahari/dev/wataharicom/node_modules/webpack-dev-server/node_modules/fsevents
> node install.js
SOLINK_MODULE(target) Release/.node
CXX(target) Release/obj.target/fse/fsevents.o
SOLINK_MODULE(target) Release/fse.node
> yorkie@2.0.0 install /Users/watahari/dev/wataharicom/node_modules/yorkie
> node bin/install.js
setting up Git hooks
done
> core-js@3.6.5 postinstall /Users/watahari/dev/wataharicom/node_modules/core-js
> node -e "try{require('./postinstall')}catch(e){}"
> ejs@2.7.4 postinstall /Users/watahari/dev/wataharicom/node_modules/ejs
> node ./postinstall.js
added 1247 packages from 929 contributors and audited 1247 packages in 44.498s
50 packages are looking for funding
run `npm fund` for details
found 1 high severity vulnerability
run `npm audit fix` to fix them, or `npm audit` for details
🚀 Invoking generators...
📦 Installing additional dependencies...
added 53 packages from 36 contributors and audited 1300 packages in 8.341s
54 packages are looking for funding
run `npm fund` for details
found 1 high severity vulnerability
run `npm audit fix` to fix them, or `npm audit` for details
⚓ Running completion hooks...
📄 Generating README.md...
🎉 Successfully created project wataharicom.
👉 Get started with the following commands:
vuetify導入。
$ cd wataharicom
$ vue add vuetify
blackmint:dev watahari$ cd wataharicom
blackmint:wataharicom watahari$ vue add vuetify
📦 Installing vue-cli-plugin-vuetify...
+ vue-cli-plugin-vuetify@2.0.7
added 7 packages from 9 contributors and audited 1307 packages in 9.236s
54 packages are looking for funding
run `npm fund` for details
found 1 high severity vulnerability
run `npm audit fix` to fix them, or `npm audit` for details
✔ Successfully installed plugin: vue-cli-plugin-vuetify
? Choose a preset: Default (recommended)
🚀 Invoking generator for vue-cli-plugin-vuetify...
📦 Installing additional dependencies...
added 7 packages from 5 contributors and audited 1314 packages in 11.949s
56 packages are looking for funding
run `npm fund` for details
found 1 high severity vulnerability
run `npm audit fix` to fix them, or `npm audit` for details
⚓ Running completion hooks...
✔ Successfully invoked generator for plugin: vue-cli-plugin-vuetify
vuetify Discord community: https://community.vuetifyjs.com
vuetify Github: https://github.com/vuetifyjs/vuetify
vuetify Support Vuetify: https://github.com/sponsors/johnleider
これもデフォを選択。大丈夫やろ。
なんせrecommendedやからな
で、npm run serveしてみると、
http://localhost:8080/
あらーさすがナウいわね
なるほど、ローカル立ち上げておけば、リアルタイムにいけそう
component単位で作り上げておけばいいのかな
それをApp.jsで組み立てる感じそう。
・・・そして公式ドキュメントに四苦八苦しつつ、組み上げました。
netlifyはあまりにも簡単だったのでメモを省略します。
こんな簡単にCI/CD環境が組めるようになったんだなぁ・・・(あとhttps公開も簡単だなぁ・・・すごい・・・)
まとめ
はい、どん。
Vuetifyのモジュールの使い方は個別に四苦八苦したものの、全体としてはあっけなく、それらしいものができた。一方、四苦八苦していたときに感じたのだが、結局HTML/CSS/JSの基礎知識がないと、自力で解決するときに迷走はしかねない。ありがとな、小中学生時代の俺。
最近は自宅でPCを開く頻度が随分と減ってしまった。
数年前の、仕事で死ぬほどキーボードカタカタやってるんだからもういいじゃない、みたいな気持ちのときからだと思う。それは良い「逃げ」だ。自分を守れた。仕事がしんどいときは、PCの電源を落とす勇気を持っていいのだと思う。
ただ、今回(ものすごく表層的にだが)Vue.js周り触って、楽しかった気持ちは大事にしたいと思う。偉人たちのあれこれをコピペして、だけど自分のコーディングの結果で少しづつ出来上がっていく楽しみを、ちゃんと覚えておくべきなのだ。
どうせこの個人サイトも、誰かに見てもらうために作ったものではない。ただただ自己満足で楽しく作りたい。
インターネットに公開もせず、誰に見せるわけでもなく、ただただ作るのが楽しかった頃の気持ちをちょっとだけ思い出した数日であった。
おわり。
コメント