08/02周辺の心模様

8/2

23:30くらいになって起きた。夕飯を食べた後22:00頃に、眠すぎて衝動で布団にDiveしてから寝ていたらしい。起きたら起きたでセミがミンミン叫んでいる。生殖に対して苛立ちが抑えられなかったのか、音の在処を探す。窓を開けて周囲を探してみるとサッシに挟まって鳴いていた。空のペートボトルを使ってつついてベランダから追いだそうとする。意外としぶとい。というか、もうだいぶ死期が近いのか、それともセミにとってもベランダの手摺りの空いた部分は狭いのか、手摺りから出て行かず、隣の部屋のほうへ飛んでいってしまった。

寝起きがかなり悪いほうだったので、気分を晴らそうと冷蔵庫を開けて、ほろよいのひんやり梨とパインとで若干逡巡したのち、ひんやり梨を連れてきてプルタブを引くと、カシュッと軽い音を奏でて開いた。

感想

最近は10:00頃起きて朝飯食べて14:00まで寝るという退廃的な生活をしている。おかげで精神が蝕まれている感覚がある。Pokemon Sleepを開くと夕方にはポケモンが眠たそうにこちらを見ている。そんな状態でジャンプしたりするのは心が痛いなどと思いながら、木の実を回収している。そんな感じである。

朝はいつもグラノーラとバナナと相場が決まっている。安いし飽きないから。さらに、グラノーラにヨーグルトを混ぜている。低脂肪乳はそのままでは飲めたものじゃないし、牛乳も以下同文。牛乳は普通に飲めたハズなのに、ここ1年半で味覚が大分変化してしまったことに驚きを覚える。

でも、夕飯のメニューが固定化されるとかなり精神にくる。よくわからないけれど。最近は冷食の唐揚げ、サラダ、キムチと、納豆。固定化されてきている。今日はうどんもあったな。まああまり変わらないけど、鬱屈としてくる。

7月も終わってしまうし鬱屈としている

この動画を見て、日記を書こうと思ったので。


www.youtube.com

あと、友人の日記を見て、「お前言いだしっぺなのに脱落してんじゃねえよ」と言われた気になって筆を取ってみる。

bunnoichi.hatenablog.com

作っている日記専門のblogシステムの開発も停滞していてまだ使えないので、ここに書いてみる。

せっかくだし、上の動画が言ってた感想禁止縛りでやってみようじゃないの。

7/29

太陽も本体がもうすでに西の果てへ行ってしまったくらいの時間帯になって、大学の図書館へ行こうと自転車を漕ぎだした。最寄りの交差点で、工事車両が荒々しく交差点に侵入してきたのに腹を立てながら横断歩道を渡りきったとき、点字ブロックの近くにある植え垣に花が立て掛けられてあるようにおいてあった。最初はなんでだろうと思ったけど、横にワンカップ大関が2つ花を挟むように置いてあった。もしかしたら、事故現場だったのかもしれないと思って通りすぎた。 大学図書館へは学生証を忘れたから入れなかった。

大学でたまたま出会った後輩とカレー屋にきた。確か、ミックスベジタブルカレーとバターチキンカレーを食べた気する。その後輩とは、後輩が作っていたYouYubeアプリ的ななのかの話、SemanticWebの話をしていた気がする。

深夜丑三つ時ごろにTwitterでspaceを始めた。Twitterで知り合った人と推薦システムや検索エンジンの外に出ることの重要性であるとか、そこから発展して偶然性を含んだ推薦システムを構想できないかとか、物事を考えて手を動かしてものを形にするという流れを意識していたような気がするんだけど、哲学と技術はいかにして接近するべきなのかとか、知識の体系化や知識をどのようにしてdumpされるべきなのかみたいな話をした記憶がある。たしか片手にほろよいのさくらんぼロゼを持っていてそこそこ酔っていた気がする。

7/30

この日はSecHackのゼミがあった。5分で調べてきたことを発表する。テーマは機械学習。私は金曜、土曜あたりから教師あり学習を実演して見せようとおもって、『Pythonではじめる機械学習』を参考に、その手の分野では有名はirisというデータセットを学習させて、SVMを使ってirisの品種を分類予測し、評価し、改善させてみようとした。スライドを書き出すのが遅くて、及第点にギリギリ届かないくらいの完成度。

calil.jp

他の人は人工知能の知能とは何か?ということを突き詰める内容で発表していたりした。

夕方にはAndroid開発もくもくと題して、Googleが用意している「Composeを用いたAndroidアプリ開発の基礎」というAndroid開発のコースを私はZoomに画面を共有しながら、ぶつぶつ独り言を垂れ流しながら、1時間半くらいやっていた。確か、Kotlin言語の基礎部分をずっとやっていた。

developer.android.com

その後は何をする訳でもなく、ぼーっと放心していた。夕御飯を食べたのはお腹が減ってどうしようもない24時を回ってからだった。夕食は冷食の唐揚げとキムチと御飯にした。

寝ながら汽水創パイセンと、停滞ぎみの日記専門のblogシステムの開発について話していた。ある程度はできていて公開できるところまではもっていけているので早々に公開したいよねとか、日記をもっと書きやすくするにはどうすればいいか?スマートスピーカーと対話してもおもしろそうだとねえとか、twitterっぽく短文が書けるようにしておきつつ、それを他人に公開するのは定刻1日1回にするとかどうだろうとかを話した。一方的に話してた気もする。汽水創パイセンがトピックモデルをやっているので、そういう機械学習をいいかんじに取り込めたらおもしろそうだよねとかも話したかな。前の日のspaceに影響されてレコメンデーションエンジンの話もしたな

7/30

今日はなにもしていなかった。強いて言うなら昼まで寝ていた。あとは締切ギリギリ間に合わなかったシステムプログラムの課題提出だった。課題は定番のCGIでカウンターを作ろう!というものだった。締切まで時間がなかったので、実際にページへの掲載も、flockを使った排他処理も実装できなかった。ギリギリ提出!と言って出したのは17時56分。56分遅れ。

今日も晩御飯に辿りつくまでにたいそうの時間がかかった。3:00になって松屋入店・着席。はじめて松屋の豚汁をすすった。蓮根、飴色の玉ねぎが入っている。蓮根のしゃきしゃき感、玉ねぎの甘くとろっとした食感、噛み切れる弾力の豚肉。汁は熱く、やけどしそうになったり、汗が出そうになるも冷えた玄米茶で流す。

言い訳をさせてくれ

ここからは思っていることを書く。

最近は院試前というのもあってあれこれに手がつかない。何をしようにもあれやんなきゃが付いて回って、取るもの手に付かず。かといっても院試対策をしようにも研究をしようにも以下同文。本当に気合いが出ない。本当にこれで大学院に行っていいのか?という自問自答がここ数週間ずっと頭を駆け巡っている。研究をしようと机に向かう、研究室に行くが本当にできない。常に現実逃避することばかり考えている。卒業をしようにも研究成果を出す必要がある。休学してモラトリアムを獲得したいけど、それでは結局卒業を1年くらい先伸ばしにしているだけじゃないかと思ってどうにもならない。そんな感じです。

追記

NONA REEVESの「ガリレオ・ガール」に元気をもらってる。

あとチャットモンチーね。

2022 年度に受けた講義でおもしろかったやつ挙げてけ

はじめに

履修も大詰めということで、昨年度受けた講義で選択科目であるものをピックアップしてまとめてみる。 ここで取り上げるのは印象に残った講義、言語化できる講義になる。 それらを、講義の根底にあるであろうQuestion、課題内容と、感想をそれぞれ書いていく。

あと、昨年度(の特に春学期)はオンデマンドメインで課題の形式や内容が異なる可能性があるので注意されたい。

前提

私は図書館に敬意を持ち、プログラミングに抵抗がなく、基本的には興味のある科目を取っていることに注意されたい。 図書館に興味がない、または、プログラミングに抵抗がある場合は注意するべきである。

また、私の2022年度の履修は以下のようであった。

知識情報概論

Question: 知識情報・図書館学類が扱う領域とは何か?

内容

人工知能と教員の会話ベースで、そのやりとりがおもしろい。 KLiS がやっていることの全体像がおおまかに掴めるような気がする。

課題

確か、課題はなく、テスト100%だったような気がするが、そこまで難しいわけでもなかった。

ディジタルライブラリ

Question: 「Google があれば大学図書館は不要か?」

内容

  1. KLiS の扱う一分野である学術情報流通の一端を見ることができる

感想

知識情報概論担当の教員が講師をしていることからわかるように、教員の話がおもしろい。 また、担当教員はTulipsの設計に携わっていたため、後半にはTulipsの設計思想について語ることがあるが、ここでは筑波大学図書館のシステムの先進性を知ることができ、おもしろかった。

Web プログラミング

Question: 「Web はどのように進化してきたか?」

内容

具体的には、IETF RFC の基礎から始まり、HTTP の規格の基礎をやってから、 CGI から始まって、AjaxJSONP など今の Web がどのように進化してきたを解説する講義になります。

課題

去年は課題と最終レポートで成績が決まった。 自分としてはやや難しい課題であったが、周りを見ると、課題はやや厳しめだった?ような気がする。 最終レポートはおおまかな内容としては講義をまとめるようなもので、10000 字程度だったような気がする。

感想

教員の脱線で始まる昔のインターネット、Webの話が好きだった。

知識論

Question:「哲学において知識とは何か?」

内容

具体的には知識情報概論で触れられていた、プラトンの「Justify Truly Brief」(正当化された真なる信念)の穴を突いてきた人々の歴史をたどるようなものとなる。

課題

毎回の講義後に、内容をまとめるような小レポートが出される。さらに、最終レポートで全体をまとめるような内容が出題される。 教科書が割と平易で読みやすいのはよかった。

ソフトウェア工学

Question:「人間にとって開発しやすいソフトウェアアーキーテクチャ(デザインパターンは?」

内容

デザインパターンVCSアジャイル開発などを取り扱う。 特にデザインパターンを扱うことが時間的に多かった。 人間が開発、メンテナンスしやすい設計、ツールについて学ぶ

課題

毎回の講義後にトピックに関連する課題が出され、最終レポートでは講義で学んだことを生かして過去作ったものを改善する手法について記述する。

ビジネスシステムデザイン A ・ B

Question:「ユーザにつかってもらえるサービスはどのように作ればいいのか?チーム開発はどのようになされるべきか?」

内容

通称 enPiT。 詳細はここを参照するとよいかも?

eniehack.hatenablog.com note.com

メンターによって雰囲気が変わりやすい講義のような気がしている。 今年は、かなりプロダクト目線のメンターが多く、技術的な指摘をするメンターは少なかった。来年はどうかはわからない。メンター陣を見る限りでは、2023 年度は技術寄りになりそうな気がしている。

感想

でも、顧客のためのソフトウェアをどう作るか?という視点を得られたのはよかった

知識情報演習 I

Question:「目録をデータベースに落とし込むにはどのような型であるべきか?」

内容

前半は、NII の目録総合データベース、NACSIS-CAT のスキーマを学ぶ。

後半は、Python、Flask と Google Colaboratory を使って OPAC もどきを作る。 プログラミングに苦手意識があると、やや難しいような気がするが、教員からのサポートは受けられるし、Teams で質問しても帰ってくるのでドシドシ使うとよい。 この出来によっては学類から表彰されるので頑張るとサイトに掲載されるので、対外的なウケもよさそうな気がする。

感想

表彰されたし、開発もできたしで個人的には満足だった。

知識情報演習 II

Question:「リファレンスサービスはどのようになされるのか?」

内容

司書は本の貸出係ではなく、リファレンスサービスという利用者の探し物を手伝うのが本質である、と個人的に勝手に思っている。 そのリファレンスサービスを行うにあたり、その情報源をどのように使えばよいのかなどを課題を通して実践的に学ぶことができるのが前半。

後半はその技能を応用して、パスファインダーを作る。 パスファインダーとは、特定テーマの調べ物を手助けするためのリーフレットまたは Web ページのことで、多くの公共図書館大学図書館がネットで公開している。 ここで使うのは HTML、CSSJavaScript で CJE1 よりも比較的プログラミングの難易度は下がる。

課題

毎週レポート課題が出される。 前半の最終レポートは夏休みの課題として実際にリファレンスサービスをやってみる課題(問いに対して答える)が出されます。 後半は自分の好きなテーマに関するパスファインダーを作る課題が9週目で出るのが一番時間のかかる課題かなあと思います。

Human Information Interaction

Question:「人間と情報はどのような関わりを持っているのか?」

内容

Questionがかなり抽象的でわかりにくいが、1つ挙げるとするなれば、本、GoogleSNS から人間は情報を得ることが多いが、その時どのように経過を経て情報を得るのか?ということを扱う。人間がわからない概念と直面するとき、どのようにしてそれを理解していくのか、というプロセスについて扱う。

方式

講師は留学経験のある日本人の先生だが、テキストや講義動画は全て英語である。 レジュメになっている講義動画を見て、テキストを黙々と読み、課題を解くというのが毎週の流れになっている。

課題

毎週manabaの小テストで課題が出される。締め切りが短く難しい問題が多い。たいていの場合は10題であることが多い。

テクニカルコミュニケーション

Question:「取説はどのようにして作られるのか?どのように作るべきなのか?」

内容

2 人の講師が、使用説明の作るプロセスについて座学の説明と、実際に使用説明を作る実習の部分をそれぞれ隔週で担当するような形で展開される。

課題

当日19:00までとか、翌日18:00までとか提出期限が短い。 さらに、座学ほうがスライドが多いことがあるので講義を詰め過ぎるとかなりキツいので気をつけたほうがよいかも。

比較憲法

「各国の憲法日本国憲法と比べてどのように違っているのか?どのようにしてそのような構造になっているのか?」

内容

各国の憲法を比較しながら学ぶことができ、講義の前の回で登場した憲法との比較なども行うまた、その憲法の条項が作られた背景も解説される。

講義の流れとしては、以下の通りである。 まず、座学の講義を受ける。次に与えられた問いに対して、ディスカッションする。最後にディスカッションの結果を全体に発表する。

感想

人文・社会系の講義を初めて受けたので、ディスカッションをする講義に新鮮さを感じた。 質問をしても講師の先生もTAの方も優しく答えてくれるので、モチベーションが爆上がりだった。

知識コミュニケーション

この講義は2つの問いがあるような気がしている。

  • 「コミュニケーションをどのように分析するか?」
  • 「さまざまなコミュニケーションがそれぞれどのように捉えられてきたか?」

内容

コミュニケーションの分析手法について解説した後、

課題

講義履修者は1度は読書課題を行う。これは、先生が選んだ参考図書から1つの図書を選び、おもしろかった点についてスライドにまとめて発表する、というものである。

また、語句の意味を問うものと、小論文で構成されるテストが期末に行われる。

感想

読書課題の課題図書はおもしろいものばかりで発表を見ていてとてもおもしろかった。普段では知ることのできないことについて知ることができるのでたのしい。

図書館建築論

「図書館の機能を最大限引き出すデザインとは何か?」

内容

海外の図書館や講師の作った図書館などから、図書館のデザインについて考える。 ここにおけるデザインとは「ものの機能を最大限に引き出すフォルム(またはその他の工夫)」と「見てくれ」の双方について議論するのだが、前者があってこその後者というスタンスをとっていて、かなり好感が持てる。 建築家の方が講師だが、図書館に対して尊敬しているというのがステキポイント。

課題

講義内で完結するレポートのみ。 毎回のレポートと最終レポートがある。毎回のレポートでは講義内容についての感想がメインで、最終レポートは要約すれば「ぼくの考えたさいきょうの図書館」の企画書を書くというテーマになる。最終レポートは9回目に書いて10回目に優秀な企画書がピックアップされその中から優秀賞を決めるという感じになる。

感想

図書館に愛着があるほうなので、普通におもしろかった。 知識科学主専攻開設だけど、資源生が好きそう。

おわりに

KLiSの講義は基本的におもしろい講義ばかりで受けててたのしかった。 取りすぎ詰め込みすぎて死にそうだったけど……。

本年度は自分の興味に従った履修をしていきたい。 あとは、履修しない勇気をしっかり持つこと。それが大事。昨年度の教訓。 ジャックダニエルコーク缶をほぼ飲み干し、まぶたが重くなっているのでこのへんで。

enPiT BizSysD 分野別ワークショップ 2023@盛岡に参加してきました

わたしは「注文の多い料理店」のメンバーとしてAgile PBLの講義に参加してきました。

eniehack.hatenablog.com

講義の中で優秀賞をいただいたこともあってか、「enPiTの分野別ワークショップに出てみないか」という声がかかり、今回盛岡に連れていっていただきました。

www.enpit-ws.com

この記事では、参加してきた分野別ワークショップに参加してきた感想について主に書いていこうと思います。

続きを読む

「注文の多い料理店」のオーナーを「退職」しました

私はソフトウェア開発手法の 1 つであるアジャイルや、ユーザ目線でのプロダクト開発手法などを学ぶ enPiT の講義を 1 年間受けてきました。

講義で「注文の多い料理店」のオーナー(プロダクトオーナー)を 1 年続けてきたのですが、講義としてはこれで終わりとなり、半年間(通算 1 年)の開発期間も一区切り、という訳で、料理店から「退職」するまでをまとめます。

春: れしぴコンパス

春学期の合宿では、れしぴコンパスというものを作った。 エレベータピッチは以下の通りである。

[れしぴコンパス]は[楽にレシピを決められ、楽に料理したい]を 解決したい [自炊をしている大学生]向けの [レシピ検索サービス] です。 これは [食材や調理法で検索する] によって、 [レシピ共有サイト、リンク集や、まとめ記事] とは違って [楽なレシピを短時間で決められる] を実現できます。

レシピコンパスは食材名からレシピを検索する Web サービスである。 Heroku で動かしていたので、このれしぴコンパスはもう動いていない。 ソースコードここから見ることができる。

確か、アイデアの段階では、

  • つくばのスーパーには、一人暮らしの大学生には量の多いほどの野菜が入っているよね
  • 6 限が終わってから料理を作るのってやる気が起こりにくいよね

といったような話が出ていた。

そこで、レシピ検索サービスの中でも、食材をいかに簡単に調理できるかという部分に焦点を当ててプロダクトを作ることとした。 冷蔵庫にある大量を食材を消化するにはどうすればよいかをチームで考えた結果、レシピ名ではなく、食材名でレシピを検索する方法がよいのではないかということで、食材名で検索するシステムとした。

次に、cookpad やクラシル、delishkitchen などレシピ検索サイトは今やかなりの数あり、これらを横断的に検索したいという話も挙がった。

3 つ目に、楽に調理できるレシピでは豆板醤などあまり使いどころがなさそうな調味料がよく使われるという話が挙がり、食材で検索しつつも使わない食材を含むレシピを省く機能も必要だという話になった。

秋: cook りさん

エレベータピッチは以下の通りである。

[cook りさん] は [飽きずに冷蔵庫の食材を使い切りたい]を 解決したい [自炊するものの買い物に行くのが面倒な大学生]向けの [レシピ検索サービス] です。 これは [最近作ったレシピや家にない食材をはじくこと] によって、 [レシピ共有サイト、まとめ記事、検索エンジン] とは違って [今ある食材の中でバリエーションに富んだレシピを提案できる] を実現できます。

cookりさんはレシピを検索できる Web サイトで、様々なレシピ掲載サイトを横断して検索することができる。 また、使いたい食材名を選択して、レシピを検索する。 GitHubここにある。

スマートフォンで検索することを想定したため、できるだけキーボードを使わず、タップだけで検索が完結できるようになっている。

これは最終報告会で用いたスライドである。 個人的にはグループでやったことを「オペレーション」と書こうといったギルドくんの発案や、なおとくんのロゴにネコがあったりと、スライドに世界観が詰め込まれていてとても好きである。

世の中には沢山のレシピ検索サイトがある。しかし、cookpad やクラシルなどには他社のサイトを横断して検索できない。

ここで、横断検索するには Google などの汎用検索エンジンを使えばいいじゃないかという話が上がる。実際、春学期のユーザインタビューでもそうやっている人はいたし、秋学期でもレビューで質問されることは多かった。

しかし、Google は、論理演算を演算子を用いて検索することができるが、それらは正しく行われていないという話を講義で聞いた。

そのため、cook りさんでは、テキストボックスでをもう 1 つ追加して表示することにより、見えやすい形で表示するようにした。

夏の発表会で、教員に「無いものを列挙することはできない」とデモをする時間で指摘された。 このアドバイスがもとになって、秋では省きたい食材を検索後に指定する方法に変更した。

使い方

このcookりさんは、スマートフォンでの利用を想定しているのでスマートフォンでアクセスしてみてください。

https://cookrisan.deta.dev
サイトを開いた状態

まず、サイトにアクセスします。

トップページで、「豚バラ肉」を「なす」選択した状態
使いたい食材を選択して(1)、「検索」ボタンを押します(2)。

次に使いたい食材を選択して(1)、「検索」ボタンを押します(2)。

「豚こま肉」と「ピーマン」を含むレシピを検索した結果
「豚こま肉」と「ピーマン」を含むレシピを検索した結果

「検索」ボタンを押すと、検索結果ページへ飛び、レシピが表示されます。

「全ての食材を使う」のタブには、検索条件に加えた食材を全て含み、省きたい食材を含まないレシピが表示されます(3)。 対して、「一部の食材を使う」のタブとタップすると、使う食材として加えられた食材を1つでも含み、かつ、省きたい食材を含まないレシピを表示します(3)。

画面上部に表示されている2つのテキスト入力部は検索条件を表し、上が含めたい食材、下が省きたい食材を表しています。

「豚こま肉」と「ピーマン」を含むレシピを検索した結果ページに「もやし」を省く食材として追加した状態
「もやし」を省く食材として追加した状態

この検索結果ページのレシピ名の下には、このレシピで使っている食材名書かれたのボタンがあります。食材の書かれた灰色のボタンを押すと、その食材を含むように検索条件が変更されます(4)(ページ上部の赤色の「検索」ボタンを押すと検索条件が適用されます)。さらに、含みたくない食材には灰色のボタンの隣にある赤色のマイナスのボタンを押します(4)。

また、既に検索条件として画面上部のテキストボックスに追加された食材は、再度ボタンを押すことによって検索条件から解除されます(4)。

レシピ名をタップすると、レシピを掲載しているサイトに飛ぶことができます。

ネーミング

夏合宿では、時間がなくて捻った名前が出なかったのでオリジナリティのある名前にしたいと思って提案した。 小学生の頃によく耳にした怪談?のこっくりさんのように誘導されるようにレシピを決めたいというニュアンスと、料理するの cook を掛け合わせたものとして提案した。

メンバー

秋も 5 人で開発した。

  • 私(Nakaya) プロダクトオーナー。優柔不断。
  • ギルドくん テックリード。最終発表会のスライドの発表などをやってもらった。タイムキーパー、議事録管理まで。
  • くまさん、miro の共有をいつもやってもらってた。モブプロのドライバーを積極的にやってもらってた。夏のチームが解散して秋から参加したメンバー。
  • なおとくん、デプロイ担当。講義で 1 回は「ありがと~」を聞く。
  • orii さん。スクラムマスター。時間管理やプロダクトをやってもらってた。夏のチームが解散して秋から参加したメンバー。

先に出してたチームメイトのレポート見ていると、メンバーにアジカンのファンがいたっぽかったので、音楽の話をしてもよかったなと後悔。

スプリント 1

このスプリントで行ったことは以下である。

  • EVP を再構築
  • 環境構築、HTML のデプロイ
  • レシピを 1 枚の HTML に表示する
  • 検索画面を作成し、検索結果ページに飛ぶようにした

特に書いておきたいことは 3 つある。 1 つめ に、スプリントを回す直前の EVP を練り上げる時間で、スカスカの EVP を作ってしまい、レビューではツッコミがかなり入った。 そもそも、自分達(少なくとも私)は納得の行くものではなかった出してしまったようにも記憶している。このときは、みんなが使えるものを、という考えで EVP を作っていた。 そのため、 1-1 では開発をそのまま初めるのではなく、もう一度、春学期にやったリーンキャンバスやユーザストーリマッピングをやり直すなど、根本から考え直すことから始めることにした。 その中で自炊生活が十人十色であることを認識し、全員も持つ全ての困りごとが解決することは難しいことがわかった。 例え、全員も持つ全ての自炊に関する困りごとが解決できなくとも、アイデアの中で「これ!」と思ったものを決めようということで、上記の EVP にした。

2 つ目に、ギルドくんと夏合宿の反省として、私たちはチームの中でも話しすぎて、心理的安全性を下げているのではないかという話が出ていた。 ので、この当時はギルトくんがテキストで会話に参加するという方式を取っていた。 正直かなり焦りがあって、この期間はチーム内ではピリピリとしていたように思うし、自分自身先行きに不安を感じていた。

最後に、環境構築やデプロイの面では以下のように決まった。 heroku 廃止に伴う移行先検討を行い、https://deta.shFastAPIを使うこととした。 開発で使うフレームワークやプラットフォームと、EVP が決まったので、環境構築を行った。 ここで、意識したのは全員で構築するということであった。

ロングレビュー 1

EVP の再検討をこのスプリントの最初でやったため、他の班より遅れていたのもあったのか、それともレビューに対して準備が万全ではなかったのか、このときのロングレビューはボロボロであった。

この時点では、機能はできていても、見せたものが作るユーザの体験というものが見えにくいものであった。 特にスプリント 1 の最後に作った検索画面と検索結果ページのリンクを作るということはできたものの、それらを繋いで何を体験させたいのか、という観点に欠けていたように思う。

それが原因なのか、ユーザが混乱してしまいお互いに有益な時間にならなかったのではないかと今になって思う。 レビューの時間はプロダクトを価値あるものにするためには必要なので大事にしなければ、と思った。

また、指摘された問題をレビューの見せ方や、見せられるものがまだ完成していない、など他にも原因が考えられうるにも関わらず、コアな部分に問題があると捉えてしまった。

この問題に関しては、チーム内でも配信について対立があった。 このまま進めるべきという意見と、再度 EVP を練り直すべきであるという意見である。最終的にはメンターの方やメンバーの意見に従ってこのまま進めてみようという話になった。

ふりかえりに白い六角形をもってきたのもこの回からだった。判断が遅いズ!が導入していたのも勝手にパクってこんかいの授業でよくなかった点への改善点(TRY)を書くために導入した。

加えて、ロングレビューでもまだ作りたかった UI がチーム内でも固まっていなかった。

スプリント 2

スプリント 2 で行ったものは以下である。

  • Figma を使ったプロトタイプ作成
  • 食材から検索
  • 複数の食材でも検索できるようになった
  • レシピを手動で追加

まずおこなったこととしては、 Figma を使って作りたい UI を考えることであった。 ロングレビューの時点でも、作りたかった UI がチーム内でもまだ固まっていなかった。 大まかな方針としては、スマホに最適化された UI/UX にしようという方針は決まっていたのだが、細かい部分が決まっておらず、なあなあになっていた点をロングレビューで実感させられた。

ロングレビュー 2

後半のロングレビューよりかは準備が万端であったとは言えなかったものの、ユーザに対しての質問にはしっかりと答えられるようにはなった。 具体的には、日本語の細かい表現で誤解を生むなどの問題があったが、Figma で未来予想図を見せるなどして理解してもらうことができた。

また、レシピ数の少なさが問題になってきた。 それまでの検証したいこととして、見せ方の問題でなんとかなるであろうという話だった。 しかし、次郎メソッドから脱却してくると、掲載しているレシピの少なさが問題に上がるようになった。 これまでは手動で収集して掲載していたが、自動で収集したいという話が挙がった。 しかし、クローラを作成するのは、PBI としてこれ以上分割不可能で、かつ重い PBI であるという話になり、作らなかった。 結果としては、チームとしては作らず、スプリント 3 の途中でギルドくんが作成したクローラで得た結果を挿入することになった。

このロングレビューで得られた一番大きな成果は、ある程度の自信を掴むことができるようになったことだと思う。 これによって、チームの雰囲気もこのロングレビュー以降は明るくなり、黙ったままの状態から抜け出せたようになった。

スプリント 3

このスプリントでやったこととしては以下である。

  • トップページの「食材から検索」
  • 「省く食材」を指定した検索
  • 検索結果ページの食材名をタップすると検索条件を変更できるように
  • 既に追加されている検索条件をボタンを押すと消せるように

このスプリントの中で特に記憶に残っていることは以下の 4 つである。

まず 1 つ目に、レビュー内で教員のアドバイスとして、以下のようなフィードバックをもらった。

レビュアに機能ツアーして説明するんじゃなくて,レビュアに困りごとが解決する様を体験させてください

我々は、機能ツアーと体験の違いを理解できていなかった。 前者は「このボタンを押すと、~となります」というを解説するものであった。 一方、後者を実施するようなってからは、EVP などから前提を話すことから始めるようにした。 「今日の夕食を作ろうという状態を想像してください。ここで cook りさんを使ってみましょう。実際に冷蔵庫を見てみましょう。キャベツと人参がありますね。では……」のように実感の湧きやすいようなレビューになった。

2 つ目に、リリースノートとして提示できるようにとプランニングの時間の間に PBI を書き変えることも意識的に行った。

3 つ目に、落ちついてきたところで、時間の管理の問題について取り組むようになった。 この段階で、仮説の根本の部分に関してツッコミが入ることが少なくなった。 時間の管理の問題をどうするかを振り返りで考え、改善させてることができた。 スプリントプランニングで TODO1 つ 1 つにどれくらいの時間がかかるかを見積もり、それをカンバンに書き込めるようにしたり、時間計測をどのようにすればよいかを振り返りで考えるなど時間について話す機会が増えた。

4 つ目に、この期間では複数の食材を入れて検索する機能を実装した。 これは、少し実装が難しかった。 そのため、全員が理解できるようにわかった人が解説するとっいったことを 1 つ 1 つ行った。 他にも JavaScript を使って食材名をタップのみで追加する機能を実装したが、JavaScript を触った経験がある人が少なかったのもあって、その部分の解説などもチームで行えた。

ロングレビュー 3

ロングレビューでは、以下の項目が挙がった。

  • 「省く食材」を選択した際にすぐに検索に反映されてほしい
  • 「豚バラ肉」「鶏むね肉」などの複数の検索条件を入力した際に双方を含んだレシピではなく、どれか 1 つでも含めば検索結果として含んでほしい

スプリント 4

最後の仕上げをがんばろうという矢先、何が重要でどれを実装するべきかという点で開発中にチームで議論になった。 次のスプリントでこのスプリントで鳴にをするべきかについてを議論するために、絵文字で投票したり、付箋で意見を出す時間を設けたりした。

これは、心理的安全性を考えた取り組みだった。

別の講義で、議論で意見を出すのではなく、付箋を出し合うほうがよいという話を聞いて取り入れた。 その結果、チームメンバーの意見が以前より活発になった。

以前要望として出てきた「『豚バラ肉』『鶏むね肉』などの複数の検索条件を入力した際に双方を含んだレシピではなく、どれか 1 つでも含めば検索結果として含んでほしい」という問題を解決した。そのために、完全一致、部分一致を tab として表現することとした。

ロングレビュー 4

ロングレビューでは、以下の項目が挙がった。

  • レスポンスが遅い
  • Safari 対応

レスポンスが遅いだが、検索アルゴリズムでは python の set 型と list 型を行き来するような実装になっているので、型の変換に時間がかかっていそうだとか、Database を使わず、JSON ファイルにレシピのデータを保持し読み込んでいるからではないかなどの話が挙がった。

後日、実際に使ってみてもレスポンスが遅いと感じたので改善は必要だと感じた。

期間を通した個人的ふりかえり

「とりあえず手を動かせ」

チームでは議論をしていて、煮詰まるとそのまま黙ってしまうことも多かった。 例えば、スプリントを回す前の EVP 考案などである。 考えることがいいことだが、煮詰ってしまっては議論や開発が前に進むことができない。

そのようなことがあって、ギルドくんが「とりあえず手を動かせ」という話をしていたのが強烈に心に残っている。 ある程度のことが考えれば PBI の優先度などはわかるかもしれない。しかし、手を動かして実装して、実際にレビューしてもらう。そうしなければわからないことだったある、ということを感じた。

チームの行動以外にも、私自身の行動にも刺さる部分があった。 私は石橋を叩くだけ叩き、飽きて渡らないような頭でっかちなことを繰り返してきたように思う。 ある程度叩いて問題なかったら渡ってしまう勇気みたいなものが必要だと感じた。

「プロダクトオーナーは課題を愛する」

これ他にも、

PO は最も身近な顧客

という話もあった。 これらは、メンターや受講者の方が言っていたことだ。

開発、特に誰かに刺さるものを作るためには、情熱が必要である。 情熱は課題を愛せることができなければできないという理屈は、衝撃を受けた言葉の 1 つであった。 実際に、秋の終盤では実生活で使ってみる機会を何回か作れたことはよかったかなと思った。

プロダクトオーナーは顧客の意見を鵜呑みにするのではなく、取捨選別する

メンターの方のこの言葉にはっとさせられた。

PO の仕事はねーーニコッとステークホルダーのいろんな話を聞いて頷きながら、程よく無視することですよって聞いた

また、一回目のロングレビューではツッコミどころの多い発表をしてしまった。 メンターの 1 人は「PoC がまだできてない」(注: Poc: Proof of Concept)という話 「自分達を貫け」

そもそも enPiT ではユーザである人ない人の区別を付ける必要もあった。 そして、私はフィードバックのすべてを鵜呑みにして PBI の優先度を決めてようとしていた。なので、フィードバックを取捨選択する能力はまだまだだったように思える。

「ユーザーは無能である」

これは秋学期のスプリント中盤頃にメンターの方に言われたことである。 この頃は、「この機能はどうしてほしいですか」とレビュー時にオープンクエスチョンで顧客に対して質問していた ユーザは無能であるというメンターさんの話は印象的だった

その後に教員に

レビュアに機能ツアーして説明するんじゃなくて,レビュアに困りごとが解決する様を体験させてください

と言われてから、レビューとの向き合い方をようやく理解できたように感じた。

PBI は小さく

夏合宿では、最初のスプリントで PBI が大き過ぎて、受け入れ条件を満たすことができなかった。

それから、PBI を最小単位にまで分割できないかということを、しつこいまでに主張にするようになった。 この経験から、技術的にしっかりとしたサービスを作ることはユーザにとってあまりにもどうでもよいことで、自分がどういった経験を受けられるのかということに興味があるのだなと体感した。

その後は、次郎メソッドから初めることにした。 HTML 1 枚からでもレビューの作り方によっては検証はできる。 まずは HTML1 枚から初めて、枚数を増やしていき、最終的にデータベースを使うなどの段階を踏んだ機能の実装を意識することができた。

PBI の優先度の方針

秋の初盤に、レシピを作った最終の日を記録しておけば、EVP で触れていたレパートリーを増やすことがでいるのではないかという話をしていた。 最初、PBL で夢としても決めていたが、完全に失念していたのもあり、最終的には作らなかった。

途中から、UI の修正などの部分を優先度の高い PBI としたのは間違いだったように感じる。 つまり、UI よりからよりも大きな機能を体験してもらうべきだったように思う。 そして、最後のスプリントで UI の修正などをするべきだった。

議論の時間における発散、収束の意識

夏も秋も、PBI レファインメントでどのように実装するか、などの話が盛り上がって、時間が足らなくなることが多々あった。 つまり、議論が発散しっぱなしだった。

しかし、秋学期の後半では時間が迫ってくると、「それじゃあどうするか」みたいな声を掛けることができるようになり、時間が迫ってくると発散させていたものを収束させることができるようになった。

おわりに

成果報告会では、優秀賞をもらうことができた。 周りのプロダクトの完成度や、周りのチームの取り組みがユニークかつ完成度が高かったので、正直な所、賞がもらえると思ってなくて、びっくりした。 開発期間ではウジウジ悩むよくない PO だったし、PO として開発をどう進めるべきかがわからず何度も悩んだが、ここまで来られてよかった。チームのみんなには感謝です。

「退職」と書いたけど、辞める気はさらさらない。 自炊に関する困り事は永遠の課題のような気がしているので、講義の場か無くなっても、今後もまだまだこのチームで取り組んでみたい。 みんな卒研などで忙しそうなので厳しそうだけど、作り直してハッカソンに出てみたいな……と思っている。

抱負2023

現在2023年1月5日 AM 01:04。

あけましておめでとうございます。 初夢には指導教員が出てきて早くも卒研に不安を感じている、なかやばしです。 今年もよろしくお願いします。 今年ももう1%が過ぎたので、そろそろ抱負を述べておかないとなということで筆を取ります。

続きを読む

あの子ぼくが「高専1年に読むべきおすすめ書籍」10冊言ったらどんな顔するだろう

この記事は群馬高専Advent Calendar 11日目の記事です(大遅刻)。

はじめにことわっておきますが、最初は、私が学んでいる図書館情報学、または、知識情報学について説明しようと思ったのですが、レポート等々あって時間がたらず、急遽、「高専1年に読むべきおすすめ書籍」10冊というテーマにしました。お許しを。

adventar.org

はじめ

Twitterを見てたら流れてきたこの記事。

qiita.com

この記事に触発されて、高専5年+編入8ヶ月を過ごして、当時高専1年の私に勧めるべき書籍を考えてみようと思った訳です。

というのは表向きな理由で、上の記事に紹介されている書籍やWebサイトって確かに名著なんだけど、高専1年生にSICP(『計算機プログラムの構造と解釈』)やRust公式ドキュメントを勧めるのって、かなりハードじゃない?とも思ったので、私なりの書籍を紹介したいな~というのが裏テーマ。

ただ、この記事で紹介するのは計算機工学、計算機科学が中心になり、電子工学、電気工学は範疇に入らないことは言っておきたい(私は電気電子系の学科にいたはずなのにね……)。

B3の私が高専1年の私に勧める書籍10選

初学者が言語を学ぶにあたっては、1つの書籍ではなく複数の書籍を使って学ぶべきである。 これは大前提である。

お金がなければ図書館で借りたりすることをお勧めする。図書館になければリクエストや取り寄せもできるので、各図書館で確認するとよさそう。

1.『CPUの創りかた

去年のAdvent Calendarにも書いたけど、この書籍は外せない。

demo.hedgedoc.org

正直、高専1年の早い頃、例えば夏休みにやるべきだったなと感じている。 この書籍に1年で出会っていたら、J科に転科してたかもしれない。 それくらいクリティカルな書籍だと個人的には感じている。 なぜならば、情報系にも電気電子系にも回路の講義があってそれらの違いが入学当初にはわからなかったためである。 要するに、「なんで情報を冠する学科が電子回路やるんですか」という問いを返してくれる。

情報系の学科にいた先輩も言っていたが、『「ゲーム創りたくて高専の情報系来たんです」という人は多いけど、そういう人は夢破れていく』らしい。 実際、情報系の学科でゲームを作るのは、できて1つくらいしかなさそうだったし、趣味でやらない限り、ゲームは作れない。 彼、彼女らが、回路の講義や実験を1年の頃やっても夢との乖離でやる気を失うのは想像に難しくない。

ちなみに、論理回路の理論は最低限しか記載されていない。 興味があるならば、普通に教科書として使われていそうなものを見繕ってくる必要がありそうかなと思う。 まあ、情報系なら論理回路は2、3年でやるだろうから、急ぎでない限りあまり必要性はなさそうだけど。

流石に4bitCPUだと実用に向かないのは考えるに難しくない。 実用のCPUの作りとかをもっとやりたいならば、『コンピュータの構成と設計』(略称: パタヘネ、著者の並びからそう呼称される)や、『ディジタル回路設計とコンピュータアーキテクチャ』(略称: ハリスハリス)を後に読むといいんじゃないかなと思う。

ちなみに、ハリスハリスはFPGA*1と使って実践的に学ぶ書籍である。 よって、FPGAを買う必要がある。私の場合は秋月電子通商で1万2千ほどで購入した。 また、『作ろう!CPU』などから、SystemVerilog*2をやってからのほうがいいようにも感じる。

あと、ハリスハリスにはRISC-V、ARM、MIPS版がそれぞれ刊行されているが、このへんは好きなものでよさそう。 個人的には、最近何かとアツいRISC-Vがイチ押しだけど。

RISC-Vを作りたかったが、引っ越しにあたりFPGAを紛失したのがとても悲しい……。

2.『退屈なことはPythonにやらせよう』

高専在学中も「プログラミングやりたい」と言った友人に一方的に勧めてた書籍である。 というのも、プログラミングはやりたいことがあったほうが続く気がするからである。 これはよく語られることでもある。 もちろん、これが、唯一の方法ではないが、やりたいことがない人はオススメできる方法である。

基本的にはオレイリーは初心者向けではないので勧めにくい。 しかし、その中でも「Head First」シリーズとこれはおすすめできるんじゃないかなと思っている。

3.『プログラミングの基礎』

プログラミングの基礎という書名からだとわかりにくいが、これは関数型言語の入門書である。 具体的に取り扱う言語は、OCamlの入門書である。 もちろん、再帰高階関数などの一般の関数型言語が持つ特有の概念が難しい。 しかし、この書籍は難しいと思われがちな関数型言語をわかりやすく解説してくれる。

今のプラグラミング言語は関数型のエッセンスを取り入れるのがトレンドのようにも感じる。 例えば、Rustは今まで主流であった言語に関数型を取り入れているのは1つの特徴としてあるような気がしている。 他にも、Pythonicとされているコードも意外に関数型のエッセンスが入ってたりするような気がする。 さらに、JavaScriptやTypeScriptもそのようなエッセンスが取り入れられているようにも思う。 ちなみに、もともとRustのコンパイラOCamlで書かれてたという話もあったりする。

そういえば、『ふつうのHaskellプログラミング』を積んでいたのを思いだした……。ウッウッ……。

4.『ふつうのLinuxプログラミング』

システムプログラミングに入門するなら、この書籍はかなりよさそうな気がしている。 気がしているというのは私もそこまで読んでおらず、積んでいるからである。

この書籍はPOSIX系と呼ばれるOSの1つであるLinuxを使って、Linuxでよく使われるcdlsなどのコマンドを自分で実装するのが主な内容である。 最終的には、HTTPサーバを実装する。

注意すべきは、C言語自体は学習済みであるという想定で話が進むということだ。 C言語自体の学習に関しては『苦しんで覚えるC言語』(苦C)とかでやるといい気がする。Webサイトも書籍もあるのでそこはお好きに。

9cguide.appspot.com

または、『C言語の絵本』もよさそうだけど。 そういえば高専1年の頃はまだ苦Cの書籍版を持っていたんだけど、パクられたのを思い出した。どこ行ったんだろう……。

書いてて途中で思ったが、この書籍はLinuxに慣れてから読んだほうがよいような気もする……。

5. 『Head First Python

私はWebのサーバーサイドをやりはじめたのはPHPからだったような、Pythonのbottle.pyからだったような……。 思い出せないが、PythonのWebを扱うのに役立った1冊。

6.『ノンデザイナーズ・デザインブック』

デザインに関しての3原則を述べた後、その用例を示す、というのが大枠の本。 デザイナーではない人にとっては3原則だけでも参考になる。

7.「Aizu Online Judge Course」

onlinejudge.u-aizu.ac.jp

普通にプログラミングの入門として使えると思う。 もともとはコンピュータ系の専門大学である会津大学が運営している競技プログラミングのコンテストサイトである。 このサイトには世界的な大会の過去問やこういった入門者向けの問題が掲載されていて、実際にプログラムが正しいものであるがjudgeしてもらうこともできる。

個人的には、ALDS1(「アルゴリズムとデータ構造1」)とかGRL(「グラフ」)とかは今やってもタメになりそうだなと思った。

8. 「AtCoder 精選10問」シリーズ

何にせよ、精選10問シリーズの記事はマストな気がする。 なぜならば、制御構文の基礎を取り扱った問題から、本格的なアルゴリズムの入門問題まで取り上げられており、とても初心者向けだからである。 さらに、C++以外の言語でも解けてうれしい。

qiita.com

AtCoder Beginners Selectionもよさそう。C++でしか解説されてないけど……。

9. 『ライティングの哲学』

ここからは、技術書から離れる。

まずは、『ライティングの哲学』である。 ライティングと書いてあるが、実際はアウトラインプロセッサ*4を使う人々がどのように苦しい執筆に対し、どれだけ苦しさを柔らげられるかということについて語り合い、書いている。

アウトラインプロセッサに出会ったのはそういえばこの本に出てくる読書猿さんのブログからだったっけか。 この記事から入るのがよさそう。

readingmonkey.blog.fc2.com

アウトラインプロセッサ編入試験でも高専の卒研でも触れた内容なので、その出会い、関係性は劇的と言ってもいいかもしれない。 ちなみに、VimからEmacsへ改宗したのもEmacsの拡張であるorg-modeというアウトラインプロセッサ(厳密には違うけど)が原因だったりする。

また、千葉雅也さんの思想を感じたいなら『現代思想入門』もおすすめできる。 彼がこの本のの中で語る考えは哲学的にどのように裏付けられているかというのを一部伏線回収できるように思う。

さらに、アウトラインプロセッサとパラグラフライティング*5とは相性がよいと言われている(ような気がする)。 パラグラフライティングの解説書でいえば、『日本語パラグラフ・ライティング入門』が気になっている。

アウトラインプロセッサとの関連は記述されていないような気もする。しかし、パラグラフライティングに関する割と実践的な書籍である。例えば、文章の穴埋め問題が出されていたりする。

10. 『哲学の誤配』

高専時代は東浩紀さんを知ったことも大きい気がする。特に『ゲンロン戦記』読んでから本格的に見始めたように思う。 その中でも、『哲学の誤配』は彼の思想を知るにあたり、大枠を掴むことができたように感じる。

そういえば、観光客の哲学、欲しいと思って2、3年経ってた……。

著者 : 東浩紀
株式会社ゲンロン
発売日 : 2017-12-11

おわり

図書館情報学の書籍は入れておきたかったけど、Semantic Webとかに興味が出始めるのは高専3、4年の頃だった気がするので、今回はパス。 それと、基本情報技術者試験不要論ってあるけど、結構あの試験勉強で得られる知識って重要な気がした。まあ私は持っていない訳なんですが。

でも、先輩(これも私という想定だけど)に勧められた書籍を読んでる高専1年の私が想像できないな……と書きながら思ったのでした。 当時の電算部はUnityを触る人が主流で、その中で逆張りをやっていたのが私なので。 それでもまあ、どちらにせよアドカレ読んでる高専生たちにはこの本たちはオススメしたいかなと思う訳です。

それはそうと、岡村靖幸よくね? 深夜の孤独感にジャストフィットって感じするし。

open.spotify.com open.spotify.com

*1:プログラミング言語のようなもので論理回路を自由に構成できるボード

*2:FPGAを操作するための言語とでも言えばいいのだろうか

*3:Computer Science Library

*4:ワープロの1形態であるソフトウェア。箇条書きとそのネストで文を並べることにより、事前に文章の論理構造を整理することができる。

*5:科学的、技術的な作文でよく使われる文章の構成手法。