開発の基本的な部分に役立ちそうな情報。
開発を開始するにあたって、外部のAPIやDB等を利用する場合、使用時にトークンやAPIキー、パスワード等を使用することがほとんどである。 これらをそのままどこかの開発中のファイルに記載して残すと、GitHub等で公開した際に、そのまま内容が流出してしまう。 実はこれ、結構やばい案件で、十分に注意しなければならない。OAuthのトークンなんか流出した暁には不正アクセスされ放題になる。非公開リポジトリでも盗まれた事があるらしいので注意。
ならばどうやって対策するのか。
基本的には、.env
という環境変数用のファイルを作って、そこにトークンやAPIキーなどを保管。gitからはignoreを指定して共有されないようにしっかり設定しておく。
そして開発メンバーには別途、パスワードやトークン等を配布する。
利用する際は、.env
を読み込み、変数のように扱う事で漏洩を防止する。
余談というか注意喚起になるが、gitにはコミットを戻す機能が備わっている。その為、一度トークン等をそのままコミットしてしまった場合、後からignoreに設定したりコマンドで消したりしても、復元できてしまう
場合がある。
実際にCTFにて過去のgitのログからflagを取得する内容の問題が存在した。正しい消し方はGitについての十分な理解が必要になってくるため、十分気を付けて欲しい。公開するのは公開鍵だけにしよう。
開発をするにあたって、ソフトウェアの設計をしなければならない。設計次第でコードの管理が後々楽になり、開発の状況も分かりやすくなる。 アーキテクチャなんて言葉を使ってはいるが、要はソフトウェア設計の事である。フォルダ構成なんかはここら辺の設計次第で決まる場合が多い。
ただ、ビジネス的な面と技術的な面を考慮して設計することが多く、知識がないとぶっちゃけいまいち分からない事が多い。 本当はBLoCやFluxt、Reduxとかのモダンなアーキテクチャを紹介したいところだが、残念ながら私もまだ理解しきっていない。 よって古くより利用されてきたMVCと比較的新しく色んな所で使われるMVVMについて解説する。というか基本的にこの2つを拡張してったものが今のアーキテクチャでもあるのでとりあえずこれ覚えとけば何とかなる(多分)。
そもそもMVCとは何か? MVCはModel,View,Controllerという3つの単語の頭文字をとってきたものである。どこかで聞いた事があるかもしれないが、一応解説しておく。
- Git
- GitHub
- レスポンシブ設計
- Row
- Column
開発の時にどういったフォルダ構成にするべきか考える。 後々のメンテナンスの時に何処に何をしまったのかしっかり管理出来て楽になる。
ぶっちゃけケースバイケースなので色んなリポジトリを見て勉強しておくのが一番。
Webアプリ開発の時に役立ちそうな情報を集めた物。内容はWebアプリ(Node.js)に特化している。
筆者はNodeでの開発経験のみなので、別言語に関してはよく知らない
開発において使用する言語は様々である。しかし、一つの言語でもバージョンの違いによって推奨、非推奨、動く、動かないが変わってくる。「NodeをPCにインストールした数か月後に新しいNodeのバージョンがリリースされてインストールし直す」「こっちのプロジェクトだと最新のNode使えるのにこっちのプロジェクトだとなんか3年前の環境使わせられてる」なんてことが無い訳じゃない。
そこで使われるのがnvm
やasdf
等になるのだが、ここで問題が発生する。
純粋なnvm
やasdf
はWindowsでは使えない注1のである。
Webアプリ開発でみんなMacを使ってるのはここら辺の恩恵が大きいからかもしれない。なお筆者は持ってないので詳しくは知らない。
そこでWindowsで使えるバージョン管理ツールを選ばなければならない。Windowsでしか動かないもの、WindowsでもMacOSでも動くクロスプラットフォームなもの等、様々な種類が存在している。
筆者が使っているのはnvm-windows
。nvmのWindows版といったところ。
nodistは開発が止まっているので使わない事を推奨
選び方の参考になる記事は以下の通り。
Node.jsのバージョン管理ツールを改めて選定する【2021年】
バージョン管理ツールについて参考になる記事は以下の通り。
Node.jsのバージョン管理ツールとは
開発において、ほとんどの場合は外部のパッケージやライブラリに頼る事になる。 ReactやVue等のUI関係のライブラリやフレームワークを利用する時も、それらの環境をインストールしなけらばならない。パッケージの管理は、開発環境の整理やチーム開発において同じ環境を用意する時に楽になるのでやっておいた方がいい。というかほぼ必須。
実はパッケージ管理ツールにも様々な種類があり、OSやプログラミング言語単位で様々なツールがある。
- Debian系
- deb
- apt
- Red Hat系
- rpm
- yum
- DNF
- apt-rpm
- Windows
- PackageManageme
- Mac
- MacPort
- Homebrew
-
JavaScript(Node.js)
- npm
- yarn
-
Ruby
- gem
-
Composer
- PHP
-
Python
- pip
-
.Net Framework
- NuGet
- ログイン処理の概要
- session
- Cookie
- Token
- OAuth
- CSRF
aside{AAAA}
aaaaa
aaa
- [注1] 実はWSLを使ってWindowsにLinux環境を作り、そこでnvmやasdfを動かす事もできるので実質Windowsで動く。純粋なnvmの方が情報が多くメンテナンスもされているし、asdfはNode.js以外の環境も管理出来るのでそっちの方が便利