makotanのブログ 2023-04-04T18:30:00+09:00 makotan Hatena::Blog hatenablog://blog/10257846132617838119 ChatGPTとかの西野七瀬テスト hatenablog://entry/4207112889977927159 2023-04-04T18:30:00+09:00 2023-04-04T18:30:00+09:00 ChatGPTとか(BingAIとか)の特性として 大量の文章を記憶させてそこから文字列を紡ぎ出してるって言われてもよくイメージ出来なかったので...西野七瀬テストをやってた 西野七瀬テストとは 「西野七瀬について教えて」ってChatGPTに依頼した結果 本当の西野七瀬との差がどのくらいあるのかでChatGPTがどのくらい嘘をつくかを判断するためのテスト GPT-3.5の場合は 元AKBとか、愛知県出身とかメチャクチャなことを言ってくるので、ある程度のグルーピングされた範囲内からそれっぽい文字列を紡ぎ出してる感が半端ない GPT-4になると...めっちゃ合ってる!! ということで、西野七瀬がセ… <p>ChatGPTとか(BingAIとか)の特性として</p> <p>大量の文章を記憶させてそこから文字列を紡ぎ出してるって言われてもよくイメージ出来なかったので...<a class="keyword" href="http://d.hatena.ne.jp/keyword/%C0%BE%CC%EE%BC%B7%C0%A5">西野七瀬</a>テストをやってた</p> <p> </p> <p><a class="keyword" href="http://d.hatena.ne.jp/keyword/%C0%BE%CC%EE%BC%B7%C0%A5">西野七瀬</a>テストとは</p> <p>「<a class="keyword" href="http://d.hatena.ne.jp/keyword/%C0%BE%CC%EE%BC%B7%C0%A5">西野七瀬</a>について教えて」ってChatGPTに依頼した結果</p> <p>本当の<a class="keyword" href="http://d.hatena.ne.jp/keyword/%C0%BE%CC%EE%BC%B7%C0%A5">西野七瀬</a>との差がどのくらいあるのかでChatGPTがどのくらい嘘をつくかを判断するためのテスト</p> <p> </p> <p>GPT-3.5の場合は</p> <p>元AKBとか、愛知県出身とかメチャクチャなことを言ってくるので、ある程度のグルーピングされた範囲内からそれっぽい文字列を紡ぎ出してる感が半端ない</p> <p> </p> <p>GPT-4になると...めっちゃ合ってる!!</p> <p>ということで、<a class="keyword" href="http://d.hatena.ne.jp/keyword/%C0%BE%CC%EE%BC%B7%C0%A5">西野七瀬</a>がセンターの曲とか、<a class="keyword" href="http://d.hatena.ne.jp/keyword/%C0%BE%CC%EE%BC%B7%C0%A5">西野七瀬</a>が出演したドラマとか深掘りしていくと...それっぽく紡ぎ出してるな...って感じになる</p> <p>グルーピングの解像度が激しく向上した感じがよくわかる</p> <p> </p> <p>BingAIに至ってはほぼ完璧(というか普通にソースも提供してくれるし)</p> <p>なんだけど、あ〜ここは間違えてるなぁ〜みたいな感じになる</p> <p>紡ぎ出すと言うよりも、検索してその結果をまとめてる感じ</p> <p> </p> <p>という一見すると同じに見えるChatたちの動きの差を把握する為のテスト方法</p> <p> </p> <p><a class="keyword" href="http://d.hatena.ne.jp/keyword/%C0%BE%CC%EE%BC%B7%C0%A5">西野七瀬</a>みたいにだいぶ前から情報がそれなりに大量にあり</p> <p><a class="keyword" href="http://d.hatena.ne.jp/keyword/%C0%BE%CC%EE%BC%B7%C0%A5">西野七瀬</a>みたいに検索する人がそれなりに詳しく知ってる物</p> <p>を利用するのがポイントなので、<a class="keyword" href="http://d.hatena.ne.jp/keyword/%C0%BE%CC%EE%BC%B7%C0%A5">西野七瀬</a>以外でも利用可能なテスト方法</p> <p> </p> <p> </p> <p><a class="keyword" href="http://d.hatena.ne.jp/keyword/%C0%BE%CC%EE%BC%B7%C0%A5">西野七瀬</a>テストをすれば良いのにって言ってもなかなか伝わらない(当然)ので公開w</p> makotan ChatGPTの今の限界とかのただのメモ hatenablog://entry/4207112889976918706 2023-04-01T16:53:48+09:00 2023-04-01T16:53:48+09:00 ChatGPTを色々と使いまくった結果のイメージ ネットから検索して正確な情報が欲しい場合はBingが役に立つ 学習の成長曲線の最初に居るときは、学習の助けになる 学習の成長曲線の終盤に居るときは、答え合わせが出来る(=自分がやらなくても出来る) 実務として始めた頃は、実務の助けになる(=自分がやらなくても...) 実務として慣れた頃は、実務の支援をしてもらえる(=自分がやらなくても...) 大量のコンテキストを前提として何かする場合は、役に立たない 世界でもレアな全く新しいことをやりたい時には、役に立たない ポイントは、非常にレアなことをしない限りは常に役に立つ 役に立つ場面は大体こんな感じ… <p>ChatGPTを色々と使いまくった結果のイメージ</p> <p>ネットから検索して正確な情報が欲しい場合はBingが役に立つ</p> <p>学習の成長曲線の最初に居るときは、学習の助けになる</p> <p>学習の成長曲線の終盤に居るときは、答え合わせが出来る(=自分がやらなくても出来る)</p> <p>実務として始めた頃は、実務の助けになる(=自分がやらなくても...)</p> <p>実務として慣れた頃は、実務の支援をしてもらえる(=自分がやらなくても...)</p> <p>大量のコンテキストを前提として何かする場合は、役に立たない</p> <p>世界でもレアな全く新しいことをやりたい時には、役に立たない</p> <p> </p> <p> </p> <p>ポイントは、非常にレアなことをしない限りは常に役に立つ</p> <p>役に立つ場面は大体こんな感じ</p> <p>- たたき台を作る</p> <p>- 整形する</p> <p>- まとめる</p> <p><span style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif;">ありがちなパターンを作るだけで良ければほぼChatGPTに任せた方が...ってなる</span></p> <p> </p> <p> </p> <p>インターネットに情報として存在しない様なレアなものをやるってなった時点で初めて「役に立たない」ってなる</p> <p>ただし、インターネットに情報として存在しない事と、存在してないことを知ってる事は全く別なので、確信がない限りまずは使ってみてそのレベルを把握してみる感じから始めると良さそう</p> <p>ただ、大量のコンテキストを前提とする場合はその大量のコンテキストを前提を取り込ませたらそれなりに出来るのでは??って思ってるので今後に期待してる</p> <p> </p> makotan AIを活用することになったとして... hatenablog://entry/4207112889972432589 2023-03-18T08:51:36+09:00 2023-03-18T08:51:36+09:00 たとえばソフトウェアの開発をするとしたら、最低限でもプログラム言語を覚えて、IDEを覚えて、フレームワークの使い方を覚えて、ビルド周りを覚えて...って覚えることが沢山 そして覚えただけでは使えないので、それを使うところを覚える ここまでやってやっと、最低限の事が出来るという状態 ここに、設計やらアーキテクチャやら要件定義やらデータモデルやら色々を覚えていって、ようやく一人前になったとして これまで殆どの人は「最低限のことが出来る状態」を経由して「一人前」が成立してた(それなりの人数の例外がいるので、そこはちょっと置いておく ここからはAIが最低限のことをやってくれるので、その先が重要になる気… <p>たとえばソフトウェアの開発をするとしたら、最低限でもプログラム言語を覚えて、<a class="keyword" href="http://d.hatena.ne.jp/keyword/IDE">IDE</a>を覚えて、<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D5%A5%EC%A1%BC%A5%E0%A5%EF%A1%BC%A5%AF">フレームワーク</a>の使い方を覚えて、ビルド周りを覚えて...って覚えることが沢山</p> <p>そして覚えただけでは使えないので、それを使うところを覚える</p> <p>ここまでやってやっと、最低限の事が出来るという状態</p> <p>ここに、設計やら<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A2%A1%BC%A5%AD%A5%C6%A5%AF%A5%C1%A5%E3">アーキテクチャ</a>やら要件定義やらデータモデルやら色々を覚えていって、ようやく一人前になったとして</p> <p>これまで殆どの人は「最低限のことが出来る状態」を経由して「一人前」が成立してた(それなりの人数の例外がいるので、そ<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A4%B3%A4%CF%A4%C1">こはち</a>ょっと置いておく</p> <p>ここからはAIが最低限のことをやってくれるので、その先が重要になる気がする</p> <p>そうすると、あんまり実装出来ない設計者が量産されてくる...それはそれでヤバさしか感じない...</p> <p> </p> <p>なのでAI活用が前提となったときは</p> <p>理論の理解と活用の部分のU字カーブで重要度が変わるイメージ</p> <p>従来のソフトウエア開発は逆Uの字カーブの形を重視してたイメージ</p> <p>これがソフトウェア開発以外の世界にも波及するので結構世界観変わるなぁ...</p> <p>そして<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%AD%A5%E3%A5%EA%A5%A2%A5%D7%A5%E9%A5%F3">キャリアプラン</a>が大きく変わる人も出てきそう</p> <p> </p> <p>過渡期って楽しくて良いよね</p> makotan 文章生成系AIをソフトウェア開発に転用したい hatenablog://entry/4207112889971301243 2023-03-14T12:59:38+09:00 2023-03-14T12:59:38+09:00 ChatGPTをはじめとして色々出てくる文章生成系AIをどうやって開発に転用出来るかをぼんやり考えてた 案1 開発ドキュメント、議事録、ミーティング音声(の書き起こし)、issue、ソースコード..etcを全部追加で学習させる 開発上の疑問とかがあったり、実装のあれこれを全部問い合わせする エンジニアあるあるの世代交代とか、忘却とかも一切無く必要な情報を即座に取り出してきてそれっぽい文章に仕立ててくれるし、なんなら実装の一部も任せられそう ただし、だいぶ秘密な情報を大量に渡すことになるのでその辺のセキュリティーが凄く気になるのとそこそこ多い量になるのがコスト的に大丈夫か心配 案2 テストの用意… <p>ChatGPTをはじめとして色々出てくる文章生成系AIをどうやって開発に転用出来るかをぼんやり考えてた</p> <p> </p> <p>案1</p> <p><span style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif;">開発ドキュメント、議事録、ミーティング音声(の書き起こし)、issue、<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%BD%A1%BC%A5%B9%A5%B3%A1%BC%A5%C9">ソースコード</a>..etcを全部追加で学習させる</span></p> <p>開発上の疑問とかがあったり、実装のあれこれを全部問い合わせする</p> <p> </p> <p>エンジニアあるあるの世代交代とか、忘却とかも一切無く必要な情報を即座に取り出してきてそれっぽい文章に仕立ててくれるし、なんなら実装の一部も任せられそう</p> <p>ただし、だいぶ秘密な情報を大量に渡すことになるのでその辺のセキュリ<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C6%A5%A3%A1%BC">ティー</a>が凄く気になるのとそこそこ多い量になるのがコスト的に大丈夫か心配</p> <p> </p> <p>案2</p> <p>テストの用意を支援して貰いつつ、そのテストが通る実装を用意して貰う</p> <p> </p> <p>イメージ的にはTDDのテストの作成をAIがサポートしつつ、テストが通る実装も作って貰う...なのでAIに「こんな動作」ってプロンプトでひたすらリク<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A8%A5%B9">エス</a>トしまくるだけの人になるw</p> <p>最終的に出来上がったコードを採用するかどうかの判断はあれだけど...テストケースの設計とかも支援して貰えれば...ありな気がしたけど、これで対応出来るのはある程度の複雑さまでかなぁ〜</p> <p> </p> <p>AIを使った開発ツール だれか はやく!!</p> makotan ChatGPTをしばらく使って... hatenablog://entry/4207112889969221881 2023-03-07T06:40:46+09:00 2023-03-07T06:40:46+09:00 ChatGPTをしばら〜く使った結果 ChatGPTとGoogleで知識を使うだけの部分は相当量がカバー出来る事になる気がした 現時点ではChatGPTが嘘をつくことはあるけど、パラメータの量が増えればある程度減っていきそうな気もするし、既にソースがどれって表示するものも出てきてるのでたぶん嘘に対しては緩和していくんじゃ無いかと... ChatGPTとかGoogleでは、知恵はないので知恵を使う部分は相変わらず必要になりそう もしこの部分もAIができるようになると大変だけど、コンテキストの理解とか色々と大変なのでしばらくは知恵を使う部分なら大丈夫な気がする <p>ChatGPTをしばら〜く使った結果</p> <p>ChatGPTと<a class="keyword" href="http://d.hatena.ne.jp/keyword/Google">Google</a>で知識を使うだけの部分は相当量がカバー出来る事になる気がした</p> <p>現時点ではChatGPTが嘘をつくことはあるけど、パラメータの量が増えればある程度減っていきそうな気もするし、既にソースがどれって表示するものも出てきてるのでたぶん嘘に対しては緩和していくんじゃ無いかと...</p> <p>ChatGPTとか<a class="keyword" href="http://d.hatena.ne.jp/keyword/Google">Google</a>では、知恵はないので知恵を使う部分は相変わらず必要になりそう</p> <p>もしこの部分もAIができるようになると大変だけど、コンテキストの理解とか色々と大変なのでしばらくは知恵を使う部分なら大丈夫な気がする</p> <p> </p> makotan ChatGPT hatenablog://entry/4207112889962100565 2023-02-11T06:49:11+09:00 2023-02-11T06:49:11+09:00 しばらく使った現時点(2023/02/11)の結論 半年くらいしたらめっちゃ進化しててこの結論が使えなくなる可能性もあるけど、それはそれで良いことだと思う ChatGPTのイメージ めっちゃ色々知ってて、それなりの回答を返してくれるけど、そのものズバリの回答を返せない奴。そしてたまに真っ赤な嘘を本当のように言ってくる んで、どう使う? 周辺の知識はあるけど、そのエリアは詳しくないみたいなところで聞くと そこそこ間違えた回答が返ってくるので 追加で質問しながらそこそこ合ってそうな回答になるまで横でググりながら色々聞く それっぽい回答まで出来上がったらそこで終わり ポイントは...自分でチェックし… <p>しばらく使った現時点(2023/02/11)の結論</p> <p>半年くらいしたらめっちゃ進化しててこの結論が使えなくなる可能性もあるけど、それはそれで良いことだと思う</p> <p> </p> <p>ChatGPTのイメージ</p> <p>めっちゃ色々知ってて、それなりの回答を返してくれるけど、そのものズバリの回答を返せない奴。そしてたまに真っ赤な嘘を本当のように言ってくる</p> <p> </p> <p>んで、どう使う?</p> <p>周辺の知識はあるけど、そのエリアは詳しくないみたいなところで聞くと</p> <p>そこそこ間違えた回答が返ってくるので</p> <p>追加で質問しながらそこそこ合ってそうな回答になるまで横でググりながら色々聞く</p> <p>それっぽい回答まで出来上がったらそこで終わり</p> <p> </p> <p>ポイントは...自分でチェックしつつ、あんまり信じない</p> <p>なので、大まかに関連知識が無いと嘘が嘘だと見抜けないし次に進めない</p> <p>ただ細かい部分の知識はChatGPTが大まかに教えてくれる&それをヒントにググれば良いので必要ない</p> <p> </p> <p>ChatGPT以降どうなる?</p> <p>ChatGPTを有効に使うために必要な知識は</p> <ul> <li>特定の分野の専門レベルの深い知識</li> <li>広範囲かつ理論的に裏打ちされた知識</li> </ul> <p>この組み合わせになってきそう</p> <p>このあたりの知識をもって使うとChatGPTの嘘も見抜けるし、ChatGPTからヒントを引き出すことも出来る</p> <p> </p> <p>これから出てくる生成AIの進化が楽しみだ...</p> <p> </p> makotan Bitwardenを使うまでのメモ hatenablog://entry/4207112889949116687 2022-12-29T08:34:20+09:00 2022-12-29T08:34:20+09:00 まずはBitwardenに行ってアカウントを作る オープンソースのパスワード管理 | Bitwarden アカウントを作りつつ、メールのチェックとか色々やる 既存のパスワードマネージャのデータをエクスポートして、インポートする インポート直後は何も変化しないので、いっかいリロードする そうすると既存のパスワードマネージャのデータが表示される 既存のパスワードマネージャであれこれやった情報の欠落が無いかとかは別途確認する(特にカスタムフィールドとかメモとかあると欠落してると悲しいので アカウント設定のところで、セキュリティー -> 2段階認証にある2段階認証を有効にする。標準でGoogleのあれ… <p>まずはBitwardenに行ってアカウントを作る</p> <p><a href="https://bitwarden.com/ja-JP/">オープンソースのパスワード管理 | Bitwarden</a></p> <p>アカウントを作りつつ、メールのチェックとか色々やる</p> <p>既存のパスワードマネージャのデータをエクスポートして、インポートする</p> <p>インポート直後は何も変化しないので、いっかいリロードする</p> <p>そうすると既存のパスワードマネージャのデータが表示される</p> <p>既存のパスワードマネージャであれこれやった情報の欠落が無いかとかは別途確認する(特にカスタムフィールドとかメモとかあると欠落してると悲しいので</p> <p> </p> <p>アカウント設定のところで、セキュリ<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C6%A5%A3%A1%BC">ティー</a> -&gt; 2段階認証にある2段階認証を有効にする。標準で<a class="keyword" href="http://d.hatena.ne.jp/keyword/Google">Google</a>のあれとか、メールとか使える</p> <p>WebAuthnとかYubikeyとか使いたい場合は<a class="keyword" href="http://d.hatena.ne.jp/keyword/%CD%AD%CE%C1%A5%AA%A5%D7%A5%B7%A5%E7%A5%F3">有料オプション</a>をポチッとする</p> <p>(<a class="keyword" href="http://d.hatena.ne.jp/keyword/%CD%AD%CE%C1%A5%AA%A5%D7%A5%B7%A5%E7%A5%F3">有料オプション</a>は他に比べると随分安い</p> <p>WebAuthn+<a class="keyword" href="http://d.hatena.ne.jp/keyword/Apple">Apple</a>の組み合わせを楽しみたいときは<a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a>の<a class="keyword" href="http://d.hatena.ne.jp/keyword/Safari">Safari</a>からも登録する</p> <p><a class="keyword" href="http://d.hatena.ne.jp/keyword/%CD%AD%CE%C1%A5%AA%A5%D7%A5%B7%A5%E7%A5%F3">有料オプション</a>を有効にした場合は強く推奨</p> <p> </p> <p>そのままブラウザの<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D7%A5%E9%A5%B0%A5%A4%A5%F3">プラグイン</a>とかも入れていく...</p> <p>この辺は他のパスワードマネージャ使っていればあんまり苦労しないはず</p> <p> </p> <p>次に<a class="keyword" href="http://d.hatena.ne.jp/keyword/iOS">iOS</a>/iPadOSのアプリを入れる...</p> <p>Bitwardenのサイトからどうぞ</p> <p><a href="https://bitwarden.com/ja-JP/download/">各デバイス向けインストール手順 | Bitwarden</a></p> <p><a class="keyword" href="http://d.hatena.ne.jp/keyword/iOS">iOS</a>をいれるとログイン時に2段階認証を求められるので、先に登録した方法を使う(WebAuthnって便利だ〜</p> <p>pushで同期してるらしいのでpushを許可する</p> <p>設定から自動入力の所の二つをゴニョゴニョとやる</p> <p>FaceIDでロック解除と、(端末によっては)ログインリク<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A8%A5%B9">エス</a>トを承認するをオンにする</p> <p>これで保管庫のどこかに適当にログインしてログイン出来ることを確認</p> <p> </p> <p>当然あるであろう他の<a class="keyword" href="http://d.hatena.ne.jp/keyword/iOS">iOS</a>/iPadOSのアプリを入れる場合は↑と同じになるので省略</p> <p>他のOSに入れるときには↑のログインリク<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A8%A5%B9">エス</a>トの承認が発動するので、そっちから承認するかTOTPとかメールとかYubikeyとかで2段階認証をクリアする</p> <p> </p> <p>ポイントは</p> <p>Bitwardenの2段階認証を有効にするとき</p> <p>if (<a class="keyword" href="http://d.hatena.ne.jp/keyword/%CD%AD%CE%C1%A5%AA%A5%D7%A5%B7%A5%E7%A5%F3">有料オプション</a> == true) {</p> <p>  if <a href="#f-97917088" name="fn-97917088" title="Mac &amp;amp;&amp;amp; (iOS || iPadOS">*1</a>のユーザ == true) {</p> <p>    WebAuthnを<a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a>の<a class="keyword" href="http://d.hatena.ne.jp/keyword/Safari">Safari</a>で有効にする。Yubikeyとか他のも有効にする</p> <p>  } else {</p> <p>    他の選択肢よくわからないけど、WebAuthnを有効にする。Yubikeyとか他のも有効にする</p> <p>  }</p> <p>} else {</p> <p>  TOTP and メールで2段階認証を有効にする</p> <p>}</p> <p>こんな感じで<a class="keyword" href="http://d.hatena.ne.jp/keyword/%CD%AD%CE%C1%A5%AA%A5%D7%A5%B7%A5%E7%A5%F3">有料オプション</a>を使わなくてもイマドキ必須の2段階認証が使えること</p> <p>あと、<a class="keyword" href="http://d.hatena.ne.jp/keyword/%CD%AD%CE%C1%A5%AA%A5%D7%A5%B7%A5%E7%A5%F3">有料オプション</a>を使うとしてもYubikeyとかの物理キーが必須じゃ無いこと</p> <p>(大事なポイント:2段階認証に使うアイテムは必ずバックアップを用意しましょう</p> <p> </p> <p>Bitwardenのメリットは</p> <p>無料でも複数端末の同期が使える!!</p> <p><a class="keyword" href="http://d.hatena.ne.jp/keyword/%CD%AD%CE%C1%A5%AA%A5%D7%A5%B7%A5%E7%A5%F3">有料オプション</a>使わなくても今の条件が維持されるならオススメ出来るなぁ〜って思った</p> <p><a class="keyword" href="http://d.hatena.ne.jp/keyword/%CD%AD%CE%C1%A5%AA%A5%D7%A5%B7%A5%E7%A5%F3">有料オプション</a>の大きいメリットは1Passwordみたいな感じでTOTPが使えることと、WebAuthnで2段階認証出来ることかな</p> <p>あとは標準で<a class="keyword" href="http://d.hatena.ne.jp/keyword/CLI">CLI</a>があったりするので、コマンドからゴニョゴニョしたいタイプの人にも向いてそう</p> <p> </p> <p>おまけ</p> <p>ここではBitwardenに合わせて2段階認証って書いてるけど、個人的には「多要素認証」の方が言葉としては良いと思ってる</p> <p> </p> <p>以上、年末のツール見直し現場からお送りしました</p> <p> </p><div class="footnote"> <p class="footnote"><a href="#fn-97917088" name="f-97917088" class="footnote-number">*1</a><span class="footnote-delimiter">:</span><span class="footnote-text"><a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a> &amp;&amp; (<a class="keyword" href="http://d.hatena.ne.jp/keyword/iOS">iOS</a> || iPadOS</span></p> </div> makotan AIでプログラムの生成が出来た後の事 hatenablog://entry/4207112889947744020 2022-12-24T10:50:52+09:00 2022-12-24T10:50:52+09:00 この文章はAIでプログラムの生成を「github等で公開されたコードから類似を探して適応させる以外の方法で生成する」前提 現状はそんな方法は公開されてない(けどきっと誰か研究してそう)けど、ChatGPTとか画像の自動生成とか音楽の自動生成とかみてるとそんな遠くない時期に何かそれっぽいものが出てきそうだなと... 仮にAIでの凄い自動生成が実現したとして、これまで開発するエンジニアはどうなるのか 設計に合わせてコードを書けるという能力がほぼ価値を失う 逆に非エンジニアが考える要件をAI向けに変換する作業(設計?)は残る。ただし、ChatGPTとかみてると、AIで代用出来る可能性は限りなく高いの… <p>この文章はAIでプログラムの生成を「<a class="keyword" href="http://d.hatena.ne.jp/keyword/github">github</a>等で公開されたコードから類似を探して適応させる以外の方法で生成する」前提</p> <p>現状はそんな方法は公開されてない(けどきっと誰か研究してそう)けど、ChatGPTとか画像の自動生成とか音楽の自動生成とかみてるとそんな遠くない時期に何かそれっぽいものが出てきそうだなと...</p> <p> </p> <p>仮にAIでの凄い自動生成が実現したとして、これまで開発するエンジニアはどうなるのか</p> <p>設計に合わせてコードを書けるという能力がほぼ価値を失う</p> <p>逆に非エンジニアが考える要件をAI向けに変換する作業(設計?)は残る。ただし、ChatGPTとかみてると、AIで代用出来る可能性は限りなく高いので、長期的には価値を失う</p> <p>そして非エンジニアが直接AIを使って欲しいシステムを作れるようになるとする</p> <p><span style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif;">システムの更新もAIで再生成すれば良い</span></p> <p>システム間の連携も所詮codeで実現なのでAIが出来るようになる</p> <p>データ移行もcodeなのでAIが出来るようになる</p> <p>インフラも<a class="keyword" href="http://d.hatena.ne.jp/keyword/IoC">IoC</a>でcodeになるのでAIが出来るようになる</p> <p>運用・監視も元々データを見る作業なのでAIでカバー</p> <p> </p> <p>普通のシステムだとやることなぁ〜い!</p> <p>はやくこうならないかなぁ...</p> <p> </p> makotan テストと開発工数と... hatenablog://entry/4207112889942944306 2022-12-07T06:43:46+09:00 2022-12-07T06:43:46+09:00 最近自動テストをすることは必須って風潮で、それはそれとして良いんだけど...って話 いにしえのSIerの手動テストが良いとか言うつもりは全く無い前提で テストには色んなレベルがあって、それらを認識しつつ「必要なテストを必要最低限作り込む」っていう方向にならないかなぁ〜って思ってみてる TDDはそもそも開発手法なので、TDDで作ったテストは「実装作業として必要な物」であって、そこで作られるテストは本来の意味ではテストじゃないと思ってる(全部捨てても問題ない) じゃあ何がテストなのかって話になると (「要件を満たすことを確認するもの」,「例外的動作をシミュレーションして正しく動作するもの」) (「… <p>最近自動テストをすることは必須って風潮で、それはそれとして良いんだけど...って話</p> <p><span style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif;">いにしえの<a class="keyword" href="http://d.hatena.ne.jp/keyword/SIer">SIer</a>の手動テストが良いとか言うつもりは全く無い前提で</span></p> <p> </p> <p>テストには色んなレベルがあって、それらを認識しつつ「必要なテストを必要最低限作り込む」っていう方向にならないかなぁ〜って思ってみてる</p> <p>TDDはそもそも開発手法なので、TDDで作ったテストは「実装作業として必要な物」であって、そこで作られるテストは本来の意味ではテストじゃないと思ってる(全部捨てても問題ない)</p> <p>じゃあ何がテストなのかって話になると</p> <p>(「要件を満たすことを確認するもの」,「例外的動作をシミュレーションして正しく動作するもの」)</p> <p>(「定期的に実施して基本的な品質を確認するもの」,「必要に応じて実施して正しい動作を確認するもの」)</p> <p>これらの組み合わせ</p> <p>その中で定期的に実施しして〜の部分は自動テスト化しないとかなりしんどい(大抵は相当多めの数になるので)</p> <p>必要に応じて〜の部分は、再現可能な作業手順さえ存在して居れば自動化されてなくても良い(頻繁に変化しないならの条件付き)</p> <p>って考えると実はテストは「自動化しなければならない」という必然性はなく、むしろ「再現可能であれば良い」「<a class="keyword" href="http://d.hatena.ne.jp/keyword/%B9%A9%BF%F4">工数</a>を削減するために自動化しましょう」程度の話になる</p> <p>あとは「組織として心の平穏を保つため」に何処をどの程度自動化・定期実行していくのかだとおもう</p> <p> </p> <p>必然性が無いものに、本体の開発<a class="keyword" href="http://d.hatena.ne.jp/keyword/%B9%A9%BF%F4">工数</a>を超えてのテストを自動化する意味ってなんなんだろうって考える今日この頃</p> <p> </p> makotan MSFS A320neoでオートパイロット hatenablog://entry/4207112889934208956 2022-11-06T17:21:03+09:00 2022-11-06T17:21:03+09:00 こんな所にそれっぽい動画があるので、これを見ながら説明 youtu.be オートパイロットの準備として、IFRを選択する(飛行機の下の選択) 高高度か低高度は好きな方でOK 出発のコースとかはなんとなく好きなやつでOKだけど、滑走路と番号は合わせること 滑走路が22なら出発は「出発(LAXA3 22)」みたいに後ろの数値と滑走路の番号を合わせる 到着も同じ感じで、アプローチは RNAVを選択(他にILSとか色々あるけどとりあえずRNAVで) ナビログで今回のコースと速度とか高度とかをちょっと確認しておくと良いけどこれはオプション 離陸はオートパイロット出来ないので、パーキングブレーキ解除(十字… <p>こんな所にそれっぽい動画があるので、これを見ながら説明</p> <p><iframe width="560" height="315" src="https://www.youtube.com/embed/HBbbCzJbG3w?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" title="MSFS A320neo オートパイロット で羽田から名古屋まで"></iframe><cite class="hatena-citation"><a href="https://youtu.be/HBbbCzJbG3w">youtu.be</a></cite></p> <p> </p> <p>オート<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D1%A5%A4%A5%ED">パイロ</a>ットの準備として、IFRを選択する(飛行機の下の選択)</p> <p>高高度か低高度は好きな方でOK</p> <p>出発のコースとかはなんとなく好きなやつでOKだけど、滑走路と番号は合わせること</p> <p>滑走路が22なら出発は「出発(LAXA3 22)」みたいに後ろの数値と滑走路の番号を合わせる</p> <p>到着も同じ感じで、アプローチは RNAVを選択(他にILSとか色々あるけどとりあえずRNAVで)</p> <p>ナビログで今回のコースと速度とか高度とかをちょっと確認しておくと良いけどこれはオプション</p> <p> </p> <p>離陸はオート<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D1%A5%A4%A5%ED">パイロ</a>ット出来ないので、<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D1%A1%BC%A5%AD%A5%F3%A5%B0%A5%D6%A5%EC%A1%BC%A5%AD">パーキングブレーキ</a>解除(<a class="keyword" href="http://d.hatena.ne.jp/keyword/%BD%BD%BB%FA%A5%AD%A1%BC">十字キー</a>の左)、throttleを最大にして加速</p> <p>速度メータの所のマークが出た辺りでちょっと操縦桿を引いた(左スティックをちょっと下に)ら離陸</p> <p>ちょっと高度が上がって(100ftとか)からギアを引っ込め(<a class="keyword" href="http://d.hatena.ne.jp/keyword/%BD%BD%BB%FA%A5%AD%A1%BC">十字キー</a>の右)て、フラップをあげる(<a class="keyword" href="http://d.hatena.ne.jp/keyword/%BD%BD%BB%FA%A5%AD%A1%BC">十字キー</a>の上)</p> <p>そこで「AP」って書いてるスイッチをポチッと押すとランプが光る←めっちゃ重要</p> <p>その後、throttleを70%くらいまで下げる(そうするとオートスロットルに切り替わるので着陸前くらいまで操作しなくて良い)</p> <p>APのランプが光っていれば左スティックも触らなくて勝手に移動していってくれるので放置すればいいけど、高度だけはチョコチョコ変える必要がある</p> <p>(上手くいかないときはランプの点いてる場所が同じか確認)</p> <p> </p> <p>この段階まで上手くいけば、ここからコントローラー操作はしばらくないのでマウス操作になる</p> <p> </p> <p>コンソールのところで<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D5%A5%E9%A5%A4%A5%C8%A5%D7%A5%E9%A5%F3">フライトプラン</a>(FPLNだっけ...?)を表示するボタンをポチッと押す</p> <p>そしたら何処にどの高度で飛べって書いてるのが表示される(そのまま飛んでれば自動更新される)</p> <p>表記は「場所」「時間」「高度」なので、場所と高度を見ながら飛ぶ</p> <p>いまどこにいるかはレーダーっぽい画面に出てる</p> <p>右上に「向かってる場所」と「距離(海里)」が出てるのでそれを参考にする</p> <p> </p> <p>目標高度は初期値で5000とかで表示されてる部分</p> <p>高度はコンソールの<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D5%A5%E9%A5%A4%A5%C8%A5%D7%A5%E9%A5%F3">フライトプラン</a>を見つつ、適当に決める</p> <p>セット方法は、マウスの真ん中でスクロールさせる感じで数値を選ぶ(この時点ではまだ変化しない)、マウスの左ボタン長押ししつつの、中央クリック(視点移動が中央クリックでそっちも発動するので2回押す)</p> <p>ほっとくと目標高度に向けて一気に動くのでそれを防ぐのにV/S(垂直方向の制御)を使って一定の速度で上下する方法を使うけど、慣れるまでは一気に動かす</p> <p>いずれにしろ目標高度に達すると安定するので、次の目標高度の設定とかをしておく</p> <p> </p> <p>スピードの所は高度10,000までは240くらいで、10,000超えたら330とかにセットする</p> <p>セット方法は高度と同じでスピード選択からの中央クリックのパターン</p> <p> </p> <p>高度を上げていってるときとか、V/Sで操作してるときとかに数値を変える場合はなにもしなくても反映されたりするので、やりながら慣れる(パターンはあんまり多くない)</p> <p>イメージ的には</p> <p>高度だけセットするとその高度に一気に向かう(普段この動きは見た事ない)</p> <p>V/Sをせっとしてから高度をせっとすると、V/Sに従ってその高度になる(時間がかかるけど普通の飛行機の挙動)</p> <p>なんか挙動的に反映されないなぁ〜って思ったらセットすると反映される</p> <p> </p> <p>しばらくは高度を上げていき...</p> <p><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D5%A5%E9%A5%A4%A5%C8%A5%D7%A5%E9%A5%F3">フライトプラン</a>で高度を下げる感じに出始めてからゆっくり高度を下げていく</p> <p>(東京大阪間を飛んでも安定して飛行するのはちょっとだけ</p> <p>高度11,000より下になったあたりで、スピードを240くらいに下げる(儀式)</p> <p> </p> <p>っていうのを繰り返していくと...いつのまにか着陸する空港に近づいていくはず</p> <p> </p> <p>着陸の一つ前の目標点くらいで速度をどんどん下げる(190とか)</p> <p><span style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif;">(ILSの表示をオンにすると下がりすぎとかの判断も出来るけど...慣れてからで</span></p> <p> </p> <p>着陸の一つ前の目標点を過ぎた段階で、空港の高度に目標高度を合わせつつ、V/Sも適切にセットする(下げすぎない程度なら...</p> <p> </p> <p>この辺からコントローラーが必要なのでいつでも使える様に準備</p> <p> </p> <p>着陸ちょっと前で速度を170とかに設定しつつ</p> <p>目の前でフラップを下げる(<a class="keyword" href="http://d.hatena.ne.jp/keyword/%BD%BD%BB%FA%A5%AD%A1%BC">十字キー</a>の下)、エンジンをアイドル(一番下)まで下げる、着陸ギアを下げる(<a class="keyword" href="http://d.hatena.ne.jp/keyword/%BD%BD%BB%FA%A5%AD%A1%BC">十字キー</a>の右)</p> <p>直前でさらにフラップを下げつつ</p> <p> </p> <p>タイヤが地面についたら、ブレーキをかけて(Xキー)速度を下げる</p> <p>着陸成功!!</p> <p> </p> <p> </p> <p>色々練習した結果、こんな感じだった</p> <p>慣れたら巡航中に読書したり映画見たり料理したり食事したりも出来るのでオススメ</p> <p> </p> makotan 特徴と構造と関数 hatenablog://entry/4207112889929683075 2022-10-22T11:36:16+09:00 2022-10-22T11:36:16+09:00 特徴を洗い出して、構造とマッピングして、それらを操作する関数を定義して 既存の関数などと組み合わせをして再利用を実現する というところまではだいぶ前に行き着いたんだけど そこから先の応用までまだいけない... 脳みそが昔の手法に引きずられるぅ〜 <p>特徴を洗い出して、構造と<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%DE%A5%C3%A5%D4%A5%F3%A5%B0">マッピング</a>して、それらを操作する関数を定義して</p> <p>既存の関数などと組み合わせをして再利用を実現する</p> <p> </p> <p>というところまではだいぶ前に行き着いたんだけど</p> <p>そこから先の応用までまだいけない...</p> <p> </p> <p>脳みそが昔の手法に引きずられるぅ〜</p> <p> </p> makotan 最近のOSSでふと思ったこと hatenablog://entry/4207112889916796530 2022-09-10T12:37:55+09:00 2022-09-10T12:37:55+09:00 某OSSがライセンス変更したり、某OSSを使って商売してる企業がライセンス変更に合わせてforkしたOSS作ったりをみてて 企業ベースのOSSの場合はこの辺のリスクを考えて採用する必要があるのか〜 ってふと思った 逆に、非営利団体が管理してるOSSだとライセンス変更のリスクは少なそうだけど 非営利団体が事実上の稼働停止とかするパターンもあるので OSSの採用って難しいなって思った このままOSSのライセンス変更リスクとか、セキュリティー対応する人のトラックナンバーが少ないとかの状況が続くと...なかなか厳しい... OSSでしっかりビジネスが出来る状態が出来ると良いんだけど、難易度高いなぁ〜 … <p>某<a class="keyword" href="http://d.hatena.ne.jp/keyword/OSS">OSS</a>がライセンス変更したり、某<a class="keyword" href="http://d.hatena.ne.jp/keyword/OSS">OSS</a>を使って商売してる企業がライセンス変更に合わせてforkした<a class="keyword" href="http://d.hatena.ne.jp/keyword/OSS">OSS</a>作ったりをみてて</p> <p>企業ベースの<a class="keyword" href="http://d.hatena.ne.jp/keyword/OSS">OSS</a>の場合はこの辺のリスクを考えて採用する必要があるのか〜</p> <p>ってふと思った</p> <p>逆に、<a class="keyword" href="http://d.hatena.ne.jp/keyword/%C8%F3%B1%C4%CD%F8%C3%C4%C2%CE">非営利団体</a>が管理してる<a class="keyword" href="http://d.hatena.ne.jp/keyword/OSS">OSS</a>だとライセンス変更のリスクは少なそうだけど</p> <p><a class="keyword" href="http://d.hatena.ne.jp/keyword/%C8%F3%B1%C4%CD%F8%C3%C4%C2%CE">非営利団体</a>が事実上の稼働停止とかするパターンもあるので</p> <p><a class="keyword" href="http://d.hatena.ne.jp/keyword/OSS">OSS</a>の採用って難しいなって思った</p> <p> </p> <p><span style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif;">このまま<a class="keyword" href="http://d.hatena.ne.jp/keyword/OSS">OSS</a>のライセンス変更リスクとか、セキュリ<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C6%A5%A3%A1%BC">ティー</a>対応する人の<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C8%A5%E9%A5%C3%A5%AF%A5%CA%A5%F3%A5%D0%A1%BC">トラックナンバー</a>が少ないとかの状況が続くと...なかなか厳しい...</span></p> <p><a class="keyword" href="http://d.hatena.ne.jp/keyword/OSS">OSS</a>でしっかりビジネスが出来る状態が出来ると良いんだけど、難易度高いなぁ〜</p> <p>(そういえば、なんか15年位前にも同じようなこと聞いたなw</p> makotan MSFS Mobile Companion App hatenablog://entry/4207112889914626468 2022-09-03T20:22:57+09:00 2022-09-03T20:22:57+09:00 全MSFSユーザにお勧めしたいアプリ github.com ざっくりした手順 ダウンロードして 2つのファイルを指定の場所にコピペして MSFS起動して、メインの画面が出てきた頃に zipを解凍した後に出てくるexeを実行 ネットワーク的に許可する必要があるので許可する コマンドラインにIPアドレス:4040って出てくるのでそこにアクセス そうすると... MSFSと繋がって色々出来る いちいち画面を切り替えたり見やすい場所に変えたり・・・とか全く必要が無い ブラウザさえあれば操作出来るのでそこら辺に転がってる端末が使える これは素晴らしいアプリですね (欲を言うと切りが無いけど、十分良い 個… <p>全MSFSユーザにお勧めしたいアプリ</p> <p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fgithub.com%2Fmracko%2FMSFS-Mobile-Companion-App" title="GitHub - mracko/MSFS-Mobile-Companion-App: Mobile Companion App for MSFS 2020" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://github.com/mracko/MSFS-Mobile-Companion-App">github.com</a></cite></p> <p> </p> <p>ざっくりした手順</p> <p>ダウンロードして</p> <p>2つのファイルを指定の場所にコピペして</p> <p>MSFS起動して、メインの画面が出てきた頃に</p> <p>zipを解凍した後に出てくるexeを実行</p> <p>ネットワーク的に許可する必要があるので許可する</p> <p><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B3%A5%DE%A5%F3%A5%C9%A5%E9%A5%A4%A5%F3">コマンドライン</a>に<a class="keyword" href="http://d.hatena.ne.jp/keyword/IP%A5%A2%A5%C9%A5%EC%A5%B9">IPアドレス</a>:4040って出てくるのでそこにアクセス</p> <p> </p> <p>そうすると...</p> <p> </p> <p>MSFSと繋がって色々出来る</p> <p>いちいち画面を切り替えたり見やすい場所に変えたり・・・とか全く必要が無い</p> <p>ブラウザさえあれば操作出来るのでそこら辺に転がってる端末が使える</p> <p> </p> <p>これは素晴らしいアプリですね</p> <p>(欲を言うと切りが無いけど、十分良い</p> <p>個人的には手作業でやるにはすごく面倒なシミュレーション速度変更がこんなところに!っていうのが一番の感動ポイントだったりする</p> <p>これで16倍速で飛べば離陸〜着陸までの空を飛んでるだけの時間を凄く短縮出来る</p> <p>(とある国を飛ぶとひたすら何も無いところが続くのでちょうど良い</p> makotan アーキテクチャの天下統一は可能なのか?ってふと思った hatenablog://entry/4207112889902360119 2022-07-25T06:30:00+09:00 2022-07-25T06:30:03+09:00 過去から未来の全てのアーキテクチャの天下統一したアーキテクチャって実現可能なのかなぁ〜って思ったのでちょっと考えた 仮説-天下統一したアーキテクチャ 1. ある一つのアーキテクチャが存在する 2. そのアーキテクチャはあらゆる開発で利用可能 3. 他のアーキテクチャを選択する必要性は全くない 仮設-既存のアーキテクチャ 1. 既存のアーキテクチャはプロダクトのソフトウェア品質要求、コスト、流行で決まる 2. 既存のアーキテクチャで天下統一したものは無い (参考リンク ソフトウェア品質 - Wikipedia ということは 天下統一したアーキテクチャはソフトウェアの品質要求がどんなレベルであろう… <p>過去から未来の全ての<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A2%A1%BC%A5%AD%A5%C6%A5%AF%A5%C1%A5%E3">アーキテクチャ</a>の天下統一した<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A2%A1%BC%A5%AD%A5%C6%A5%AF%A5%C1%A5%E3">アーキテクチャ</a>って実現可能なのかなぁ〜って思ったのでちょっと考えた</p> <p> </p> <p>仮説-天下統一した<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A2%A1%BC%A5%AD%A5%C6%A5%AF%A5%C1%A5%E3">アーキテクチャ</a></p> <p>1. ある一つの<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A2%A1%BC%A5%AD%A5%C6%A5%AF%A5%C1%A5%E3">アーキテクチャ</a>が存在する</p> <p>2. その<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A2%A1%BC%A5%AD%A5%C6%A5%AF%A5%C1%A5%E3">アーキテクチャ</a>はあらゆる開発で利用可能</p> <p>3. 他の<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A2%A1%BC%A5%AD%A5%C6%A5%AF%A5%C1%A5%E3">アーキテクチャ</a>を選択する必要性は全くない</p> <p> </p> <p>仮設-既存の<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A2%A1%BC%A5%AD%A5%C6%A5%AF%A5%C1%A5%E3">アーキテクチャ</a></p> <p>1. 既存の<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A2%A1%BC%A5%AD%A5%C6%A5%AF%A5%C1%A5%E3">アーキテクチャ</a>はプロダクトのソフトウェア品質要求、コスト、流行で決まる</p> <p>2. 既存の<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A2%A1%BC%A5%AD%A5%C6%A5%AF%A5%C1%A5%E3">アーキテクチャ</a>で天下統一したものは無い</p> <p>(参考リンク </p> <p><a href="https://ja.wikipedia.org/wiki/%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E5%93%81%E8%B3%AA">ソフトウェア品質 - Wikipedia</a></p> <p> </p> <p>ということは</p> <p>天下統一した<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A2%A1%BC%A5%AD%A5%C6%A5%AF%A5%C1%A5%E3">アーキテクチャ</a>はソフトウェアの品質要求がどんなレベルであろうと、プロダクト開発にかかるコストも要求レベルを実現出来ることになる</p> <p>=どんな品質要求でもかかる開発コストは同レベルになる</p> <p> </p> <p>反論-1</p> <p>数万ユーザ同時アクセスでms単位でレスポンスを返すことを要求されるプロダクトと</p> <p>数ユーザ同時アクセスでs単位でレスポンスを返すことを要求されるプロダクトで</p> <p>開発コストが同レベルになることは無い</p> <p> </p> <p>反論-2</p> <p>PoCに適した<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A2%A1%BC%A5%AD%A5%C6%A5%AF%A5%C1%A5%E3">アーキテクチャ</a>と、本開発に適した<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A2%A1%BC%A5%AD%A5%C6%A5%AF%A5%C1%A5%E3">アーキテクチャ</a>が同じになることは無い</p> <p> </p> <p>(反論パターンは沢山作れるのでざくっと省略</p> <p> </p> <p>以上の反論から</p> <p><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A2%A1%BC%A5%AD%A5%C6%A5%AF%A5%C1%A5%E3">アーキテクチャ</a>の天下統一は無理がある</p> <p>ただし、プロダクトの特性に合わせたある程度の最適解は同様なサービスの<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A2%A1%BC%A5%AD%A5%C6%A5%AF%A5%C1%A5%E3">アーキテクチャ</a>等から抽出可能な気がする</p> <p> </p> <p>おまけ</p> <p><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A2%A1%BC%A5%AD%A5%C6%A5%AF%A5%C1%A5%E3">アーキテクチャ</a>を開発手法ってやっても<a class="keyword" href="http://d.hatena.ne.jp/keyword/%B3%AB%C8%AF%A5%D7%A5%ED%A5%BB%A5%B9">開発プロセス</a>ってやっても多分同じになるなぁ〜って書いた後に思った</p> makotan Clean Architectureを読んで思った事 hatenablog://entry/4207112889900778493 2022-07-21T19:03:00+09:00 2022-07-21T19:03:00+09:00 何を思ったのか、Clean Architectureを突然読み始めた そして感じたこと アーキテクトの人が読む本ってあんまり無かった気がするけど、これはまとまってて良いな〜 なるほど、これが有名な◎か... アーキテクチャが開発工数とかに影響するんだから、かけれる開発コスト(と要求される開発速度)を天秤にかけるのもアーキテクトとしての大事な仕事では? データベースはdetailかもしれないけど、データモデルは違うよなぁ〜まぁそれは別の人の仕事か...でも実装工数考えるとデータベース使う前提のシステム作るかどうかって先に決まる気がする 仮に工数とかが十分だったとしても個人的には◎は選ばないかもな… <p>何を思ったのか、Clean Architectureを突然読み始めた</p> <p>そして感じたこと</p> <p>アーキテクトの人が読む本ってあんまり無かった気がするけど、これはまとまってて良いな〜</p> <p>なるほど、これが有名な◎か...</p> <p><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A2%A1%BC%A5%AD%A5%C6%A5%AF%A5%C1%A5%E3">アーキテクチャ</a>が開発<a class="keyword" href="http://d.hatena.ne.jp/keyword/%B9%A9%BF%F4">工数</a>とかに影響するんだから、かけれる開発コスト(と要求される開発速度)を天秤にかけるのもアーキテクトとしての大事な仕事では?</p> <p>データベースはdetailかもしれないけど、データモデルは違うよなぁ〜まぁそれは別の人の仕事か...でも実装<a class="keyword" href="http://d.hatena.ne.jp/keyword/%B9%A9%BF%F4">工数</a>考えるとデータベース使う前提のシステム作るかどうかって先に決まる気がする</p> <p> </p> <p>仮に<a class="keyword" href="http://d.hatena.ne.jp/keyword/%B9%A9%BF%F4">工数</a>とかが十分だったとしても個人的には◎は選ばないかもなぁ〜</p> <p>でも、実装の設計レベルでは似たことをやってるw</p> makotan 自分的に新しい手法を見つけたときに見てるところ hatenablog://entry/4207112889895269062 2022-07-02T10:44:25+09:00 2022-07-02T10:44:25+09:00 こじんてきめも どっからか新しい手法を見つけるところがスタート ネット徘徊してたりすると意外と転がってる 見ても放置すること 適用した人の積極的コメント(たぶんこれがあるので目に入ってるので気にしない) 適用してない人の応援コメント(実は参考にならない) いくつかの基準で分解する 元々どこに適用する為に作られてるのか 何の問題を改善しようとしてるのか 前提条件の有無 手法そのものの特徴 理論的背景 元々どこに適用する為に作られてるのか 元々の適用先がどこで、その適用先にはどんな特徴・特性があるのかをちゃんと把握する。これを大きく超えた適用は多分無理なので意外と大事 手法が2次以降の場合は可能な… <p>こじんてきめも</p> <p> </p> <p>どっからか新しい手法を見つけるところがスタート</p> <p>ネット徘徊してたりすると意外と転がってる</p> <p> </p> <p>見ても放置すること</p> <p>適用した人の積極的コメント(たぶんこれがあるので目に入ってるので気にしない)</p> <p>適用してない人の応援コメント(実は参考にならない)</p> <p> </p> <p>いくつかの基準で分解する</p> <p>元々どこに適用する為に作られてるのか</p> <p>何の問題を改善しようとしてるのか</p> <p>前提条件の有無</p> <p>手法そのものの特徴</p> <p>理論的背景</p> <p> </p> <p>元々どこに適用する為に作られてるのか</p> <p>元々の適用先がどこで、その適用先にはどんな特徴・特性があるのかをちゃんと把握する。これを大きく超えた適用は多分無理なので意外と大事</p> <p>手法が2次以降の場合は可能な限りオリジナルまで辿っていく</p> <p> </p> <p>何の問題を改善しようとしてるのか</p> <p>大抵は類似の適用先に何らかの手法が存在してるはずなので、何の問題を改善したいのか・しようとしてるのかをちゃんと把握する</p> <p>適用先+改善内容によっては積極的に取り込んだ方が良いことがある</p> <p>流行っててもこれがズレてると効果が出ない</p> <p> </p> <p>前提条件の有無</p> <p>その手法には前提条件があるのか、ないのか(たぶんある)</p> <p>前提条件をしっかり把握する(スーパーエンジニアが必要とか)</p> <p> </p> <p>手法そのものの特徴</p> <p>その手法そのものの特徴とか他との違いはざっくり把握しておく</p> <p>大抵はこの前段階でほぼ調査終わってるはずだけど抜けてる可能性はあるので...</p> <p> </p> <p>理論的背景</p> <p>その手法はどんな理論を背景に作られたのか、経験則から導き出したのかなどを調べる</p> <p>ここで、理論的背景を抑えないと使おうとしても上手く使えないとかが発生するので、個人的にしらない理論だとその理論から抑えないとダメなのですごく時間がかかる</p> <p>後付けで理論的背景が追加される事もあるけど、それもよし</p> <p>経験則から導き出したものだと、その人・環境特有な物の可能性があるので要注意</p> <p> </p> <p>ここまで詳細に調べておけば</p> <p>新しい手法をプロジェクトに取込たいってなったときに、手法のマッチングが出来るようになるので、場合によっては手法を修正したりする</p> <p> </p> <p>まぁ何が言いたいかというと、</p> <p>使って当然的に言われてる手法の○○って本来と、現実の実現方法でだいぶ根本がズレてないか?って思うことがあるので気になってるw</p> <p> </p> makotan アーキテクチャ考えるときに考えてる事 hatenablog://entry/13574176438096588042 2022-05-28T12:40:43+09:00 2022-05-28T12:40:43+09:00 こじんてきめも 概略 アーキテクチャ = (プロダクトの特性 + チーム体制 + 個人的に死守すべしと考えるポイント + マネージャor要望者の優先課題 + チームのやりたいこと) プロダクトの特性 たとえば、えんたーぷらいずなシステム構築なのか、BtoCなシステム構築なのか... リクエスト数はどれくらいなのかとか、可用性は...とか アーキテクチャを決める前段階で決まってる内容 チーム体制 長く一緒にやってる超優秀なエンジニアだけで構成されたチームなのか、このプロダクトのために緊急でかき集めたエンジニアなのか...など アーキテクチャの立ち位置とかもこの辺に絡んでくる 個人的に死守すべしと… <p>こじんてきめも</p> <p> </p> <p>概略</p> <p><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A2%A1%BC%A5%AD%A5%C6%A5%AF%A5%C1%A5%E3">アーキテクチャ</a> = (プロダクトの特性 + チーム体制 + 個人的に死守すべしと考えるポイント + マネージャor要望者の優先課題 + チームのやりたいこと)</p> <p> </p> <p>プロダクトの特性</p> <p>たとえば、えんたーぷらいずなシステム構築なのか、BtoCなシステム構築なのか...</p> <p>リク<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A8%A5%B9">エス</a>ト数はどれくらいなのかとか、可用性は...とか</p> <p><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A2%A1%BC%A5%AD%A5%C6%A5%AF%A5%C1%A5%E3">アーキテクチャ</a>を決める前段階で決まってる内容</p> <p> </p> <p>チーム体制</p> <p>長く一緒にやってる超優秀なエンジニアだけで構成されたチームなのか、このプロダクトのために緊急でかき集めたエンジニアなのか...など</p> <p><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A2%A1%BC%A5%AD%A5%C6%A5%AF%A5%C1%A5%E3">アーキテクチャ</a>の立ち位置とかもこの辺に絡んでくる</p> <p> </p> <p>個人的に死守すべしと考えるポイント</p> <p>たぶん各自違うポイントがある(経験とか指向性とかで)</p> <p>その中でも、これを守らないと絶対ダメだと考えるポイントのこと</p> <p>過去の経験とかの積み上げとか、前回の反省とかが生きるところ</p> <p>判断基準は、「これを守れないプロダクトなら作らない」と言えるレベルかどうか</p> <p> </p> <p>マネージャor要望者の優先課題</p> <p>優先度の高い課題があって、大抵はQCDのどれかの事が多いけどたまにそうじゃないものもある</p> <p>その課題をちゃんと理解して認識しておくことが重要</p> <p> </p> <p>チームのやりたいこと</p> <p>たとえば、新しい技術を使いたいとか、新しい手法を使いたいとかそういうの</p> <p>全く新規性の無いプロダクト開発はそれはそれでつまらないことも多いので</p> <p>ただし、ここまでに出てきた物の中では優先度が低くなることが多いのと、判断をミスると基本的に大変な尻拭いも待ってる部分なので未経験なことを大量に入れるのは避けた方が賢明なことが多い</p> <p> </p> <p><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A2%A1%BC%A5%AD%A5%C6%A5%AF%A5%C1%A5%E3">アーキテクチャ</a>の決め方</p> <p>プロダクトの特性を大前提にして大枠の仕組みを決める</p> <p>チーム体制を考慮して実装方法・サンプルの作成などで方向性を確定させる</p> <p>(ここでチームのやりたいことも入れる</p> <p>(代替があるので後回しにできるものは後から対応して行く</p> <p>個人的に死守すべしと考えるポイントは全工程で守れるように気を配り続ける</p> <p>割と早期にマネージャor要望者の優先課題が満たされているのかを判断する</p> <p>判断した結果、満たされていない場合は調整 or <a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A2%A1%BC%A5%AD%A5%C6%A5%AF%A5%C1%A5%E3">アーキテクチャ</a>の見直しをする</p> <p>大体出来た辺りで走り始めつつ</p> <p>後回しにした物を色々追加していく</p> <p> </p> <p> </p> <p>昔は<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A2%A1%BC%A5%AD%A5%C6%A5%AF%A5%C1%A5%E3">アーキテクチャ</a>って言っても単純だったのに、どうしてこんなに増えたんだろうなぁ〜って思って<span style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif;">ふと考えたら、プロダクトの特性が凄く多岐にわたることに気がついた</span></p> <p>突然<a class="keyword" href="http://d.hatena.ne.jp/keyword/%CE%AE%C6%FE">流入</a>する100req/sの更新処理を多いと思うか少ないと思うか、準リアルタイムでのデータ同期がどれくらいあるか...という世界かなぁ〜</p> <p><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%AF%A5%E9%A5%A6%A5%C9">クラウド</a>の前だったらサーバ費用がかかりすぎるって言って考えなくて済んだのにw</p> makotan どうつくるか、どんな手法で作るか問題 hatenablog://entry/13574176438094332407 2022-05-21T10:54:08+09:00 2022-05-21T10:54:08+09:00 どう作るか、どんな手法で作るかは、そのプロジェクト特性・企業文化・案件の前提条件を考慮して、各々が決定すればいい話で「唯一絶対の正解」なんてものは存在しないと思ってる。 比較的広範囲に適用可能な方法とかは存在していると思ってる。 それを否定的な人も居ることは知ってるし、それで良いと思ってる。 適切な決定方法を無視して「自分の思う絶対の正解」を利用したときに酷いことになるのも見てるので、色んな人の意見を見た方が良いと思ってる。 そして観測範囲外に「最も適切になる手法とか」が存在することもあると思ってる。 「そのプロジェクト特性・企業文化・案件の前提条件」を考慮せずに、その時の選択に否定的な意見を… <p>どう作るか、どんな手法で作るかは、そのプロジェクト特性・企業文化・案件の前提条件を考慮して、各々が決定すればいい話で「唯一絶対の正解」なんてものは存在しないと思ってる。</p> <p>比較的広範囲に適用可能な方法とかは存在していると思ってる。</p> <p>それを否定的な人も居ることは知ってるし、それで良いと思ってる。</p> <p>適切な決定方法を無視して「自分の思う絶対の正解」を利用したときに酷いことになるのも見てるので、色んな人の意見を見た方が良いと思ってる。</p> <p>そして観測範囲外に「最も適切になる手法とか」が存在することもあると思ってる。</p> <p>「そのプロジェクト特性・企業文化・案件の前提条件」を考慮せずに、その時の選択に否定的な意見を言う人も見たことがある。<span style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif;">なので、アーキテクトの人は大変だなって思う</span></p> <p> </p> <p>まぁ何が言いたいかというと、「makotanの短いソフトウェア開発の経験」程度では「<a class="keyword" href="http://d.hatena.ne.jp/keyword/%B6%E4%A4%CE%C3%C6%B4%DD">銀の弾丸</a>は探せてない」</p> <p> </p> makotan 2022年にあれこれ作るとしたら hatenablog://entry/13574176438091593088 2022-05-14T16:00:00+09:00 2022-05-14T16:00:03+09:00 高負荷とかホント嫌いなのに高負荷なサービスに関わる事が多いので、そういう環境を前提にぼーっと考えてた (考えるきっかけはワクチンの時の待合室 AWSが何かと好きなのでAWSを前提にすると... DBはAurora Serverless APIサーバはFargate LBはALB 認証は...がんばって ユーザ向けのサーバはAWSじゃなくて(ぇ? Cloudflareで全部賄うとする ユーザのリクエストはCloudflare Workersで受けて、処理する CloudflareにDBとかS3互換のサービスとかあるので、その辺を上手に使いつつ APIサーバのリクエストが必要なときだけAPIサーバ… <p>高負荷とかホント嫌いなのに高負荷なサービスに関わる事が多いので、そういう環境を前提にぼーっと考えてた</p> <p>(考えるきっかけはワクチンの時の待合室</p> <p> </p> <p><a class="keyword" href="http://d.hatena.ne.jp/keyword/AWS">AWS</a>が何かと好きなので<a class="keyword" href="http://d.hatena.ne.jp/keyword/AWS">AWS</a>を前提にすると...</p> <p>DBはAurora Serverless</p> <p><a class="keyword" href="http://d.hatena.ne.jp/keyword/API">API</a>サーバはFargate</p> <p>LBはALB</p> <p>認証は...がんばって</p> <p> </p> <p>ユーザ向けのサーバは<a class="keyword" href="http://d.hatena.ne.jp/keyword/AWS">AWS</a>じゃなくて(ぇ?</p> <p>Cloudflareで全部賄うとする</p> <p>ユーザのリク<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A8%A5%B9">エス</a>トはCloudflare Workersで受けて、処理する</p> <p>CloudflareにDBとかS3互換のサービスとかあるので、その辺を上手に使いつつ</p> <p><a class="keyword" href="http://d.hatena.ne.jp/keyword/API">API</a>サーバのリク<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A8%A5%B9">エス</a>トが必要なときだけ<a class="keyword" href="http://d.hatena.ne.jp/keyword/API">API</a>サーバを呼び出す</p> <p>ちゃんとCloudflareで<a class="keyword" href="http://d.hatena.ne.jp/keyword/CDN">CDN</a>も用意する</p> <p>ここまでやって(<a class="keyword" href="http://d.hatena.ne.jp/keyword/AWS">AWS</a>の)DBサーバが上限になるようなら待合室を使って<a class="keyword" href="http://d.hatena.ne.jp/keyword/%C2%D4%A4%C1%B9%D4%CE%F3">待ち行列</a>を作る</p> <p> </p> <p>とすると...不要なタイミングでは安くて、でも高負荷にも耐えれるサービスが出来そうな気がした<span style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif;">(気がするだけです</span></p> <p> </p> <p><a class="keyword" href="http://d.hatena.ne.jp/keyword/API">API</a>サーバをLambdaじゃなくてFargateにする理由とかはあるけど、ちょっと文字数制限で書けないw</p> <p> </p> makotan コードジェネレータの分類2022 hatenablog://entry/13574176438074622574 2022-03-19T21:37:34+09:00 2022-03-19T21:37:34+09:00 ぼーっとしてたら増えたので、前のをまるっとコピペして追記 A型(type-A) Excel等のツールだけを使ってコード生成する Excelの式とかmacroとかを駆使する 定義と生成の距離が短い B型(type-B) 既存の何らかの定義を読み込んでコード生成する DBのSchemaとか、ソースコードとかを入力として使う 一種類の定義からかなりの種類の出力が出来る様になる C型(type-C) 専用の定義を使ってコード生成する 専用のエディタがあったり、yaml/jsonを入力として使う 定義した内容を使った定義が出来る 広範囲のコード生成が出来る D型(type-D) 入力と出力を渡すとその間… <p>ぼーっとしてたら増えたので、前のをまるっとコピペして追記</p> <p> </p> <p> </p> <p>A型(type-A)</p> <p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Excel">Excel</a>等のツールだけを使ってコード生成する</p> <p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Excel">Excel</a>の式とかmacroとかを駆使する</p> <p>定義と生成の距離が短い</p> <p> </p> <p>B型(type-B)</p> <p>既存の何らかの定義を読み込んでコード生成する</p> <p>DBのSchemaとか、<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%BD%A1%BC%A5%B9%A5%B3%A1%BC%A5%C9">ソースコード</a>とかを入力として使う</p> <p>一種類の定義からかなりの種類の出力が出来る様になる</p> <p> </p> <p>C型(type-C)</p> <p>専用の定義を使ってコード生成する</p> <p>専用のエディタがあったり、<a class="keyword" href="http://d.hatena.ne.jp/keyword/yaml">yaml</a>/<a class="keyword" href="http://d.hatena.ne.jp/keyword/json">json</a>を入力として使う</p> <p>定義した内容を使った定義が出来る</p> <p>広範囲のコード生成が出来る</p> <p> </p> <p>D型(type-D)</p> <p>入力と出力を渡すとその間を埋めるコードを生成する</p> <p> </p> <p>E型(type-E)</p> <p><a class="keyword" href="http://d.hatena.ne.jp/keyword/%B5%A1%B3%A3%B3%D8%BD%AC">機械学習</a>で実装を支援する</p> <p><a class="keyword" href="http://d.hatena.ne.jp/keyword/IDE">IDE</a>に組み込まれて意図を理解しつつ実装を支援する形</p> <p> </p> <p> </p> <p> </p> <p>1種(type-X1)</p> <p><span style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif;">生成した物は<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D7%A5%ED%A5%B0%A5%E9%A5%DE">プログラマ</a>には触らせない</span></p> <p>専用ツール上で動作するためのコードを生成する</p> <p> </p> <p>2種(type-X2)</p> <p><span style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif;">生成したコードは<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D7%A5%ED%A5%B0%A5%E9%A5%DE">プログラマ</a>変更する前提</span></p> <p>再生成は出来ない</p> <p> </p> <p>3種(type-X3)</p> <p><span style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif;">生成したコードは拡張ポイントを使って<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D7%A5%ED%A5%B0%A5%E9%A5%DE">プログラマ</a>が動作を変える</span></p> <p>再生成も可能</p> <p> </p> <p>たとえば・・・って書こうと思って例が懐かしすぎて止めたw</p> <p>型A,B,C</p> <p>種1,2,3</p> <p>はそれぞれ組み合わせが自由なので</p> <p>YYYってツールはtype-B2とかの表記が出来るよと</p> <p> </p> <p>今のところ自分が認識してるコード生成ツールがこの分類でどれかに当てはまってる</p> <p>そしてそんなことを考えてると言うことは・・・</p> <p> </p> <p> </p> makotan 安否確認の仕組みを真面目に考えてみた hatenablog://entry/13574176438073911582 2022-03-17T19:03:48+09:00 2022-03-17T19:03:48+09:00 安否確認の基本要件 安否確認が必要になったら自動で発動すること ユーザが一気に来ても耐えられる事 ユーザの事前登録(通知先、居所)が可能なこと (出来れば)マルチテナントで複数社が相乗り出来ること ユーザの管理そのものは管理者が行うこと 費用はなるべく安く! 安否確認の情報はなるべく本家に近いところから取得として... 気象業務支援センター Japan Meteorological Business Support Center 地震速報(警報)に限定すれば3万円あれば十分 真面目に探すとサードパーティっぽいAPIはもっと安いので上限はこのくらい ユーザの管理は色々面倒なので、Auth0あたり… <p>安否確認の基本要件</p> <p>安否確認が必要になったら自動で発動すること</p> <p>ユーザが一気に来ても耐えられる事</p> <p>ユーザの事前登録(通知先、居所)が可能なこと</p> <p>(出来れば)マルチテナントで複数社が相乗り出来ること</p> <p>ユーザの管理そのものは管理者が行うこと</p> <p>費用はなるべく安く!</p> <p> </p> <p>安否確認の情報はなるべく本家に近いところから取得として...</p> <p><a href="http://www.jmbsc.or.jp/jp/#gaiyou-online">気象業務支援センター Japan Meteorological Business Support Center</a></p> <p><a class="keyword" href="http://d.hatena.ne.jp/keyword/%C3%CF%BF%CC">地震</a>速報(警報)に限定すれば3万円あれば十分</p> <p>真面目に探すと<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B5%A1%BC%A5%C9%A5%D1%A1%BC%A5%C6%A5%A3">サードパーティ</a>っぽい<a class="keyword" href="http://d.hatena.ne.jp/keyword/API">API</a>はもっと安いので上限はこのくらい</p> <p> </p> <p>ユーザの管理は色々面倒なので、Auth0あたりにまるっと任せる方針として</p> <p><a href="https://auth0.com/jp">Auth0: Secure access for everyone. But not just anyone.</a></p> <p>費用はMAU(月間アクティブユーザ)なので、ほぼ10ユーザのアクセスもないんじゃ無いかと想定。最大アクセスはユーザ管理したい全員なので...金額はpriceページでどうぞ</p> <p> </p> <p><a class="keyword" href="http://d.hatena.ne.jp/keyword/API">API</a>へのアクセスは常時実施する必要があるので、Fargateあたりで常駐させる前提</p> <p>固定IPが必要な場合はNAT経由してと...</p> <p><span style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif;">ユーザ情報、事前登録情報、警報情報はまるっとDynamoDBで管理</span></p> <p>管理画面系は<a class="keyword" href="http://d.hatena.ne.jp/keyword/API">API</a> <a class="keyword" href="http://d.hatena.ne.jp/keyword/Gateway">Gateway</a> &amp; Lambda &amp; S3で構築</p> <p> </p> <p>安否確認とかト<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%EC%A1%BC%A5%CB%A5%F3">レーニン</a>グしないときの固定費がかかるのはこれくらい</p> <p>ユーザ毎の費用は無視すると10万円いかない程度?</p> <p> </p> <p>安否確認イベントが発生したら...</p> <p>登録ページを用意(S3)</p> <p>dynamodbにイベント情報を登録</p> <p>fargateの通知taskを実行</p> <p>戻りのURLはLambda@EdgeなURLにしてLambdaで直接DynamoDBに登録しつつ、集計</p> <p>一定期間の間、定期的にLambdaで管理者への集計結果の通知メッセージ&緊急対応が必要な人のリストを送信</p> <p> </p> <p>イベント発生時の費用はこれくらいなので...たぶん通知にかかる費用が一番高そうな程度でだいぶ安い</p> <p>ほぼ固定の費用はないし、リク<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A8%A5%B9">エス</a>トの上限も無視出来る(Lambda@Edgeのリミットに引っかからなければ)</p> <p> </p> <p>ということで実は<a class="keyword" href="http://d.hatena.ne.jp/keyword/AWS">AWS</a>とか<a class="keyword" href="http://d.hatena.ne.jp/keyword/SaaS">SaaS</a>使えば安否確認の仕組みって実装コストの方が圧倒的に高いだけだって事に気がついた夜中の<a class="keyword" href="http://d.hatena.ne.jp/keyword/%C3%CF%BF%CC">地震</a>でした</p> <p> </p> <p> </p> <p> </p> makotan 思いつきで書いたkotlinのコード hatenablog://entry/13574176438072043212 2022-03-12T09:26:19+09:00 2022-03-12T09:26:19+09:00 別に意味は無い internal fun enumConditon() { val noString = ConditionData("") assertEquals(noString.enum, CDEnum.NOSTRING) assertEquals("ERROR", perocessData(noString)) assertEquals("strが空です", getMessage(noString)) } sealed interface DataAddType class OK: DataAddType class ERROR: DataAddType class MISSING:… <p>別に意味は無い</p> <p> </p> <p>    internal fun enumConditon() {<br />        val noString = ConditionData("")<br />        assertEquals(noString.<a class="keyword" href="http://d.hatena.ne.jp/keyword/enum">enum</a>, CDEnum.NOSTRING)<br />        assertEquals("ERROR", perocessData(noString))<br />        assertEquals("strが空です", getMessage(noString))<br />    }</p> <p>    sealed interface DataAddType<br />    class OK: DataAddType<br />    class ERROR: DataAddType<br />    class MISSING: DataAddType</p> <p>    data class ConditionData(<br />        val str: String<br />    ) {<br />        val <a class="keyword" href="http://d.hatena.ne.jp/keyword/enum">enum</a>: CDEnum = CDEnum.test(this)<br />    }</p> <p>    <a class="keyword" href="http://d.hatena.ne.jp/keyword/enum">enum</a> class CDEnum(val condition: (ConditionData) -&gt; Boolean,val addType: DataAddType, val msg: String){<br />        OK(<br />            {it.str.isNotBlank() &amp;&amp; 10 &lt;= it.str.length &amp;&amp; it.str.length &lt; 50}, OK(), ""<br />        ),<br />        NOSTRING(<br />            {it.str.isBlank()}, ERROR(), "strが空です"<br />        ),<br />        LENGTH_OVER(<br />            {it.str.isNotBlank() &amp;&amp; 50 &lt; it.str.length}, ERROR() ,"strの文字長がオーバーしてます"<br />        ),<br />        LENGTH_MINI(<br />            {it.str.isNotBlank() &amp;&amp; it.str.length &lt; 10}, ERROR(), "strの文字長が不足してます"<br />        ),<br />        MISSING({true}, MISSING(), "判断外のエラーです");</p> <p>        companion object {<br />            fun test(data: ConditionData): CDEnum = values().first { it.condition(data) }<br />        }<br />    }</p> <p>    fun perocessData(data: ConditionData): String {<br />        return when (data.<a class="keyword" href="http://d.hatena.ne.jp/keyword/enum">enum</a>.addType) {<br />            is OK -&gt; "OK"<br />            is ERROR -&gt; "ERROR"<br />            is MISSING -&gt; "MISSING"<br />        }<br />    }<br />    fun getMessage(data: ConditionData): String = data.<a class="keyword" href="http://d.hatena.ne.jp/keyword/enum">enum</a>.msg</p> makotan SQLだけで 2WAY SQLっぽいことをやる hatenablog://entry/13574176438071903965 2022-03-11T20:18:21+09:00 2022-03-11T20:18:21+09:00 ぼんやりしてたらなんとなくイメージが沸いたのでちょっとやってみた 完全に同じ事が出来るかというと...微妙なのでっぽいこと 確認したのはpostgresqlだけ select * from table1 where (:v is null OR field = :v) ちょっとだけメモ :v に null を入れるとis null がtrue になって、この()内の条件が常にtrueになる :v が null 以外の時は field との比較になるので比較条件がチェックされる <p>ぼんやりしてたらなんとなくイメージが沸いたのでちょっとやってみた</p> <p>完全に同じ事が出来るかというと...微妙なのでっぽいこと</p> <p>確認したのは<a class="keyword" href="http://d.hatena.ne.jp/keyword/postgresql">postgresql</a>だけ</p> <p> </p> <p>select * from table1<br /> where (:v is null OR field = :v)</p> <p> </p> <p>ちょっとだけメモ</p> <p>:v に null を入れるとis null がtrue になって、この()内の条件が常にtrueになる</p> <p>:v が null 以外の時は field との比較になるので比較条件がチェックされる</p> <p> </p> <p> </p> makotan 技術に階層があるなぁって思った hatenablog://entry/13574176438052932401 2022-01-15T13:59:17+09:00 2022-01-15T13:59:17+09:00 ある技術Aを身につけるとして、それに必要な技術Bがあったときに、技術Bが他の技術のベースになってたり、応用に使えたりするのをよく見かける ということは、「ベースの技術」を多く身につければそれだけ応用の技術にも対応しやすくなるんだろうなぁ〜ってある日、ふとある人と話をしてて思った でも、目立つ技術とか流行の技術は応用の技術な事が多いから、ベースの技術は「いにしえの技術」って言われる中に埋もれて興味を持たれない様にも見える ベースの技術かどうかの見極めが出来る程度のエンジニアならベースの技術を理解してるだろうし、それを伝えたくても書籍含めて廃版だったりして色々大変な時代だ... 数学とかなら足し算… <p>ある技術Aを身につけるとして、それに必要な技術Bがあったときに、技術Bが他の技術のベースになってたり、応用に使えたりするのをよく見かける</p> <p>ということは、「ベースの技術」を多く身につければそれだけ応用の技術にも対応しやすくなるんだろうなぁ〜ってある日、ふとある人と話をしてて思った</p> <p>でも、目立つ技術とか流行の技術は応用の技術な事が多いから、ベースの技術は「いにしえの技術」って言われる中に埋もれて興味を持たれない様にも見える</p> <p>ベースの技術かどうかの見極めが出来る程度のエンジニアならベースの技術を理解してるだろうし、それを伝えたくても書籍含めて廃版だったりして色々大変な時代だ...</p> <p>数学とかなら足し算かけ算を理解せずに次に進めれないとかはわかりやすいのに、なんでソフトウェア開発はベースを身につけずに次に進めれるような気がしてしまうのか...</p> <p> </p> <p>そんな難しいことを考える2022年の1/24が過ぎ去ったある日の土曜日</p> makotan 2022年令和4年 あけおめことよろ hatenablog://entry/13574176438048179194 2022-01-01T00:37:54+09:00 2022-01-01T00:37:54+09:00 あけおめことよろ 去年気がついた事 自分のプログラミングの方法と他の人のやり方が違うっぽい(詳しくはわからんw) 西野七瀬かわいい 今年やりたいこと コロナに感染せずに元気に生活する 運動する(2021比で増やす) 仕事する 飛行機飛ばすのもう少し上手くなる 良い所に引っ越せそうなら引っ越す <p>あけおめことよろ</p> <p> </p> <p>去年気がついた事</p> <ul> <li>自分のプログラミングの方法と他の人のやり方が違うっぽい(詳しくはわからんw)</li> <li><a class="keyword" href="http://d.hatena.ne.jp/keyword/%C0%BE%CC%EE%BC%B7%C0%A5">西野七瀬</a>かわいい</li> </ul> <p> </p> <p>今年やりたいこと</p> <ul> <li>コロナに感染せずに元気に生活する</li> <li>運動する(2021比で増やす)</li> <li>仕事する</li> <li>飛行機飛ばすのもう少し上手くなる</li> <li>良い所に引っ越せそうなら引っ越す</li> </ul> <p> </p> makotan OSSとかメンテとかお金の話 hatenablog://entry/13574176438045104256 2021-12-23T20:13:00+09:00 2021-12-23T20:13:00+09:00 つい先日のOSSの巨大な脆弱性の話を見て 同時にそのOSSのメンテしてるのが主に2人って見て ぼんやり考えたこと... 世界中の先進国の新規開発と保守の予算の0.001%でもいいから使ってるOSSの寄付に回ればOSSの分野はいっきに成長しそうだなぁ〜っておもった 企業が人と予算を割り当てるような大規模OSSは良いと思うけど、小規模(かつニッチ)なOSSをやるとしたらそこにお金を出す人も居ないだろうしなぁ〜 Youtuberみたいにお金になればOSS開発したい!(この場合なにを?は置いておく)ってひとが出てきて、良いOSSなら贅沢は出来ないかも知れないけどお金になるみたいな流れになるともしかした… <p>つい先日の<a class="keyword" href="http://d.hatena.ne.jp/keyword/OSS">OSS</a>の巨大な<a class="keyword" href="http://d.hatena.ne.jp/keyword/%C0%C8%BC%E5%C0%AD">脆弱性</a>の話を見て</p> <p>同時にその<a class="keyword" href="http://d.hatena.ne.jp/keyword/OSS">OSS</a>のメンテしてるのが主に2人って見て</p> <p>ぼんやり考えたこと...</p> <p> </p> <p>世界中の先進国の新規開発と保守の予算の0.001%でもいいから使ってる<a class="keyword" href="http://d.hatena.ne.jp/keyword/OSS">OSS</a>の寄付に回れば<span style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif;"><a class="keyword" href="http://d.hatena.ne.jp/keyword/OSS">OSS</a>の分野はいっきに成長しそうだなぁ〜っておもった</span></p> <p>企業が人と予算を割り当てるような大規模<a class="keyword" href="http://d.hatena.ne.jp/keyword/OSS">OSS</a>は良いと思うけど、小規模(かつニッチ)な<a class="keyword" href="http://d.hatena.ne.jp/keyword/OSS">OSS</a>をやるとしたらそこにお金を出す人も居ないだろうしなぁ〜</p> <p>Youtuberみたいにお金になれば<a class="keyword" href="http://d.hatena.ne.jp/keyword/OSS">OSS</a>開発したい!(この場合なにを?は置いておく)ってひとが出てきて、良い<a class="keyword" href="http://d.hatena.ne.jp/keyword/OSS">OSS</a>なら贅沢は出来ないかも知れないけどお金になるみたいな流れになるともしかしたら<a class="keyword" href="http://d.hatena.ne.jp/keyword/buri">buri</a>も維持出来たのかなぁ...</p> <p> </p> <p>今だとSpringBuriになるのか?でもブリの旬って冬だよな...</p> <p>って、年の瀬にCVEって文字列を沢山見たのでちょっとおもった</p> <p> </p> makotan ドメインとかモデリングとか hatenablog://entry/13574176438042226440 2021-12-13T07:01:27+09:00 2021-12-13T07:01:27+09:00 モデリングとは e-words.jp ドメインとは kotobank.jp 企業が活動する事業領域の性質を抽出して、細部を簡略化したもの=ドメインモデリング その結果が、ドメインモデル <p><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%E2%A5%C7%A5%EA%A5%F3%A5%B0">モデリング</a>とは</p> <p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fe-words.jp%2Fw%2F%25E3%2583%25A2%25E3%2583%2587%25E3%2583%25AA%25E3%2583%25B3%25E3%2582%25B0.html" title="モデリングとは - IT用語辞典" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"></iframe><cite class="hatena-citation"><a href="https://e-words.jp/w/%E3%83%A2%E3%83%87%E3%83%AA%E3%83%B3%E3%82%B0.html">e-words.jp</a></cite></p> <p> </p> <p><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C9%A5%E1%A5%A4%A5%F3">ドメイン</a>とは</p> <p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fkotobank.jp%2Fword%2F%25E3%2583%2589%25E3%2583%25A1%25E3%2582%25A4%25E3%2583%25B3-6730" title="ドメインとは - コトバンク" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"></iframe><cite class="hatena-citation"><a href="https://kotobank.jp/word/%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3-6730">kotobank.jp</a></cite></p> <p> </p> <p>企業が活動する事業領域の性質を抽出して、細部を簡略化したもの=<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C9%A5%E1%A5%A4%A5%F3">ドメイン</a><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%E2%A5%C7%A5%EA%A5%F3%A5%B0">モデリング</a></p> <p>その結果が、<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C9%A5%E1%A5%A4%A5%F3">ドメイン</a>モデル</p> <p> </p> <p> </p> makotan 骨格 hatenablog://entry/13574176438040517777 2021-12-07T20:59:54+09:00 2021-12-07T20:59:54+09:00 最近、なにかを理解するときにまず概略を理解して、そこから骨格を抜き出して、そこから全体構造を理解する癖があることに気がついた 骨格を抜き出すのを失敗したり、わけわからない事が続くとうぎゃーってなってなかなか先に進めないしめっちゃ時間がかかるけどw 一般的なものはわりと出来るようになってて、楽なんだけど... どう考えても他人に伝わらないので困る そしてこれを理解するのに何年かけてんだって話ですねw <p>最近、なにかを理解するときにまず概略を理解して、そこから骨格を抜き出して、そこから全体構造を理解する癖があることに気がついた</p> <p>骨格を抜き出すのを失敗したり、わけわからない事が続くとうぎゃーってなってなかなか先に進めないしめっちゃ時間がかかるけどw</p> <p>一般的なものはわりと出来るようになってて、楽なんだけど...</p> <p>どう考えても他人に伝わらないので困る</p> <p> </p> <p>そしてこれを理解するのに何年かけてんだって話ですねw</p> <p> </p> makotan AAAを使う時代ではないとか、これからはBBBの時代だとか...の普通の感想 hatenablog://entry/13574176438020662795 2021-10-09T15:27:54+09:00 2021-10-09T15:27:54+09:00 twitterとかみてると、AAAを使う時代ではない。それが作られた時代には必要だったかも知れないけど今はもう必要なくなった とか CCCとかだとあんなこととかこんなこととかに対応出来ないからBBBの時代ですよ〜 みたいなのをたまに見かけるので... それの普通の感想...あんまり普通すぎてなんとなく書く気が無かったw たぶん、作るものが変われば色んな物が変わるのは当然なのでそれは良いんだけど、自分が作ってないからと技術を古いとか要らないものと表現するのは少々乱暴すぎるなぁ〜って思うこともある。 あと、新しい技術で全てがカバー出来る(完全上位互換)ならいいけど、ある程度取捨選択した結果もセット… <p><a class="keyword" href="http://d.hatena.ne.jp/keyword/twitter">twitter</a>とかみてると、AAAを使う時代ではない。それが作られた時代には必要だったかも知れないけど今はもう必要なくなった</p> <p>とか</p> <p>CCCとかだとあんなこととかこんなこととかに対応出来ないからBBBの時代ですよ〜</p> <p>みたいなのをたまに見かけるので...</p> <p>それの普通の感想...あんまり普通すぎてなんとなく書く気が無かったw</p> <p> </p> <p>たぶん、作るものが変われば色んな物が変わるのは当然なのでそれは良いんだけど、自分が作ってないからと技術を古いとか要らないものと表現するのは少々乱暴すぎるなぁ〜って思うこともある。</p> <p>あと、新しい技術で全てがカバー出来る(完全上位互換)ならいいけど、ある程度取捨選択した結果もセットにせずに特定の技術を推すのも怖いなぁ〜って思って見てる</p> <p> </p> <p>全ての技術にはTPOがあって、それが合わなければ使わない方が良いという事をもっとみんな意識した方が良いのでは?って思うことがまれに良くあるんですw</p> <p>釘と木で何か作るなら金鎚とノコギリが欲しいかも知れないけど、ネジと鉄板だったら金鎚とノコギリあっても意味ないでしょっていう話</p> makotan 仕事とかメリットとか hatenablog://entry/13574176438016829218 2021-09-28T22:23:10+09:00 2021-09-28T22:23:10+09:00 仕事(給料が確実にもらえる)としてやってる事自体が最大のメリットだと思ってたけど 世の中には仕事(給料が確実にもらえる)としても、追加のメリットが無いとやる気の無い人が居るっぽい そんなのをたま〜に見ることがあって 良い時代になったんだろうな って思った 自分がやる気のある事だけをやりたいなら 自分のやることに値段を付ける その値段でやって欲しい人を探して発注してもらう それを実施して請求して お金を確実に回収する っていうフローを回せばいいと思うんだ そしたら自分にメリットのある、やりたいことがやれるんだから 代わりに給料が確実にもらえるが消滅するけど、自分のやる気のある事を中心にやりたいこ… <p>仕事(給料が確実にもらえる)としてやってる事自体が最大のメリットだと思ってたけど</p> <p>世の中には仕事(給料が確実にもらえる)としても、追加のメリットが無いとやる気の無い人が居るっぽい</p> <p> </p> <p>そんなのをたま〜に見ることがあって</p> <p>良い時代になったんだろうな</p> <p>って思った</p> <p> </p> <p>自分がやる気のある事だけをやりたいなら</p> <ul> <li>自分のやることに値段を付ける</li> <li>その値段でやって欲しい人を探して発注してもらう</li> <li>それを実施して請求して</li> <li>お金を確実に回収する</li> </ul> <p>っていうフローを回せばいいと思うんだ</p> <p>そしたら自分にメリットのある、やりたいことがやれるんだから</p> <p>代わりに給料が確実にもらえるが消滅するけど、自分のやる気のある事を中心にやりたいことを、好きな量やれる方が幸せなのでは?</p> <p> </p> <p>こんな風なことを言ったら多分<a class="keyword" href="http://d.hatena.ne.jp/keyword/%CF%B7%B3%B2">老害</a>扱いされるのも知ってるw</p> <p>なので、もう一つの方法をメモしておく</p> <p> </p> <p>自分がやる気のあることだけをやりたいなら</p> <p>それを評価してくれる所を常に探す</p> <p>きっと世界中探せばどこかにはあるよ</p> <p> </p> makotan