新卒フリーランスの生存戦略

就活で全社にお祈りされて彼女にもお祈りされた難病患者がフリーランスエンジニアになって人類の幸せをお祈りする話

俺の考えた最強のSchematics!!(前編) [Angular]

Angular Advent Calendar 2日目の記事です。昨日はkasaharuさんの「Angular アプリケーションに Testing Library を導入する」でした!

お詫び

昨日まではGPT-3を用いたテスト駆動開発について、@angular/fireのバグ修正を例に解説しようと考えていましたが、急に素晴らしいアイディアが降りてきたのでそちらについて書くことにします!でも、やっぱり、そのためにもGPT-3や経緯について説明する必要があるので、サクッと先に書きます!(頭の悪そうな文章ですみません!)

GPT-3って何よ?

GPT-3は非常に噛み砕いて言うと、文脈を理解できるレベルに高度なAIです。

こんな感じで、テストコードと伴に「上記を満たすコードを書け」と命令すると、それっぽいコードを生成してくれます。これを用いると人類はspecファイルを書くだけで、AIがテストコードをパスするまで不眠不休でコードを生成してくれそうです。(実際に、この方法で書いたPRはこちら。)

AIの波に乗り遅れた私

で、はじめは私も「AIがコード書くとかSUGEEEEEEEEえええ!!」とテンション上がっていたんですが、1週間くらい前に初めてCopilotを触ったら、私が周回遅れだったという事実を知りました。(皆さんはすでにAIをこき使ってコードを書いたんですね...)

で、Copilotユーザーの皆さんにも何かおもしろい記事が書けないだろうかと、無心に私もCopilotでコードを書いていました。

そして、ひらめきました。「SchematicsにGPT-3を組み込もう」

俺の考えた最強のSchematics!!

課題

現状のCopilotではファイルの自動生成はしてくれません。補助してくれるのはあくまでファイルをエディタで開いてからです。Angularユーザーである我々にはSchematicsという最高なコードジェネレーターがありますが、毎度毎度、プロジェクトに合わせてSchematicsをカスタマイズするのは骨が折れます。

しかも、プロジェクト初期は記法を模索していてSchematicsの設計が決まらないし、ある程度記法が安定してきた頃にはもう新規にコードを生成する機会が少ないです。(Schematics愛好家としてはこのジレンマが悩ましい...)

アプローチ

そこで考えたのが、SchematicsにGPT-3を組み込んで空気を読んだファイルを生成してもらう方法です。

例えば、下記のようにSigninComponentとSignupComponentが並んだディレクトリに、UserComponentを生成したいとします。このとき、新規に生成したいuserディレクトリの中身は同じ階層にあるsigninディレクトリとsignupディレクトリに似ることでしょう。

libs/components/src/lib/templates
├── signin
│   ├── signin.module.ts
│   ├── signin.stories.ts
│   ├── signin.component.html
│   ├── signin.component.scss
│   ├── signin.component.spec.ts
│   ├── signin.component.ts
│   └── index.ts
├── signup
│   ├── signup.module.ts
│   ├── signup.stories.ts
│   ├── signup.component.html
│   ├── signup.component.scss
│   ├── signup.component.spec.ts
│   ├── signup.component.ts
│   └── index.ts
├── user <- 新規に生成したい

なので、signinとsignupディレクトリの中身を文脈としてGPT-3に渡せば、userディレクトリの中身を生成させることができるはずです。

├── user
│   ├── user.module.ts
│   ├── user.stories.ts
│   ├── user.component.html
│   ├── user.component.scss
│   ├── user.component.spec.ts
│   ├── user.component.ts
│   └── index.ts

これで、既存コードの記法を見直しても、それに合わせて自動的にSchematicsが生成するコードも変化していき、ジレンマが解消されることが期待されます。

次回予告

アプローチの詳細と実際に使用してみた感想は来週(12/9)のAdvent Calendarにて!!

ざっくり作ってみた感じ、問題なく動いたけど、まだ安定してないので公開はしばしお待ちをmm

ちなみに、明日はrukutelialoveさんです!

テレビを一切見なかった私が全自動DIGAを買った話

先日、全自動DIGAを買った。こいつである。

6チャンネルを24日間に遡って自動的に録画・削除してくれる。

私は幼少期からテレビを見れない家庭で育っていた。 厳密には18時以降は父親がテレビのチャンネル権を持っていたため、 バラエティ番組などを見る機会は非常に少なかった。

子供の頃は芸能系の話題に全くついていけず割と苦労した。 大学生になる頃にはYoutubeNETFLIXの台頭で 同世代もあまりテレビを見なくなっており、 かく言う私もその一人だったので困ることはなかった。

しかしながら、大学を卒業してフリーランスのエンジニアとして活動するようになって、 部屋に籠もっていることが増えた。

様々な制約の影響で外に出るのも辛いし、 同時に人に合う機会が減って笑ってられる時間が減った。

プログラミング以外の趣味もないので仕事が終わった途端、何もやることのない自分に虚無を感じる。

NETFLIXYoutubeを見て気を紛らわせていたが、 これらは自分で動画を選ぶまで何もはじまらない。

視聴を開始する前に「何かを見たい」というモチベーションが必要である。

そのため、仕事が終わって、見たい動画を考えるまでに思考が負のスパイラルに陥る。

何も考えなくてもリアルタイムでエンターテイメントを提供してくれるもの、 つまりはテレビが必要である。

そこでテレビチューナーを買うことにした。 上記の製品である。

全自動DIGAを買って人生で初めてゴールデンタイムのテレビをきちんと見た。 「マツコの知らない世界」とか「サンマ御殿」みたいな 生きていれば自然と耳に入ってきたようなタイトルだ。

Youtubeのインスタントなおもしろ動画と違い、 尺の長いバラエティ番組は注意を過度に奪わない。

番組のテンションに波があって、十分に作業しながら見ていられる。 選択する必要もなく、テレビを点ければ何かがやっている。

私の脳のリソースが不安や虚無感に専有される前に注意を適度に奪ってくれる。 自動的に一般的な人と会話で使えそうな共通認識を頭に刷り込んでくれる。

メンタルを維持する装置としてなかなか良い。

何より素晴らしいのはDIGAのUXである。

私みたいなめんどくさがりは、まず、録画なんて主体的にしようと思わないし、 時間にルーズな私は確実に開始時間に遅れる。

しかしDIGAなら適当にテレビをつけてチャンネルを回して、 面白そうな番組を見つけたら、その場でその番組をはじめから見れる。

6チャンネル同時に録画されているので、 何も考えずにゴールデンタイムの番組をハシゴできる。

過去の番組表を開いて、気になる番組を選択するだけで見始められる。

3万円くらいのTVチューナーか6万円の全自動DIGAか悩んだが、 たぶんテレビにできるだけ時間を使いたくない私にとって全自動DIGAは全然ペイした。

強いて言うならCMを飛ばす機能が欲しい。

だって届いた初日からこんなCMが流れるんだもの。

www.youtube.com

チューナー買わなくてもリアルタイムでテレビ見れるようになるんかい!!

SFC-LT 2.0 | メディア型の奨学金をつくろう

スケーラビリティのある新しいタイプの奨学金を作りたいと思う。

実はこれは2年ほど前にSFC-LTというプロジェクトで1度挑んで失敗した取り組みだ。 ここでは以前のSFC-LTがどこまでうまくいき、何に躓いたのかを振り返りつつ、それを踏まえて新たなバージョンを提案する。

はじめに

SFC-LTはメディア型の奨学金のプロトタイプをつくるプロジェクトである。

このプロジェクトの目的は、既存の奨学金が抱える問題を解決し、持続可能でスケールする奨学金を作ることである。 我々は、ソーシャルメディアクラウドファンディングを組み合わせたメディア型の奨学金によって、これを実現しようとしていた。

SFC-LTの「ペイ・フォワード・チャレンジ」というコンセプトに表されるように、 挑戦のために受けた支援を次の誰かの挑戦へと繋ぎ、その流れをより広く大きくしていくことを目指した。

背景

既存の奨学金の問題点

これまでの奨学金は貸与型と給付型の2つに分けられるが、それぞれ仕組みに問題がある。 まず、貸与型奨学金に関しては奨学金と銘打っているが、その実態は単なる学生ローンに過ぎず、 学生に選択肢を与えることはできても、それ自体が学びのインセンティブになることはない。

次に、給付型の奨学金について、こちらは①応募に手間が多く②申請者数が増えても全体の給付額が増えることはない。 ③審査に落ちれば学生の側は得るものがなく、支援すべき学生の時間を搾取しただけの結果に終わる。 また、支援者の側すると④少額からの支援がしづらく民間では企業や資産家しか作ろうとしない。 そういった点で給付総額がスケールしなくて、学生同士のパイの奪い合いになるだけである。

本プロジェクトの目的

本プロジェクトの目的は、応募者数に応じて支援総額がスケールするような奨学金を設計し、この問題を解決することである。

SFC-LT 1.0でのアプローチ

我々は、その手段としてソーシャルメディアクラウドファンディングを用いたメディア型の奨学金を提案し、SFC-LTというプロトタイプを作った。

SFC-LTでは、学生に3分間で自分のチャレンジをプレゼンしてもらい、その動画を公開する代わりに1万円を支援する。 そして同時にその学生への追加の支援をクラウドファンディングし、そこからの一部手数料を用いて次の学生の1万円を捻出する。

これならば、学生はいちいち応募先のフォーマットに合わせて書類を書く必要がないし、 日頃から活動的な学生はアウトプットを再利用できるため、応募の手間を最小限に抑えることができる(①の解決)。 また、SFC-LTの応募者数が増えれば、この奨学金のコミュニティが拡大し、ソーシャルメディアの拡散力が上がり、クラウドファンディングで集まる金額が増える(②の解決)。 そして、3分間の動画に対して確実に1万円がもらえるので時間を搾取しただけで終わることもない(③の解決)。

支援者もクラウドファンディングを用いて少額から支援ができる(④の解決)。

SFC-LT 1.0の概念実証(PoC)

この奨学金が持続可能でスケールするかは学生がクラウドファンディングを行った際に集まる金額に依存している。 仮に手数料率を20%(一般的なクラウドファンディングの手数料率)とすると、1学生あたり10万円を集めることができれば、諸経費を考えても次の学生の1万円を捻出することが可能だろう。

その実証のため、2020年1月に私自身が3分間のプレゼンテーション動画をアップロードし、このメディア型の奨学金自体を提案するクラウドファンディングを実施した。

結果としては126名の方から総額50万円を集めることができ、1学生あたり10万円という目標値を大幅に上回った。 SFC-LT 1.0はキャッシュフローの面では十分な可能性があることを示した。

プロジェクトの頓挫

しかしながら、本プロジェクトは2020年6月に一時中断し、クラウドファンディングの返金手続きをするに至る。 経緯に関してはこちらの記事にまとめたので参照願いたい。

SFC-LT 1.0の課題

SFC-LT 1.0には3つの大きな課題があった。

第1に、学生のコストが大きすぎた。SFC-LT 1.0では「撮影会」と呼ばれるオフラインイベントを開催し、そこで学生にプレゼンをしてもらい動画を撮っていたが学生の側にコストがかかりすぎていた。クラファンのリターンの設計に関しても学生に関しても学生の負担になりやすかった。

第2に、運営側のコストも大きすぎた。クラファンのリターン設計のために前述の「撮影会」を実施していたが、オフラインイベントは日程調整や会場確保の手間が大きく運営に大きな負担となっていた。

最後に、SFC-LT 1.0ではPoCのため、「学生」と「運営」の両方の役割を私が演じていた。 つまり、私が単一障害点となっており、私自信が高負荷になるとプロジェクト自体が全く進まなくなった。 事実、「プロジェクトの頓挫」で書いたような自体に陥った。

今回のプロジェクトの目的

今回のプロジェクトの目的は、メディア型奨学金キャッシュフロー意外の面での持続性を検証するとともに、持続可能な最小構成のモデルを実運用することである。

アプローチ(SFC LT 2.0)

新たなメディア型奨学金のプロトタイプ、SFC-LT2.0を用いる。

SFC-LT 2.0では、140文字のツイートによる1次選考と3分間の動画提出による2次選考を設け、2次選考の通過者に対して1万円を給付して動画を公開する。(ほぼ1次選考の通過者100%を予定)

また、オフラインイベントとクラウドファンディングを廃止することで運営と学生のコストを最小限に下げる。なお、クラウドファンディングの廃止によって失う財源については、当面の間、私が出す。(これによって支援総額のスケーラビリティが保てなくなるが、今回のプロジェクトの目的のスコープ外のため、無視する。)

今後のアクション

  • いろいろ問題は起きるだろうけれど、とにかく始める
  • 継続可能な最小構成の仕組みを担保する。
  • 運営コストがかかるなら自動化する。
  • バージョンアップを重ねながら、少しづつキャッシュフローを改善して、財源が私に依存しなくても回る状態に持っていく。

最後まで読んでくださった皆様へ

SFC-LT 1.0は概念実証のためのプロトタイプだったのに対し、 今回のSFC-LT 2.0はキックスターターとしてのプロトタイプです。

燃料が切れる前にこのプロトタイプをエコシステムに昇華させられるかが勝負の鍵です。

もっと現実的に言いうなら、私の資金が尽きるのが先か、我々がキャッシュフローを安定させられるのが先か、それだけの話です。

ただ、焦る勝負ではありません。

我々はスタートアップではなく、スケールアップを目指すNPOだからです。

VCの償還期限も株式契約も気にする必要はありません。

一歩一歩、自分たちの歩幅で、着実に仮説検証を進め、目的を達成します。

NPO法人 湘南藤沢Projects

代表 宮元 眺

2020年の振り返り(2020年4月~8月)

2022年にもなったわけだし、ここ数年の人生を振り返ろうと思う。

昨年は、とにかく破綻した人生の計画を軌道修正するのに必死だった。2016年からの大学生活での無理が祟り、2020年の4月頃から人生の計画が大幅に狂いだした。2020年9月以降はその後始末に追われ、結局、2021年も丸々その対応に追われた。

長くなるので、今回は2020年頃の話について書く。

就活の失敗(2020年4月~7月頃)

10歳くらいの頃から、大学で早慶とかに行ってれば就活で路頭に迷うことないのかな〜と考え受験勉強をしていた。

人生で何かチャレンジするなら時間的にも体力的にも余裕のある大学生活が望ましいし、 仮に失敗したとしても、ある程度の学歴があれば適当な企業に入って人生を既定路線に戻せると信じていた。

地頭が悪すぎて受験にはかなり苦戦したが、なんとかSFCに入学し、5年近く自由気ままにやりたいことにチャレンジできた。 ただ、上記の安直な考えがアップデートされることはなく、完全に舐めきった態度で就活に臨んでしまうというミスをした。

その結果、11社中11社不採用という惨敗を喫した。

卒業後の進路が決まらない中、2021年の3月に行っていたクラファンのリターンの対応が進まないことや 卒論の中間発表や下宿の退去の準備にも追われ、少しづつ精神的に追い詰められていった。

彼女に振られる(2020年6月)

精神的な不調はプライベートにも影響をきたし、当時4年半ほど付き合っていた彼女に別れを切り出された。将来が不安になって私を信じられなくなったらしい。

誰より信頼していた人から、全く信頼されていなかったのは、完全に不意打ちだった。

私自身、2018年頃から指定難病患者になってしまったり、起業志向が強い人間だったりした。安定志向な彼女的にはそういった点は不安要素だったらしく、この時期に限界がきた。病気に関して言えば現代の医学では治らないし、起業志向は夢やライフスタイルに関わる部分だ。コミュニケーション不足もあるが、何より信頼に足る成果を何も出せていない自分が情けなかった。

恋愛周りは合理性を持ち込まないようにしていた聖域だったので、これはかなりショックだった。

SFC-LTの一時中断(2020年7月ごろ)

彼女と別れたことで安定的な選択をする必要がなくなったし、 メンタルが不安定すぎて継続しても泥沼化するのが目に見えていたので就活を中断した。

これで完璧に来年以降の自分の生活の見通しが立たなくなったため、 SFC-LTの一時中断、クラファンの返金対応を行う決意をした。 大切にしていたものを失って挑戦するのがどうしようもなく怖くなったのもある。

初めのうちは空元気でどうにかなっていたが、それも長くはもたなかった。

入院(2020年8月ごろ)

精神的な疲弊は、 確実に身体にも影響を及ぼす。

プロジェクトの一時中断からしばらくして、持病が悪化し、家でぶっ倒れて、1週間ほど入院することになった。 信じていた社会やパートナーに見捨てられて、それで残ったのがこの病弱な身体だけかと思うと辛かった。

来年からの生活や大学、夢、病気、何もかもが不安で、それらで頭の中がいっぱいだった。問題が山積していて何から手をつければ良いかわからず、毎日、その不安に押しつぶされていた。

再計画 (2020年8月~)

やる気はでないし、金もないので、途方に暮れた。

この頃はずっと、起きてから寝るまでメンタリストDaiGoの動画を見続けていた。情報を詰め込み続けていないと、頭がすぐに不安でいっぱいになる。

人には会えるほどのゆとりはなかったが、少しづつ散歩したり日記を書いたりしてできることを増やしていった。毎晩、不安なことを日記に書き続けていたら、無限のように思えた不安も有限だと気づけた。確かに毎日違うことで悩んでいたがが、記録してみると同じ悩みのローテーションだった。

悩みのリストがわかれば、あとはプライオリティをつけて、できることから一つづつ、着実に解決していくだけだ。もちろん、どう手をつけてよいのかわからない悩みも多かったし、すべての問題の解決に途方もない時間がかかることもわかっていた。ただ、終われば全てを取り戻せると自分を騙して、どうにか一つづつ着手し始めた。

振り返り

就活については、今でも無駄な時間だったと思っているので振り返るつもりはない。 強いて言うなら、面接官のような特定の個人の意見で左右される人生計画を組んでいたことが最大の敗因だった。

恋愛に関して言えば、長く一緒にいたせいでわかった気になって相手の気持ちに耳を傾けられていなかった。 自分の病気を気にしないようにしていたあまり相手が不安に思っていることさえ考えられていなかった。 あとは全てにおいて、どうしようもなく結果を出す力がなかった。

プロジェクトを一時中断した判断は正しかったと今でも思っている。 また、返金対応に対して、資金を寄付してくださった方々がいて、そのお陰でプロジェクトを諦めずに済んでいる。 そのことに今でも感謝しているので、いづれ必ずプロジェクトを再開したい。

2020年は人生のポートフォリオの大部分が自分に相関していたため、仕事周りから連鎖して他の領域すべてに影響を及ぼした。 健康面やキャッシュフローなど深い依存先には注意した方がよいし、できることなら自分への依存を引き剥がしたい。

9月移行は2021年とまとめて書くが、正直この1年は二度とやり直したくない。