Default profile 2

2016-09-02(pixivインターン5日目【最終日】) cheeseinmisosoupCreated on 2016-09-08 by cheeseinmisosoup

    インターン終わってからぐったりしてニャオスが続いております。

    さて、これまで4回にわたってpixivインターンの日報を投稿させていただきました。今回は最終日の日報とあわせて全体のまとめを書いていきます。

    成果発表

    最終日は成果発表のため、スライドの作成と発表準備を行いました。

    メンターのmoyashipanさんのアドバイスを元にして、スライドは以下のような構成にしました。

    1. 簡単な自己紹介
    2. 何をやったか
    3. なぜやったか
    4. 技術的な課題
    5. 学んだこと

    発表の持ち時間は5分程度です。

    何をやったか

    わたしの成果は前回の日報の通りです。

    「カート一覧にカートを削除するボタンを追加する」という機能追加の意味を理解してもらうためには

    • BOOTHではユーザーがショップを開設することができる。
    • ショップごとにカートが存在する。
    • トップページのカート一覧からすべてのカートが一覧できる。

    という前提知識が必要です。

    そのうえで、従来のカート削除のUIの問題を認識してもらい、今回の変更でその問題が解決されたことを示すことになります。

    前提知識から順を追って説明すると退屈になりそうなので、最初に「カート一覧のカート削除ボタン」というフレーズをスライドで大きく表示しました。そこから「カート一覧って何?」という問いに答える形で、従来のカート一覧を表示しながらBOOTHのカートのシステムについて説明し、それに続けて従来のUIと新しいUIのデモを行うという流れにしました。

    何度かリハーサルをしたこともあって、この部分はスムーズに理解していただけたと感じています。

    技術的な課題

    ここでは、2日目の日報に書いたCSRFトークンの問題を取り上げることにしました。特に苦労した問題であり、サブドメインを採用した理由にも意外性があって面白いのではないかと考えたためです。

    しかし、クロスドメインのリクエストに関する問題を技術的な知識を持たない人に向けて説明するのが難しく、「異なるドメインに送信するリクエストには制約があります」といった浅い説明にとどめてしまいました。ウェプアプリを作った経験がない人には、CSRFトークンが付いていなかったとか、クッキーが送られていなくてCSRFトークンのチェックに失敗したというエピソードは理解不能だったと思います。今から思えば、「CSRFトークンは自分のサービスから送信していることを確かめるための合言葉のようなもの」というようなざっくりした解説を入れるべきでした。

    また、そもそもこの問題はwithCredencialsの存在を知らなかったのが原因で、本質的に難しい問題ではなかったと思います。これに限らず基本的な知識のなさで時間を無駄にすることが多く、機能の持つ意義を十分に考察することができなかったのは、今回のインターンの反省点の一つです。

    質疑応答

    インターン初日に他チームのメンターの方と雑談をするなかで、カート削除機能についていくつか疑問点が指摘されていました。

    質疑応答ではそこを突っ込まれそうだと感じていたので、あらかじめメンターの方と相談したり、想定問答を作成するなどして入念に準備していました。

    実際、最後の質疑応答では初日に問題を指摘された方から質問があり、「来たか…(ガタッ!」という感じだったのですが、予想と違った質問だったので別の意味でガタッとなり、十分な応答ができませんでした。

    これについては自分の事前準備を過信しすぎたのが直接の原因ですが、前節でも述べたように、機能の必要性について考察が足りなかったことが根本的な問題だったと感じています。

    また、これまで大学の基礎科目やプログラミング系の勉強会などで簡単なプレゼン発表は行ってきたものの、質疑応答は形式的なものだったり、グループの詳しい人に任せきりで手を抜いていたりして、実質的な質疑応答の場に立った機会が乏しかった、という経験値の問題もありそうです。

    他の人の発表

    総合職インターンの皆さんの発表も興味深く聞かせていただきました。ユーザー向けのメールの文面を考えたり、特集記事を作って公開したりという内容です。施策を行った後に客観的な指標を測定・分析して、より効果が望める形に改善して実行して、ふたたび指標を測定・分析するという合理的な手法が印象に残っています。

    各チームの「なぜその施策に効果があると考えたのか」「どのような指標を使ったのか」「結果をどう分析したか」という話は面白かったですね。

    技術職は動くものが作れて最高!という気持ちがありましたが、総合職も意外と最高っぽいという学びがありました。

    全体の振り返り

    5日間を振り返ると、思ったほどうまくはいかなかったというのが正直なところです。発展課題には着手できなかったし、唯一デプロイできたカート削除ボタンと周辺にもまだ手を入れたいところが残っているし、出しっぱなしのプルリクエストもあります。参加者のなかには、5日間で複数のプルリクエストをマージまで持っていった人もいました。

    実力が足りないながらも新機能をデプロイすることができたのは、メンターのrinkeiさんとmoyashipanさんのおかげです。テストフレームワークの使い方などの基本的な質問から、複数の実装方針のなかでどれがベストかといった答えの出しづらい相談まで、お忙しい中でもすべて丁寧に答えていただきました。ありがとうございました。

    自分の力不足を実感した一方で、日々サービスを開発している方の仕事を間近で目にすることによる学びもありました。それは担当範囲外のことであっても機会を逃さずに学び取ろうとする姿勢であったり、チーム内のコミュニケーションを円滑にするための気遣いであったり、つらつら書くとブログ記事一本分になるので省略しますが、このようなスキルはネットでブログや発表資料を見ただけではなかなか伝わりません。社員の方と同じように、同じ場所で同じ時間を過ごすインターンだからこそ学べたことだと思います。

    また、今回のインターンでは、ユーザーに価値を届けることに集中して開発に取り組みました。業務で使われているコードやドキュメントを読み書きして、レビューを受けながらコードの完成度を高めていく過程が面白かったのはもちろんですが、どうすれば画面の向こう側にいる誰かに価値を届けることができるのかを考えるのも楽しいことでした。趣味で書きたいコードを書くのとは違ったモチベーションがあり、プログラミングに対する考え方、ひいては「自分は何を追求したいのか」という自己認識を新たにするきっかけになりました。

    日報

    「ブログに書くまでがインターン」とはよく言われる言葉です。こんなことを書くと自己啓発的な内容になってしまって印象が:innocent:ですが、ブログに書いただけではインターンは終わらないと思っています。インターンで得たものを日常に生かせるようになったとき、初めてインターンに参加した意義が生まれるのだと思います。

    WikiHubの日報コミュニティにはインターン初日から今回を含めて5日分の日報を投稿させていただきました。

    インターンを通して何ができるようになったのか、何ができなかったのかを振り返り、これから何をできるようにすればいいのかという指針を確認すべく、これまでの日報を読み返してみましたが、なんだこれは、日々の振り返りではなく本日のおもしろバグ紹介ブログになってしまっているぞという感じで、日報としての出来は今ひとつだったなと反省しています。

    今後はより日報らしい日報を書きながら、一歩ずつ進捗を出していく所存です。これからもよろしくお願いいたします。