技術
前回、前々回は関数型に関する話だったけど、今回はその他で感じたことに関して。 データベースの重力 オブジェクト指向の理解を妨げる原因の一つとして、データベースに引っ張られがちというのがありそう。 この発表ではそのことを指摘してた: 前回の記事…
前回の続き。 発注システムの例 この発表では代数的データ型の例として発注システムの例を挙げている。 簡単にいうと、注文にはいろいろ状態があって、状態ごとに持つべきプロパティやできることに違いがある、と。 そこで、それぞれの状態の直和型を注文型…
気づいたら4ヶ月も経ってたけど、OOC2024の動画を見て思ったことの続き。 関数型DDD 今回の発表で関数型に関した発表がいくつかあった: 関数型の考え方自体は局所的に使えることもあるので知っておいて損はないと思うけど、オブジェクト指向で知られたテク…
Pythonでいい感じに使えるタスクランナーがなかったので自作したのがkumade。 今回、いくつかの機能を追加実装してバージョンアップした。 追加実装した機能 kumadeはデータ分析、アルゴリズム開発の実務でも使ってたりするんだけど、実際に使ってるといくつ…
この時期毎年恒例になってきた未踏ジュニアの成果報告会。 今年も11/4(祝)に開催されていたので、行ってきてみた。 成果報告会@東京大学 ちなみに採択されたプロジェクト一覧は以下で、発表の様子は動画で見ることもできる。 生成AIの使い方の変化 去年の感…
Object-Oriented Conference 2024 (OOC2024)が3/24(日)に開催されたんだけど、そのときの動画がアップされてきてる。 それらの中からいくつか気になるものをピックアップして感想とか補足を書いてみたい。 まず取り上げたいのはミノ駆動さんの『クソコード動…
技書博10で配ったフリーペーパーの内容をブログにも書いておく。 = 組版? といえば普通は組版を思い浮かべると思う。 けどが実際にやっているのは一列に並んだトークン(≒命令)を順に処理しているだけだったりする。 組版できるのはそういった命令の中に組…
『Pythonでスラスラわかる ベイズ推論「超」入門』を読んでみたので、軽く感想とか。 Pythonでスラスラわかる ベイズ推論「超」入門 (KS情報科学専門書)作者:赤石 雅典講談社Amazon 概要と感想 ベイズ推論の本はいろいろあるけど、この本は理論というよりツ…
プログラミングで時間を扱おうとすると出てくるのが「日付」と「日時」。 これらに関してちょっと考えたことがあるので、その話をしてみたい。 「日付」と「日時」を構成するデータ 「日付(date)」を構成する要素を考えると「年(year)」「月(month)」…
3/24(日)にお茶の水女子大でObject-Oriented Conference 2024 (OOC2024)が開催された。 今までカンファレンスで発表したことはなかったんだけど、オブジェクト指向に関する話を発表できる機会ということで、せっかくだからとプロポーザルを出してみた。 そし…
これまでの各記事は、以下から。 開発プロセスの捉え方について ソフト開発における「設計」とは何なのか。(その1) - いものやま。 「製造業へのたとえ」で生じる混乱 ソフト開発における「設計」とは何なのか。(その2) - いものやま。 「設計書=ソース…
前回はアジャイル開発に関する話や実現可能性の話を書いた。 今回はプロセスの話ではなく、ソフトウェアをどう考えて設計するといいかについて。 オブジェクト指向分析設計 今ソフトウェアの設計の話というと、ドメイン駆動設計(Domain-Driven Design, DDD…
前回は設計書に何を書いたらいいのかについて書いた。 今回は設計に関して少し補足をしたい。 アジャイル開発と設計の話 ここまででかなりじっくりと要件定義と設計の話をしてきているので、これはウォーターフォール開発向けの話だと思っている人も多そう。…
前回はユースケース記述について書いた。 今回は設計書に書いた方がいいことについて。 設計書に書くといいこと 実際のところ、設計書に何を書いたらいいのかを画一的に述べるのは、かなり難しい。 というのも、ソフト開発における「設計」とは何なのか。(…
前回は要件定義のやり方について書いた。 今回はそれに付け加える感じで、ユースケース記述の話。 ユースケース記述 ユースケース記述というのは、システムがどのように使われるのかという一連の流れを書いたもの。 一例を挙げると、たとえば「ユーザがログ…
前回は、要求と要件の違いは「主語」で、それぞれを考えるときには視点を切り替える必要があることを書いた。 今回はそれを踏まえて要件定義のやり方を書いてみたい。 要求の深掘り 開発はお客さんから「〜〜がしたい」とか「〜〜機能がほしい」とか言われて…
前回は以下のようなことを書いた: 開発は「Why(要求)→What(要件)→How(設計)」の順にブレークダウンしていく必要がある ブレークダウンでは複数の選択肢が考えられるので取捨選択が必要 選択した方針が間違ってないかのコミュニケーションが必要で、そ…
前回は、開発とはソースコードの差分を作ることであり、設計書とはその差分をどう作るか説明する文書であることを書いた。 そのうえで、設計書が本当に必要なのかどうかを考えていきたい。 設計書は必要か? そもそも「設計書は必要なのか?」という疑問がな…
前回は「ソースコードを説明する文書」は「設計書」ではなく「開発者向けドキュメント」にすぎないという話をした。 では、結局「設計書」とは何なのかというのが今回のお話。 ソフトウェア開発の特異性 ソフトウェア開発では、製造業での開発と全然違う点が…
前回は、人間には読みにくいソースコードの説明を与えるのが、いわゆる「設計書」ではないかという考えを紹介した。 ただ、この考え方はまた別の問題を生み出してしまう。 腐る設計書? ソフトウェアは作って終わりというものではなく、作ったあともバグ修正…
前回はソフトウェア開発を「製造業へのたとえ」で考えると設計書の立ち位置がよく分からなくなるという話をした。 今回はその続き。 設計書=ソースコードの説明書? 「ソフトウェアの設計書」は「いわゆる『設計書』」ではなく「ソースコード」という話を書…
ソフトウェアを開発してると、「設計って何をやればいいの?」とか「どうやるべきなの?」という話が出てくると思う。 場合によっては「設計っていらなくね?」とかも。 自分もこれまでにいろいろ考えてきたので、設計や開発プロセスに関して「こうやるとよ…
だいぶ時間が空いてしまったけど、11/3(祝)に未踏ジュニアの最終成果報告会があったので、行ってみた。 その感想とか。 ちなみに、動画はYouTubeでも公開されているので、そちらからぜひ: 生成AIの躍進 未踏ジュニアの成果報告会は毎年見てて、そのレベルの…
技書博のアドベントカレンダーで何を書こうかなと考えていたんだけど、まとまったアウトプットの形として技術同人誌だけでなく技術動画というのもあるのではと思い立ち、今日はちょっと技術動画について話してみたいと思う。 これは技術書同人誌博覧会 Adven…
Python製のタスクランナーを作ってみたので紹介。 タスクランナーとは タスクランナーとは、よく行う処理をタスクとして定義しておいて、コマンドラインから簡単に実行できるようにするツール。 ビルドのときに使われることが多いので、ビルドツールと呼ばれ…
技術書典14の新刊として『オブジェクト・ウォーズ』を書いた。 このとき、組版システムとしてVivliostyleを使ってみたので、その感想とか。 Vivliostyleとは 本を作ろうとすると文章のレイアウト(組版)が必要になって、そのために使われるのが組版システム…
前回はPythonでPlaywrightを使ってJRA公式サイトからオッズの取得をしてみた。 今回は同様にJRA公式からレース結果を取得してみる。 準備 といってもコードはほとんど前回のオッズ取得と同じ。 なのでまずはライブラリのインポートなど必要な準備から。 impo…
競馬でデータ分析をしていくためにまず必要となるのがデータの取得。 今回はPythonでオッズの取得をやってみた。 Playwright データの取得はいろいろ考えられて、Web APIが使えればそれが一番早いんだけど、残念ながら使えなさそう (公式でJRA-VANというの…
データ分析で必須ともいえるのがJupyter Notebook。 ただこれをバージョン管理しようとするとなかなか大変だったりする。 そこでJupytextというツールを使ってみた。 どんなツール? すごく簡単に言うと、NotebookとPythonスクリプトを簡単に同期してくれる…
技術同人誌を書いてサークル参加すると必要になるのがサークルスペースの設営。 本を置いて値札をつけておけば最低限の設営にはなるけど、それだとちょっと味気ない。 かといって大掛かりな設営をしようとするとなかなか大変。 設営や片付けに使える時間も限…