ここ数日の開発と実況
最近の配信
最近はゲームと開発の両立を目指して私生活のほとんどが垂れ流されています。
これはこれで精神とプライベートが脆弱になってしまいそうです。
ほどほどに楽しみながら引き続き学習を続けていきたいところです。
開発の進捗と残タスク
認証機能はやはり複雑度が高く、今になっていろいろな作りの考慮できていない点が浮き彫りになってきました。
最近の状況は以下の通りです。
あ、そういえば本開発のタスク管理としてGithub Projectsを使い始めました。
個人でメモとして利用する分には非常に便利です。
進捗
- 認証を2パターン実装完了
- ツイートCRUDを認証が通った場合にのみ利用できるように修正
- ログアウトボタンのOn, Offを共通ヘッダで自動判断できるように実装
残タスク
- ログアウトボタン配置などのデザイン調整
- 全体の圧倒的リファクタリング
- ログアウトボタン表示・非表示制御方法の検討
- エラーハンドラーから表示する404ページのlangsを適切に実装
- Auth系のimplicit executionContextを良い感じにする
- ドキュメントの作成
動きとしてはそれっぽい状態にまで持っていけているのですが、細かいところで違和感のある実装になってしまっています。
MessagesApiやExecutionContextの管理ができておらず、いろいろな場所に点在している感じになっています。
またログアウトボタンの制御を行うに当たって最適な方法が何か悩んでいます。
今はimplict parameterで渡されているrequestをisInstanceOfでUserRequestかどうかを判定しています。
ただこれはかなり実装に依存しているので、できればもう少しスマートに実装したいです。
request.session.get(key)
がisDefinedであれば表示する、というように制御してもいいのですが。。。
実はシンプルで一番いいのでしょうか。ただそうするにしてもtwirlから利用するヘルパーを実装して多少隠蔽してあげた方が良いのかなとおもいます。
定数にしているkeyをわざわざ画面から呼び出すのが、いまいちな感じがしていたり...
まとめ
システムの実装者がビジネスロジックに集中できるように共通処理を隠蔽するのって難しいですよね...
実装者は普通のPlayを利用しているのと同じ感覚で使えるように上手いこと作りきりたいです。
まだまだScala力もPlayへの理解も足りなさそうです(´-ω-`)
Playの認証処理をいくつか作る part2
本日の配信
今日は肌色しかないモデル、トライセプトくんで配信をしてみました。
トライセプトくんは純粋におっさんなので、準備が楽でいいですね〜(´・_・`)
というわけで、昨日から引き続きログイン認証機能を作成してみました。
進捗と残タスク
今日は思ったよりも順調に実装が進みました。
2日前の昨日の段階で、2パターンの実装それぞれがイメージできていたことが大きかったみたいですね。
個人的には今日実装したパターンの方が何かと使いやすいのかなと思ったりしています。
ただ認証処理でslickからデータを取得しているのでFutureがうまく処理できなくてAwaitで強制的に取り出しているんですよね...
ここもうちょっとうまく処理したいですね。
あとEitherとか使ってカッコよく書きたい感じがあるのですが、なくても動いてるんでそれならなくてもいいのかなって悩んだり...
進捗
- パターン2の認証処理実装完了
残タスク
- リファクタリング
- ドキュメント作成
いったん実装ができたので、これを利用した具体的な実装に落とし込むところと、それに合わせたドキュメント作成が残っていますね。
ここからが本当の地獄だっ...!!
まとめ
PlayではActionBuilderが提供されているので、良くも悪くもこの2パターンの実装に近いものに集約されていく気がします。
いろんな人のログイン処理実装とかを見てみたいですね〜
カッコいい実装ってどんな感じなんだろう??
JWTに格納しているIDとかを可逆に暗号化したりするところまで気をつけた方がいいものなんでしょうか??
悩ましいですね。結局URLにidなどのprimary keyって入ってくるので、そこまでする必要ってあるのかなぁ...って思います。
でもyoutubeとかってurlに入ってるID的なものが素直なprimary keyのままな感じがしないんですよね。
ということは、そもそもURLにスの状態のID入れるの自体が本当は好ましくなかったりするのでしょうか??
考えだすと悩みがつきませんよね...(´-ω-`)
Playの認証処理をいくつか作る part 1
本日の配信
久しぶりに平日夜間配信をしてみました。
いやぁ、音声の設定を間違えてますね。
ほんのりと後ろで私の地声が入ってますね。 LadioCastの設定をミスしている様子です。
仕方ないですね。ほとんど聞こえないくらいなので、スルーで(´-ω-`)
あと溜息とか着くと、純度70%おっさんになってるようです。
これはびっくりします
進捗と残タスク
今日はシンプルな認証機能を作成しました。
本当はUserRequestみたいなものを作って、認証が通った段階でUser情報を取得できるようにしたかったのですが、DBIOをどこにおくのかなどに悩んだの今回は別のアプローチ。
PlayのSessionはJWTになっているので、データ改竄を行うとsessionからデータが取得できなくなるようになっています。
なので、セッションのIDが正しく取れてくれば正規に発行されたセッションとして認証OKにしちゃう形で実装しました。
これはこれでいいんじゃないかなぁって思うのですが、どうでしょうかね?(´-ω-`)
細かいことを考えると、JWTをこちら側から廃止するような手段やJWTの鍵を定期的にupdateするような仕組みを実装した方がいいのでしょうけれど、そこまで対応していられないです...
※ するスキルがないとも言う
とはいえ、次回は認証時にUser情報をDBから持ってこれるようなパターンを実装してみようと思っています。
実装方針とイメージはあるので、数日でできると思います。
進捗
- ControllerDIを利用した認証ActionBuilderの実装
- 認証処理の動作検証とサンプル
残タスク
- 別パターンの認証実装
まとめ
理想型というのがどういう形なのかイメージがつかないので、いくつかパターンを実装してみて、様子見ですね。
認証系は実装が難しいというか、こだわることができるポイントが多いので、なかなか辛いところです。
個人で検証している分にはいろいろなやり方があって楽しいんですけどね。
あとはAtCoderの問題をちょっと解いたら、また明日ですね
6月のまとめ
最近の活動
6月も終わりました〜
早いもので、今年度の1/4が終わってしまいました
今年立てた目標に対して、みなさんいかがですか?
私は...
最近は非常にチョコチョコとAtCoderの練習をしていました。
平日に時間を取りづらくなってきている印象があるのですが、気のせいだと思います。
モチベーションが少し落ちてきているだけですね。
最近再びやる気が戻ってきたので、ここからです。
昔と大きく違うのはやる気がない時でも少しは学習をするようになってることでしょうか。
その結果、なかなか草が生えるようになりました。
ちょっとチート感はありますが、癖付をすることは一定の価値があるかなと思います。
配信
本日試しに配信を行ってみました!
BGMにさえ気をつければ、問題なく配信ができそうでした。
BGMはフリーサイトのものを利用しても、規約違反で落とされてしまったので、何か良い物を見つけるまでは苦しみそうです...
久しぶりのクリスティーナちゃんボイスですね。
むちゃくちゃ機械音ですね...
また、エアコンの風がマイクを直撃するためノイズキャンセラーを強めにかけている影響で、もそもそ喋ってる時の声が全然聞き取れなぁい!!
あとinput textで私の本名をサジェストするの勘弁していただきたい...
学習
ほとんどがAtCoderの過去問を解くことになっています。
最初はA, Bを高速で解く練習をしていましたが、最近はC, D問題をコツコツと解いています。
この2つを安定して回答できるようになると緑が見えてきそうですね。
全然見えてこないですね
読書が相変わらず苦手で全然すすみません。
読書嫌いです。
でも頑張ります。
まとめ
7月からはまた忙しくなりそうなのですが、技術力が大切になっていきそうなので、真剣に技術に向き合うことができたら嬉しいなぁと思っています。
競技プログラミングとqiita
最近の活動
競技プログラミングを初めて、コツコツと問題を解いています。
2回ほどコンテストに参加しましたが、やはりまだまだ道のりは遠いです
レーティングですが、C,D問題を解くのも大切ですが、回答までのスピードと正答率も重要みたいですね
まだまだ高速で処理を書き終えるようなことはできていないので、スピードも意識していきたいところです
ただ競技プログラマーになるわけでもないので、落ち着いて考えて難しい問題が解ければ、それでいいかなと思っています
レートはあくまで目安で、頑張っていきたいです
またGithub Actionsを利用しているので、そのことに関するqiita記事を書いてみました
これはあまり人の助けにならなそうですが、記事数が少なくて寂しいので...
配信
6月から再開したいと思ったまま、できていないですね
実はちょっとずつ準備は進めています
といっても、パソコンの中にあるプライベートなファイルをクラウドに移したり、映り込んでしまわないように整理したりの作業なんですけどね
まとめ
6月、早くも半分過ぎてしまいました
低すぎる技術力と人間性をちょっとずつ高めていきたいですね(๑╹ω╹๑ )
ここ1ヶ月のまとめ
最近の活動
最近なかなかブログを書けていないことに引け目をかじている私ことクリスティーナちゃんです。
4末から5月中旬まではコロナの影響で私生活が激変
公私共に非常に負荷がかかっていたので、余暇の時間がほとんどなく何もできない状態でした
とはいえ、何もしていない1ヶ月だったというわけでもないので、この記事にまとめてみます!
この1ヶ月行っていたこと
技術的にはPythonに触れたところが、新しいポイントでしょうか。
こちらは完全に個人的な目的からの学習です。
あのコロナの影響でNintendo Switchが全然購入できないじゃないですか?
なので一部のサイトをチェックして定価販売を通知するようなプログラムを実装してみました。
シンプルに作れば良いのに無駄にスクレイピング用のライブラリを利用したものだからlambdaにデプロイするのに非常に苦労してしまいました...
lambdaを利用するにあたって、遥か昔に作ったawsアカウントを久しぶりに利用したりもしましたよ
他では個人的に非常に苦手意識の強い競技プログラミング学習の再開です。
シンプルに「アルゴリズム」が苦手です
女声については目立った進捗はないのですが、ちょっとずつ練習しています
なんでしょうね。先が遠いですね、端的に言うと。やっぱりどうしても男がぶりっこしてる臭いが...
女声の練習をしていれる、おぞましい音声はこちら
ちなみに女声の練習は3月から週1-2回ずつ練習をしています。
毎日やれるほど精神とテンションを振り切れていないことと、現状未熟なのでやりすぎると喉を痛めそうで怖いからです
今のところそんなに喉に負担はかかってないのですが、やっぱり怖いので...
知人からは完全に習得したら、まとめ記事を書いて欲しいと言われています
習得したら書いてもいいのですが、いつになるやらですよ
配信について
コロナの期間はgoogleの動画削除AIが過激な動きを見せており、クリスティーナでもトライセプスでも肌色が多すぎて削除されると言う状態でした。
そのため配信を停止していたのですが、そろそろ再開できるのではないかと思っています。
生活の一部となっていた昔と違うので、毎日はできないと思いますが少しずつ再開していければと思っています。
まとめ
技術者として成長に繋がる活動ができてないという自覚は明確にあるので、そこをどう埋めていくのか考えていく必要がありますね
AngularElementsをセットアップ
今回の成果物
今回は純度100%自分の趣味でPlayFramework環境にAngularElementsを導入する設定を作成しました。
AngularElements on PlayFramework
今回はほぼほぼ環境構築手順なので、淡々と設定するような形になってしまいましたね。
そもそもScalaとか全く関係ないので、2.5という中途半端なバージョンを設定しています。
本当はモーダルなど一部をAngularで実装しようとしたのですが、今後のコンテンツに影響を与えるおまけだとよくないので動く最小限の状態で作成しています。
今後見えている課題
Angularのrouterを利用しないようにしているのですが、例えば検索処理用のComponentを作成するとカスタムエレメントないでページングっぽいことをしたくなると思います。
他にもtwirl側のトリガーにモーダル立ち上げなどしたいこともあるでしょう。
今回のサンプルではそこまでケアできていないので、余力があったらその辺りを拡充していきたいと思います。
終わりに
ここのところ何かと忙しく技術に触れる余裕がなかったので、このGWを起点に改めて勉強のリズムを作っていきたいですね
Angular, Scalaと中途半端になっているのでいろいろと一段落したら、私自身も一皮剥けるために腰を落ち着けたいです!