alt image ゲスト
@guest





alt image
ギニー
@guinea


yalkey(ヤルキー)の開発メンバーのギニーです。東大→東大院。IT系のアルバイトにて3年程実務経験あり。これからyalkeyに便利機能をたくさん追加していきたいと思いますので、要望などあれば気軽にお問い合わせください!

フォロー 2 フォロワー 165



alt image
ギニー
gptに勧められて付けたオプションが悪さをしていることにやっと気づいた。
鵜呑み、ダメゼッタイ。
・アプリ開発:3時間30分(2024年7月26日)
3


alt image
ギニー
いかにアプリのコアをシンプルに保ったまま機能を追加するか、という部分にアプリ製作者のセンスが問われますね。
・アプリ開発:4時間0分(2024年7月23日)
4


alt image
ギニー
アダプターは新しい適当なクラスに、既存のインターフェースを適用するための接続クラスで、
ファサードは複雑な内部処理をうまくまとめた統合インターフェース。

両方理解して分かったことは、今回の要件ではどちらも必要ないということです。
ただ、他のところでは活かせそう。
・アプリ開発:4時間0分(2024年7月22日)
6


alt image
ギニー
昨日の分
・アプリ開発:4時間0分(2024年7月13日)
4


alt image
ギニー
アーキテクチャや原則、デザインパターン、同期・非同期の扱いなど、言語にとらわれない普遍的な知識を身に着けることが肝心だと思うようになりました。
本質をとらえられるようになりたいですね。
・アプリ開発:9時間0分(2024年7月11日)
7


alt image
ギニー
昨日の分
・アプリ開発:6時間0分(2024年7月10日)
2


alt image
ギニー
dartもだいぶ慣れてきました。
・アプリ開発:3時間30分(2024年7月9日)
6


alt image
ギニー
やはりモデルにビジネスロジックを埋め込んでれば、ごちゃごちゃした処理を書いてもロジックが破綻しない安心感が大きいですね。
・アプリ開発:3時間30分(2024年7月8日)
4


alt image
ギニー
やっぱりマウスって大事
・アプリ開発:5時間0分(2024年7月7日)
3


alt image
ギニー
これは昨日の分。
バグが起きて初めてテストを作りたくなる...。
テスト駆動開発の重要性が理解できた気がします。
・アプリ開発:2時間0分(2024年7月5日)
4


alt image
ギニー
結局開発も、ソースコードのレベルから原理原則を理解して使うのが一番早い気がしてきました。
・アプリ開発:4時間0分(2024年7月4日)
3


alt image
ギニー
そろそろGPT使うより効率よくなってくる頃合い。
GPTコーディングは数秒で95%が終わるけど、残りの5%に半日かかったりするのが課題ですね。
・アプリ開発:2時間30分(2024年7月3日)
5


alt image
ギニー
whileの扱いには注意
エラーが出てこずに無限ループする可能性あり
・アプリ開発:4時間30分(2024年7月2日)
4


alt image
ギニー
トランザクションのネスト構造という盛大な初心者ムーブをかましてました
・アプリ開発:4時間0分(2024年7月1日)
3


alt image
ギニー
状態管理って意外とめんどくさい...。
プッシュ型よりプル型の方がシンプルでいいが、描画コストなどの問題もある...。
・アプリ開発:6時間0分(2024年6月26日)
5


alt image
ギニー
メモ
RiverpodのstateNotifierでstateをインスタンスにした時、
インスタンスの値の変更を各々検知して、限定した再レンダリングしてくれる(GPTはそう答えたが...)と思いきや
各々のウィジェットをConsumerでラップする必要があることが判明。
原理を考えれば当たり前でした。

Riverpodの優位性はグローバルな状態管理。
https://scrapbox.io/osamtimizer/Flutter%E3%81%A7Provider%E3%81%8B%E3%82%89Riverpod%E3%81%AB%E4%B9%97%E3%82%8A%E6%8F%9B%E3%81%88%E3%82%8B%E3%81%B9%E3%81%8D%E3%81%AA%E3%81%AE%E3%81%8B
・アプリ開発:6時間15分(2024年6月26日)
3


alt image
ギニー
Notifierに苦戦。変更のタイミングと再レンダリングの範囲を押さえることが大事。
かなり理解は進んだ。
ここが完全に理解できればフロントエンドは怖いものなし!
・アプリ開発:5時間30分(2024年6月24日)
3


alt image
ギニー
dartだいぶ慣れてきました。
・アプリ開発:6時間30分(2024年6月23日)
1


alt image
ギニー
皆さんの投稿を見てるとやる気が出ます!

まだまだアイディアに開発スピードが追い付いていないので、、、
開発力を上げて、たくさんの便利アプリをリリースしていきたい...
・アプリ開発:6時間0分(2024年6月22日)
6


alt image
ギニー
出張の道中で見た動画紹介+α。
DDDはコンテキストが大事という話。

「乗り物」のふるまいについて考える。

「商品の配送システム」を設計するとしよう。

関心事としては、目的地や配送内容、スケジュール通りか、といったことなので、
「乗り物」には目的地という変数が与えられるかもしれないし、
スケジュール通りかをtrue / falseで返すメソッドを定義するかもしれない。

一方で「運転手の雇用システム」となると話は変わってくる。

その乗り物を運転するのに必要な免許は何かとか、保険に入っているかとか、
コンプライアンス的なところに焦点を当てて設計することになる。

他にも「遊園地のアトラクション」とか「中古車販売」など、
様々な文脈で「乗り物」は出てくるが、それぞれ関心事は全く異なる。

関心事の境界線をきちんと定義して、「乗り物」にどのようなメソッドを持たせればいいかを考えることが重要。
(少なくとも「配送システム」で、乗り物に必要な免許種は必要な情報ではない。)

https://www.youtube.com/watch?v=8XmXhXH_q90
・アプリ開発:0時間30分(2024年6月20日)
5


alt image
ギニー
昔買って読んでなかった技術書が実は結構大事なこと書いてあったりするものですね。
売らなくてよかった。
・アプリ開発:1時間30分(2024年6月19日)
5


alt image
ギニー
依存性の注入を自分なりに分かりやすくかみ砕いてみた。


A「まり男がくり坊を踏む」というふるまいを設計したいときに
① 「主人公が敵を倒す」という抽象的な処理
② 「主人公=まり男、敵=くり坊、倒す=主人公が敵を踏む」という①の具体的な設定
という二つの処理を切り分けることを考える。

ここで、②のような具体的な設定のことを「依存性」や「実装」などと呼び、①に対して②の設定を行うことを「依存性の注入」と呼ぶ。
(抽象的なロジック①に具体的な実装②が注入されて、システムに血が巡っていくイメージ)

そうすることで、まり男→るい次、くり坊→のこ鋸、踏む→ヒップドロップに代わっても②を設定しなおすだけでいい。つまり変更に強い


システム設計ではまり男とかるい次とかがPostgreSQLとかMySQLになったり、はたまた外部APIになったりするという話。

また、わざわざDBやAPIを用意しなくてもそれを簡易的に真似た(モックした)設定を用意して注入すれば、①のみ切り出してテストすることができる。

他にも、関心事が分かれているのでコードの責務も明確になり、どこに何が書いてあるかが分かりやすい→保守がしやすいなどなど、、、
たくさんのメリットがある。

ちなみに、Aをどのようにかみ砕いて設計するかを極めようとすると、DDDの思想に行きつく気がする。
・アプリ開発:3時間30分(2024年6月18日)
8


alt image
ギニー
テスト駆動開発という言葉があるくらいテストは重要!
なるべくたくさんのケースを追加するために共通化処理は別で書くのが吉。
・アプリ開発:3時間30分(2024年6月17日)
2


alt image
ギニー
DDDのポイント(自分なりの理解)
「WhatとHowの分離」
→高凝集・低結合(責務の切り分け)
→影響範囲わかりやすい・変更に強い・テスト書きやすい
→嬉しい
・アプリ開発:2時間0分(2024年6月16日)
5


alt image
ギニー
何気なくコピペしてた謎の実装が実はシングルトンパターンだと知る。
メモ
・sqfliteのDBHelperはアプリ全体で同じものを使いたいのでシングルトンが有効
・初めてアクセスしたときのみ実行する遅延初期化
・FlutterはシングルのUIスレッドを使うので、同期化や先行インスタンス作成などのオーバーヘッドなマルチスレッド対策は必要ない
https://gist.github.com/ankesh-kumar/698819e25534c79ab91fa2604912e24c
・アプリ開発:2時間0分(2024年6月15日)
5


alt image
ギニー
データの整合性を保つためのトランザクションでもドメインサービスに記述することは許されない...?
ひとまずベストプラクティスにのっとりアプリケーションサービス層に書くのがよさそう。
https://zenn.dev/link/comments/2a32ddd58f0d09
・アプリ開発:4時間0分(2024年6月13日)
3


[萩原 彰 さんに対する返信]

alt image
ギニー
理二に変更するのは逃げではなく、現実的で前向きな選択だと思います!
獣医学方面の進路もお考えなのでしたら全く問題ないと思います。

とはいっても理科二類も十分難しいと思うので、ぜひぜひyalkeyを保って頑張ってください!!
4


alt image
ギニー
テスト
・アプリ開発:5時間0分(2024年4月20日)
2


[𝙿𝚞𝚛𝚙𝚕𝚎 さんに対する返信]

alt image
ギニー
教科書になかなかのってない論理の話も系統的に解説している参考書として長岡先生の「総合的研究」をご紹介します。
私は高1, 2の頃は総合的研究と検定教科書を読み漁っていました。ご参考までに!

https://amzn.asia/d/iBHWqUt
6


[𝙿𝚞𝚛𝚙𝚕𝚎 さんに対する返信]

alt image
ギニー
確かに、宿題の写真を投稿して「解いてください」とかだと微妙かもですが、これくらいなら良いと思いますよ!(このアプリのルールも完全には定まってないので)
むしろ今のうちに聞いておいた方がいいかも??

もし心配なら、①自分はどういう風に考えたか②解法のどこが理解できないのかなどを書くと、間違いないと思います。

さて、今回の問題について、解法だけであれば式変形だけお教えできるかもしれませんが、丁度よいので以前お伝えした「高校数学は論理が重要」ということの実例として説明しましょう。

今回の問題のキーワードは「同値変形」です。同値変形とは簡単に言うと、式の意味は同じ状態で変形していくという風に考えればよいでしょう。
厳密にいうと、AとBが同値である(省略してA⇔Bとも表記します)とは、AならばB(A⇒B)かつBならばA(B⇒A)が成り立つという意味になります。これはとても重要です。

なじみないかもしれませんが、中学まで解いてきた等式とか不等式の「解」というのは高校的に言うとxについて最も簡単な形に同値変形したものです。

等式の性質として、両辺は同じ数を足しても、引いても、掛けても、(0以外の数で)割っても同値です。(不等式は掛け算・割り算で不等号の向きが変わります)
それを使って、例えば一次式7x+5=19を解けという問題が出たとき、、、

7x+5=19
⇔7x+5-5=19-5 (∵両辺に同じ数5を引いても同値)
⇔7x=14
⇔7x/7=14/7 (∵ 両辺に同じ数7を引いても同値)
⇔x=2 (一番簡単な形の同値式!!)

(∵は「なぜならば」という意味です)

再度言いますが、中学まで感覚的にやっていた「xについて解く」という行為は、高校数学では「一番簡単な同値式に変形する」という意味になります。
この考え方はかなり難しいと思います。一か月くらいかけてじんわり理解できるようなものかもしれません。ただ、これが理解できれば高校数学では怖いものなしになれます。


さて、今回の不等式について同値変形していきます。同値変形のコツはxについてまとめることです。
ax≦-2x+3≦bx+2・・・(与式)
⇔ax≦-2x+3 かつ -2x+3≦bx+2
⇔(a+2)x≦3 かつ 1≦(b+2)x(∵それぞれ両辺に2xを足す)
⇔x≦3/(a+2)かつ1/(b+2)≦x (∵a, bは正の値⇒a+2>0, b+2>0であるため両辺割っても不統合の向きは変わらない)
⇔1/(b+2)≦x≦3/(a+2) ・・・①

各所の同値変形(A⇔B)で分からないところがあれば、AならばBかつBならばAであるかを確認してみてください。

①が1/10≦x≦1/5と同値である、すなわち同じ式となるので、

1/(b+2)=1/10かつ3/(a+2)=1/5
⇔b=8かつa=13

となります。


正直必要以上のことを教えていますが、高校数学では式変形一つでも論理的に説明されるということを認識してもらえれば今回は大丈夫です。
あわせて、教科書の必要条件、十分条件といった項を参照すると理解の手助けになると思います。
3



© yalkey