あらすじ
IT業界未経験のおじさんが9月からJavaを学んで最近アプリを作り始めました。
現在の状況
思った以上にアプリ製作楽しめています。
記事を書くより製作に時間を使いたいと思う程に。
現在の完成度は、最低限の機能の実装は完了したという状況です。
ログイン画面
メイン画面
苦労した点
大きな問題はなく小さな疑問を潰して行くといつの間にかメイン画面が完成したので、
少し色気づいてログイン画面を作ろうとしたが故にパスワードの取り扱いという難しい問題に直面しました。
暗号化とハッシュ化の違いすら知らないセキュリティ音痴だったので、
パスワードの取り扱いの基本の記事をいくつか読むことにしました。
浅瀬で撤退の判断
セキュリティの記事を深掘りすると永遠に抜け出せないと早々に撤退。
とりあえず自分に必要な情報だけを抜き取ることにしました。
その結果私が選んだ管理方法は、
- アルゴリズムはSHA-256
- パスワードにランダムなsaltを追加
- ストレッチング1000回以上のハッシュ化
ただ、この辺は調べ方が甘かったようで、計算負荷が低いのでセキュリティ面では危うい模様。
PBKDF2かGradleを入れてArgon2idなどに変更をする必要がありそうです。要調査。
MySQLのWorkbench上でsaltが文字化け。
想定したコードは完成したものの、varbinaryで保存したsaltが文字化け。
コマンドラインでは問題なく表示されるものの少しモヤっとする感覚。
設定の変更やいくつかのコマンドを試しても治らなかったので、
ひとまずJavaでStringに変換してvarcharで保存することで解決としました。
恥ずかしながらこれに関しては半日ほど検索しても直せず、
「varbinaryで保存することとvarcharで保存することに違いはないだろう」と自分に言い聞かせたとも言えます。
つまり最も苦労した点はセキュリティではなく文字コードでした。
文字コード憎し。
今後の課題
ユーザーごとに進捗を管理できるようにDBの作り直し
雰囲気でログイン画面を作ったことにより生まれてしまった作業。
ER図などの知識も入れてみるきっかけになったので結果的にプラスでした。
メイン画面のコードを分割
メイン画面のJFrame関連を一つのクラスにまとめた結果コードが400行を超えたので分けたい。
ButtonやLabelでクラスを分ける予定ではあるものの、
GridBagLayoutの挙動次第では混乱する可能性を秘めているのが怖い所。
とりあえずこの2つが今後の大きなタスクになりそうです。
アプリ初製作の感想
まだ完成したとは言えないので時期尚早ですが、もう少しボコボコにされて苦しむかなと思っていました。
もちろん先人の方々が足跡を残してくれていたお陰で製作できたというのが9割以上でしたが。
それでも3週間で形にはできたので、自分に甘い私にとっては十分満足できるものとなりました。
次はWEBアプリを作りたいと思っているので、必要な知識が増え今回のように簡単に行くとは思えませんがそれもまた楽しめたらなと思います。
次の記事を書く時に何を製作中であるかはわかりませんが、またお付き合いいただければ幸いです。
駄文失礼いたしました。