技術
これまでの各記事は、以下から。 開発プロセスの捉え方について ソフト開発における「設計」とは何なのか。(その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スクリプトを簡単に同期してくれる…
技術同人誌を書いてサークル参加すると必要になるのがサークルスペースの設営。 本を置いて値札をつけておけば最低限の設営にはなるけど、それだとちょっと味気ない。 かといって大掛かりな設営をしようとするとなかなか大変。 設営や片付けに使える時間も限…
ウマ娘から実際の競馬に興味を持って、最近はむしろ実際の競馬の方が面白いくらい。 そんな中でちょっと最適化問題を解くことがあったので、今日はその紹介をしてみたい。 これは数理最適化 Advent Calendar 2022の2日目の記事です。 的中したのにマイナス!…
8/24(水)におなじみラスクさんのLT会で『処理から設定へ』というLTをしてみた。 この「処理を設定に抜き出すことで見通しをよくする」という手法、たぶんみんな無意識にやってるんだけど、ちゃんと名前がつけられていない印象。 本とかでも見たことない気が…
だいぶ経ってしまったけど、8/4(木)にラクスさんで『asyncioが地獄だった件』というLTをした。 以前のLT(『Pythonでリファクタリングできなかった話』をLTしてみた。 - いものやま。)を反省して、asyncioの詳細には踏み込まず、Requests-HTMLというライブ…
昨日、リファクタリングに関するLTをしたことさんの発表に関していろいろ思ったことがあったので、ちょっと書いておきたい。 nikkieさんのスライドはこちら: 発表概要 詳細はスライドを見てもらうとして、ざっくりいうと「リファクタリングする場合、驚くほ…
もう定番になってるけど、今回もLTしたよって話。 発表したスライドは以下: ただ、今回の発表はちょっと反省が多くて、さすがに内容がマニアックすぎた(^^; 実際にあった話をベースにしてたのでPythonの中級〜上級向けの内容になってしまっていて、Pyth…
7/13(水)に、株式会社ラクスさんの主催する勉強会「エンジニアの勉強法ハックLT vol.9」でLT登壇してみた。 話したのは『技術同人誌はいいぞ』というLT。 アウトプットの手段として技術同人誌は面白いので、ぜひいろんな人にチャレンジしてほしい。 ちなみに…
6/29(水)に、株式会社ラクスさんの主催する勉強会「オブジェクト指向LT会 vol.4」でLT登壇してみた。 話したのは『「サブジェクト」で考えるオブジェクト指向』というLT。 ここでは設計に関してだけ言及してるけど、主語に注目した方がいいというのはもっと…
これまでの各記事は、以下から。 Pythonの四捨五入で四苦八苦した話。(その1) - いものやま。 ビルトインのround()の問題点 普通の四捨五入の実装 Pythonの四捨五入で四苦八苦した話。(その2) - いものやま。 普通の四捨五入の実装の問題点 PyPIにあるパ…
前回のあらすじ:Rubyの四捨五入すごい。PyPIにあったパッケージどれもダメ。 Rubyでの四捨五入のアルゴリズム さて、そんなわけで、Pythonがどうしようもなかったので、なぜか誤差なく四捨五入できてたRubyでの実装を調べてみた。 Rubyでの四捨五入は、nume…
前回のあらすじ: Pythonのビルトインのround()は普通の四捨五入とは違う偶数丸めというものだったので、floor()を使って普通の四捨五入を実装したよ。 誤差との戦い と、まぁ普通はここまでなんだけど、いろいろ試すと「あれ?」ってなるケースが出てくる。…