8/22~9/29 の約1ヶ月間で開催された ウイングアーク1st 次世代ビジネス価値創造インターンシップ の Program2 に参加してきました!

インターンの概要
データに関連する新規事業を立案し、推敲していくインターンです。
当社の社員になったつもりで、新規事業立案に取り組んで頂きます。 全チームに対して、新規事業立案にまつわる基礎的な知識・当社の実践的なノウハウをレクチャーした上で、チーム単位で新規事業のプランを立案していただきます。当社の新規事業部門の責任者~リーダークラスのメンター社員が、参加者のみなさんの事業案にフィードバックを行いますので、実際に事業化されるためには「どこまで考える必要があるのか」をリアルに体感することができます。
━ 【27卒】エンジニア職_「次世代ビジネス価値創造インターンシップ」技術を価値に、価値をビジネスに、ビジネスを社会インパクトに! ウイングアーク1st株式会社より抜粋
↓↓↓ 詳細ページはこちら ↓↓↓
↓↓↓ インターンの Program1 についてはこちらの記事をご覧ください ↓↓↓
Program2 での目標
Program2 では当初、アプリ全体が何となく動作するようなものを作ると想定していました。しかし1回目のレビュー会にて必ずしもプロダクトを動かす状況に持っていく必要はなく、プロダクトをより詳細にするのを目的にするべきだと気が付きました。そこで最終的には誰が見ても同じプロダクトを想像できるのを目標に開発に臨みました。ただ当初のアプリ全体で何となく動作するものを想像していて良かったと思っています。全体を見るとユーザが直接手に触れる部分だけではなく、アプリのコアとなるデータの構造やそのデータ同士の連携について考えるきっかけになりました。それによってより具体性のあるデモになったのではないかと思います。
Program2 での作業
Program2 でも Program1 に引き続いてチームとして熱量を保って作業をするために、なるべく日を空けないでコミュニケーションが取れるようにミーティングを設定していました。振り返ってみると高い頻度で話し合う機会を設けられていたのかなと思います。最後まで話し合いの熱量が下がることなく走り切れたのでその点は良かったと感じています。また一緒に熱量を持って取り組んでくれたチームメンバーのみんなに感謝です。
話し合いについて
Index | 日付 | 題目 | 参加した人 | 中心的に話したこと |
---|---|---|---|---|
1 | 9/2 | 第1回ミーティング | チームメンバー | Program2 での目標設定 |
2 | 9/7 | 第2回ミーティング | チームメンバー | それぞれの進捗の確認、次のレビューへの準備 |
3 | 9/9 | プロダクトレビュー_1 | チームメンバー&社員さん | |
4 | 9/10 | 事業レビュー_1 | チームメンバー&社員さん | |
5 | 9/12 | 第3回ミーティング | チームメンバー | Program2 での目標の転換 |
6 | 9/15 | 第4回ミーティング | チームメンバー | それぞれの進捗の確認 |
7 | 9/19 | プロダクトレビュー_2 | チームメンバー&社員さん | |
8 | 9/19 | 事業レビュー_2 | チームメンバー&社員さん | |
9 | 9/21 | 第5回ミーティング | チームメンバー | 発表に向けた調整 |
10 | 9/25 | 第6回ミーティング | チームメンバー | 発表資料第1版の擦り合わせ |
11 | 9/28 | 第7回ミーティング | チームメンバー | 発表資料の最終調整 |
12 | 9/29 | 成果発表会 | チームメンバー&社員さん | 最終発表 |
役割分担
Program1 から引き続いて4人のチームの中で CEO の役割を取り、開発ではフロントエンドの設計と実装を請け負いました。チームメンバーはそれぞれフロントエンド、バックエンド、データ収集とモデル作成、アプリのコア体験のためのフィールドワークという分担で作業していました。最終的にバックエンドの開発を集中的に行わないという判断をとったため、もう1人のメンバーと合流して一緒にフロントエンドの開発を行いました。
行ったこと
GitHub のプロジェクト作成 フロントエンドのプロジェクトの立ち上げ フロントエンドの画面設計(figma) API設計(バックエンド担当の人と一緒に) フロントエンドの実装
成果物:PWAアプリ(ios の WebView アプリとして動作可能であることを確認) 構成:Swift, WebKit + Astro, React, Radix-ui, Radix-ui themes, jotai, zod, (deck.gl , maplibre), typescript, eslint, prettier
メンターさん方のフォローについて
今回のインターンではレビュー会やオンラインチャットを使ってメンターさんからのフォローを受けられました。なのでそれぞれのチームに付きっきりでサポートしてくれるようなメンターがいたわけではありませんでした。
各レビュー会では毎回数人の社員さんからインターン全体の進め方のアドバイスや現状のプロダクトが持つ課題ついてフィードバックをいただきました。アドバイスも課題についても私たちの話し合いの中で生まれなかった視点から、アプリの良さを引き出すために必要な要素について話し合うことができました。レビュー会がなければ何を進めたらいいのか、何に迷わないといけないのかという指針を失っていたと思うのでとても良い機会だったと思います。レビュー会に向けて私たちが考えていることをアウトプットして、目に見える形にしなければ次を見据えた建設的なアドバイスは得られないので、うまくレビューをいただけるようにする工夫も必要であると感じていました。
成果発表会について
成果発表会はZoomを用いてオンラインで行われました。先にもう片方のチームが発表し、私たちのチームはその後に発表するという形でした。
もう片方のチームは Program1 のときからピボットをしていて、大きく異なるプロダクトになっていました。ピボットを行っていたのに驚きを感じました。私たちのチームでも Program2 が始まったときにプロダクトの抜本的な見直しを行なってピボットをしないという判断をしたので、どのような発表になっているのだろうと気になっていました。発表は目的と対象が明確化されていて良いなと感じました。発表の中には含まれていなかったのですが、プロダクトのデモとして実際にどのようなユーザ同士の繋がりが生まれて、そこからどのような価値が生まれるのかを具体的に想像してみたかったと思いました。
私たちのチームの発表は4人でローテーションとして発表していくというもので、それぞれが中心的に役割をこなした部分について説明を行いました。オンラインだからこそ発表者の交代に手間取ることなく、発表が行えたので面白い挑戦だったと感じています。またちゃんと通して練習する機会はあまりなかったのですがそれぞれの説明する範囲についてあらかじめ予定時間を設定していたため、間延びすることなく発表時間内に収まった説明ができたのではないかと思います。発表資料は私たちの伝えたかったことを載せ切ったものになったと考えています。 Program2 ではチームメンバー全員で発表資料の構成を考えただけでなく、メンバーそれぞれで暗黙的に共有されている知見が多く存在していて、今の資料が客観的にみて何が足りていないのかが分からないという課題を最終的に抱えていました。そこで適切に外部の人をうまく使って意見を得られると良いなと感じました。ただ最後にいろんな情報を盛り込もうとした結果、プロダクトの持つ2面性がそのまま資料に組み込まれてしまいました。これは私たちが何を重視しているのかがうまく伝わらない理由になるので良くなかったと感じています。
ウイングアーク1st 八ヶ岳コンテスト での発表について
成果発表会からデモ動画の変更というブラッシュアップを踏まえて、秋葉原の D.E.BASE にて八ヶ岳コンテストの中で現地に集まったチームメンバー2人で発表を行いました。当日はある程度リラックスした状態で発表ができたと思います。発表には人の掛け合いをデモする場面がありました。先日の成果発表会ではオンラインだったため息を合わせる必要のある掛け合いでの発表の進行はできなかったのですが、前からその方針でやりたいなという話はしていました。しっかりとした打ち合わせの上に決まったことではなかったのですが、壇上に立ったときにチームメンバーと声を掛け合ってやろうと決めました。また成果発表会では4人で発表を分担していたのですがそれを2人で分担するなど、突発の調整が多くありました。ただメンバーの機転と協力があって大きな問題なく発表しきることができました。
そのあとの懇親会では役員の方からフィードバックをいただきました。収益性に関しては課題があるが、ユーザー体験を中心にプロダクトの作り込みについては良かったと言ってもらえました。
Program2 で苦労したこと
全体として
Program2 で最も苦労したのは限られた時間の中で良い形で成果物を残せるようにタスクを決めることでした。今回のインターンでは成果発表会があるため、発表会の資料作りについては必ず行わなければいけませんでした。ただ他の工程については具体的な指示があったわけではなく、いわゆるベストエフォートの状態でした。ただそのような状態で闇雲に作業して到達できたところまでを発表するだけでは、私たちが伝えたい内容が適切に伝わるとは思えないですし、最もコアとなる部分をうまく説明できない可能性もあります。それでは良くないと感じていつまでに何を完了させて、最終的にどのようにまとめるのかをある程度考えながら進める必要がありました。ただ実際には発表でどのようにまとめるのかを考え始めたのはだいぶ後の方になってからとなってしまいました。これには1つ理由があり、プロダクトのコアとして押し出していく部分をうまくアウトプットできていなかったからです。何の情報をもとにどんな結果を返すのかというアイデアはざっくりと決まっていたものの、扱う情報の粒度が粗くなっていました。具体的にはユーザの趣向を汲み取るという仕組みを作ろうと考えているなかで、何の情報が集まればユーザの趣向を汲み取れるのかが不明瞭な状態でした。そこで関連するデータのスキーマを考えて、ユーザに提供するデータを形作っていきました。加えてUXを実際に操作可能な状態にして、操作感のフィードバックを得られるようにしていました。これがある程度終わるとカスタマージャーニーが見えてきて、具体的にどんなユーザに対して何の効果を与えられるのかが明確になりました。ただアイデアがある程度固まった段階でもっと詳細なカスタマージャーニーを組めたのではないかと今振り返って感じています。一番初めにアプリの構成やスキーマの設計を集中的に行って、今後のタスクの見通しを立てるように考えていたのですが、もっと前に具体的なユースケースまで落としておけばスキーマ設計への手戻りも起こらず、良い開発ができたのではないかと思います。
カスタマージャーニーがある程度見えてきた段階で日程的にも発表が近づいてきたため資料に起こし始めました。この工程はメンバー全員で行い、さらなるユースケースの分解とアプリのアピールポイントの洗い出しと、詳細詰めを行いました。この段階でアイデアだけの状態で発表した前回よりもとても良いものになっているという自信がありました。Program1 での反省にも書いていたように、発表資料に筋道が通っているのかを確認するだけではなく、何を大切に話を聞いてもらえるのかを深く考えられたため、進め方自体も良くなっていると感じていました。
技術的に
技術的に Program2 で苦労したことは、実際にユーザが体験できるイメージを湧かせるネイティブアプリを作らなければいけないところです。私自身は Swift によるアプリ開発の経験(ARKit / RealityKit)はあったのですが、一般的な ios 向けアプリの開発経験があるわけではありませんでした。そこで具体的にアプリとして動かすには何が必要なのかを洗い出すところから始める必要がありました。そして Swift によるネイティブアプリと バックエンドとの連携を決めました。ただその方針で実装を進めるなかでこなさなければいけないタスクの量に対してキャッチアップの時間が十分に取れるわけではないと感じました。UX が重要なこのプロダクトで具体的に価値をうまく説明するには体験を作り込むべきなのですが、SwiftUI にとても詳しいわけではなかったので最低限の動作を可能にする以上のことができませんでした。Web であれば UI 作成や状態管理に対してネイティブアプリよりも知見があったのでそこで既存のネイティブのコードを対話型生成AIを使って Web に移植しました。Web での開発を行うことで開発スピードは上がったのですが、ネイティブアプリの良さが損なわれる可能性があると感じました。具体的には操作感が悪化やネット環境がないとアプリを利用できないところで、データの通信量が肥大化することろです。操作感の悪化についてはUI の作り込みとGoogle の Workbox というライブラリを使って ServiceWrokerを設定し、なるべくキャッシュを行うようにしました。これでローディングによる操作感の悪化やオフラインでも動作するようになりました。Web の実装自体は時間はかかったのですがそこまで苦労していなかったと思います。
このインターンを通じて自身が成長するために必要になると考える能力
- 自走する能力
- 筋道を立てて計画的に物事を進める能力
- 自分の意見を言葉にして対話の中で説明する能力
- 論理的な根拠を持った説明をする能力
- 他の人が(専門的な用語を使って)喋っているのを噛み砕いて理解する能力
これらの能力がある程度備わっていないとこのインターンを通じて新規事業の立案を行なっていくのは難しいのではないかと振り返って思います。
まず自分自身で自分の目標を設定してそのために必要になる工程を分解して作業に落とし込む能力は必要になります。これがないとあまりにも短い限られた時間の中でアウトプットを出すのがとても難しいです。
また話し合いの場では自分の意見をその場で発言する行動を起こす必要があります。その発言について論理的な根拠を持った説明ができないと建設的な話し合いにならない場合があります。最初のアイデアは直感に基づくものであっても、そのアイデアがなぜ良いのか、なぜ悪いのかは根拠を持って言葉で説明できる必要があり、それができないと話し合いがうまく進まない状況になります。
さらにビジネス用語や技術用語には初めて知る単語が数多く存在し、それらの言葉の意味を理解してどのように使用しているのかを噛み砕いて理解する必要があります。これができないとメンターさんやメンバーが喋る内容がうまく理解できず、自分の判断材料とできる情報が減ってしまいます。
自分に足りていなかった能力
以上にあげる項目の中で自分に足りていなかったと思う能力としては、「自分の意見を言葉にして対話の中で説明する能力」と「他の人が(専門的な用語を使って)喋っているのを噛み砕いて理解する能力」です。
まず「自分の意見を言葉にして対話の中で説明する能力」についてです。これは積極的に話し合いに参加できていなかったというわけではありません。むしろリーダー的な立場としてチームの話し合いがより良くなるように常に意識をしながら活発なコミュニケーションが取れるように意識していました。ただプロダクトの詳細を詰めていくフェーズで自分が疑問に思う点について、「何を疑問に思ったのか」についてはうまく説明できたのですが、「なぜ疑問に思ったのか」をうまく説明できない、あるいは説明するまでに時間がかかるというケースが多かったです。それが理由で話し合いが平行線を辿り、建設的な議論が行えない場面が多くありました。もっと自分の意見の根拠を言語化する能力があればもっと良い話し合いができたと思います。
また「他の人が(専門的な用語を使って)喋っているのを噛み砕いて理解する能力」についてです。これは話し合いの中で最初のうちはある程度受け止められるのですが、数十分話し合いを続けているとだんだん相手の話している内容を噛み砕いて理解できなくなってしまう状況に陥ったために感じました。頭がオーバーヒートしてしまうような感覚に何度も陥ることがあり、そうなると情報をうまく切り取って判断に利用する、またその判断を言葉にして伝えるというのができない場面がありました。これはどちらかというと脳の体力的な部分なのかもしれないですが、もっとちょうどいい粒度で情報を理解していけるようになると、負荷として自分に蓄積しないようにできるのではないかと思います。
それ以外に意識したこと
上記の能力の他にチームメンバーと円滑なコミュニケーションを行えるような状況づくりを常に意識していました。
チームで行う上に話し合いのほとんどの時間がオンラインということで今回はコミュニケーションに特に気を配っていました。定期的に話し合いを行なって現状の把握や決めなければいけない事項の洗い出しと割り振りを決めていました。その中でチームメンバーのやる気を保ってプロダクトがより良くなるように活動するためには円滑にコミュニケーションを行なって、割り振られた工程を全うしてもらう必要がありました。そこで主体的に活動を行なってもらえるようになるべくネガティブな気持ちに落ち込まないように可能な限りフォローをしようと気を遣っていました。メンバーは経験も知識も全く異なる人たちでしたので何も意識せずに会話をしているだけでうまくコミュニケーションがいく可能性は低いと考えていて、その中でどうすると良いのかを常に考えて話すようにしていました。
インターンの中でできなかったこと
今回のインターンでは Program1, Program2 を通じて、場面ごとの振り返りを行えませんでした。Program1 が終わったあとにメンバーと話す中で KPT ができたらいいなという話はチラッとしていたのですが、実際には行えませんでした。振り返りが行えなかったために実際にメンバーがどのようなことを感じて、何を考えながら取り組んでいたのかがあまり見えてこなかったのが惜しいなと感じています。チームで話し合いをするにはそれぞれの考えを理解する必要があって、そのためにはチームメンバー同士での話し合いによる振り返りが必要であると考えています。今回はこれが出来ていなかったためにタスクを割り振りやそれぞれの進捗に対するフィードバックを納得できる状態で行えているのかの意思疎通ができていなくて、改善を行えませんでした。今回は振り返りの機会を設けずに進めたケースとして自分の経験にはなりましたが、もっと良いプロダクトのブラッシュアップのためにはどこかでやるべきだったのではないと感じています。メンバーからのポジティブなフィードバックはやる気とモチベーションにも直結するので、今回のような自主性に委ねられる場合はなおさら必要ではないかと思います。なお振り返りについても自主性を持って時間と労力を割かなければいけないので直接的な生産に直結しない工程がどのように生産性に影響するのか、そのトレードオフをどう捉えるのかという問題も別で存在していました。
今回のインターンで難しかった点
今回のインターンで難しかった点の1つに自主性と責任感があります。チームで話し合いや開発を行う中でプロダクトがより良いものになるようにアップデートしていくのが趣旨のインターンで、主にインターン生が得られるものは自身の能力的な成長と代表作となるプロダクト、チームで頑張るやりがいや達成感でした。この状況で他のメンバーに対してどの程度の自主的な活動と責任感を求めていいのかが私には最後まで分かりませんでした。私には対外的に中途半端な発表を絶対にしたくないという強い意志があり、その自身の信条を守るために自主性を持って取り組んでいました。ただ他のメンバーがどのように考えているのかはいまいちよく分かりませんでした。私を含めてそれぞれのメンバーには私生活があり、学業や職場でやるべきタスクが存在し、その上でインターンを行なっているものだと理解していました。このインターンはある程度の完成度が求められる成果物を実現するための稼働量が相当に多く、気楽に続けられるようなものではありません。また状況によっては逃げ出したくなるほどの辛さやしんどさが蓄積する可能性があると感じました。その中でメンバーに対して過度に自主性を求めたり、責任感を押し付けるような行動を取るとメンバーの状態がどのように変化するのか想像するのが難しい状況でした。これだけコミュニティの狭いエンジニアの世界で気まずい関係が社会人になる前から生まれてしまうのは損失になりますし、日程的にも人数的にも厳しい中で成果物を形にしなけれればいけないのでメンバーを失うという事態を起こしたくありませんでした。これはメンバーそれぞれに聞かなければ仕方のない部分もあるので、振り返りの場を適切に用意できていれば良かったと感じている理由の1つでもあります。
最後に
今回のインターンを総括すると大変だったの一言に尽きます。これまで参加してきたどんなインターンよりも忙しく時間も頭も使ったと思います。どのように作業を進めるのかではなく、何を目的に置いて何の作業があるのかを考えて優先順位を決める必要があり、これを自主的に考えるのが大変でした。メンターさん方のレビュー会のおかげで大きく方向を誤る事態にはなりませんでしたが、レビュー会で受けた内容を自分たちで噛み砕いて次にやるべきことを決める必要があり、話し合いと意思決定を行うのが大変でした。実装については特に特筆すべきことはなく、実現可能性を示すために自分が扱える手段を用いて形にするだけでした。
インターンのチームメンバー同士で実際に顔を合わせる機会もほとんどなく、チームビルディングもチームで自主的に行わなければならず、メンバーそれぞれの自主性に任せて新しい知見のインプットを行い、それを踏まえた建設的な話し合いと根拠に基づいた意思決定を継続的に行い、それぞれに割り振られた作業を自分の研究やバイトがあるなかで自主的に時間を作って自分たちで決めた期限までに行わなければなりません。それぞれのメンバーは与えられた作業を基本的に自分の能力で解決する必要があり、できない場合には他のメンバーに対してヘルプを出す必要があります。またチームメンバーの様子に気を遣いフォローするのもチームの中でメンターの協力を受けられない状態で行わなければなりません。
これらの行動の全てをインターン生に求める仕組みには無理があると思います。十分なチーム開発経験のある学生にとってはこのインターン全体を振り返るとこれらの視点に気付くきっかけとなり、良い機会になる可能性があると思います。ただ来年も同じインターンがあったとしても後輩に勧められるものではないと考えています。インターン生が潰れる可能性があまりにも高く、それに対するセーフティネットが十分であるようには感じませんでした。心意気のある学生の心を挫いてしまった場合とても可哀想なので他のインターンをおすすめすると思います。
補足:インターン中の様子
