京都でScrapbox開発インターンしてきた話
https://gyazo.com/2dd217366261cd802f3738c4bcf49a87
2018/08/06 ~ 08/31 の期間 Notaの京都オフィスで/yutaro/Scrapbox.iconの開発インターンをしてきました!yutaro.icon
結論から言うと、Scrapboxは最高
/yutaro/Scrapbox.icon の強力な知見共有能力のおかげでインターン生でも自然と開発に参加できた
検索したら大体欲しい情報が出てくる
社内/yutaro/Scrapbox.iconにページを作ると続々とアイディアや知恵が集まってくる
書くのも読むのも楽しいのでキャッチアップが全く苦痛にならない
約1ヶ月間楽しく開発を続けることができた
経緯
yutaro.icon は /yutaro/Scrapbox.iconのファン
使っててとにかく楽しい!
研究室で使っているうちに段々と好きになっていった
日頃チャットやドキュメントに書き込んでいない人が書き込んでくれる
試行錯誤の軌跡をそのまま残せる
ページ同士が自然と繋がって見てて楽しい
https://gyazo.com/475a5e5c0f7158ee5d7891c743eb9e7e
/shokai/shokai.iconさんと/daiiz/daiiz.iconさんと/masui/増井俊之.icon先生にお話を伺えて雰囲気が少しわかった
こういうイベントありがたい!
なんと、去年も同じような先輩がいた(/daiiz/daiiz.iconさん)
研究室の/kentarofukuchi/kentarofukuchi.icon先生に相談したところ/rakusai/rakusai.iconさんを紹介していただけた
後から同じ学科の友達 /progfay-pub/progfay.icon も応募してるらしいという話を知った
所属している学科 FMS ではかなり/yutaro/Scrapbox.iconが使われている 授業メモの共有やちょっとしたプロジェクトの管理からサークル運営までいろんなところで活用
大好きなサービスを開発できるんだからモチベは最高
面談の後、サマーインターンとして京都オフィスで開発させていただけることになった
初めてでも大丈夫
初インターン
そもそも他のインターンに応募していない... (応募方法すらわからない)
/yutaro/Scrapbox.iconを通じたコミュニケーションが円滑だったのがよかった
初一人暮らし
個人的に生活能力低めなので一人暮らしの負担はそこそこあったかも...
京都のゴミ出しはルールが複雑でちょっと大変
開発や会社に関するストレスがほとんど全くなかったので結果的に大変だったのは一人暮らしくらいだった
初京都
関東以外に住んだことないので二重初
部屋の鍵を貰った時に一緒に観光案内が入っていた!
土日はゆっくり観光できました yutaro.icon*2
修学旅行などでも行ったことがなかったので見て回れて嬉しかった!!!
インターン中の流れ
1日目
コードリーディング会を開いてもらった
/rakusai/rakusai.iconさんと/daiiz/daiiz.iconさんにコードの読み進め方やコードを読む流れをざっくりと教わる
キーワードやコードの場所などを探す方法を大まかに把握
あとは社内/yutaro/Scrapbox.iconで検索すればいいので特別に難しいところ以外は手をつけ始めるには十分だった
インターン期間中にやることを決める
Scrapboxに入れてみたい・試してみたい機能はたくさんあったのでやることを決めるのは苦労しなかった
自由にテーマを決めさせてもらえたのがありがたかった!
UserScriptでプロトタイピングしていたいくつかの機能をScrapboxに入れることを大目標設定 前提機能をいくつか作っていくことを小目標にした
2日目 〜
開発開始
びっくりするぐらいすんなり開発に入ることができた
開発にすんなり入ることができた理由を/shokai/shokai.iconさんが書いてくれた
基本的にはオフィスで開発
昼ごはんと休憩中以外は基本的には一人で作業している感じ
時々、/rakusai/rakusai.iconさんや/daiiz/daiiz.iconさんが進捗を聞いてくれる
出社時間は自由
2時のsprint meetingにいれば大丈夫と言う感じ
多少夜更かしして開発しても、次の日にゆっくり出社すれば良いという感じ
やる気が出た時にじゃんじゃん開発できて非常によかった
開発環境
流れ
1. 作りたい機能・実装方法・なにが良くなるのかなどをまとめてScrapboxに書く
2. 実装して pull requestを出す
3. フィードバックやアドバイスを受けて修正する
ややこしくなってきたらScrapbox上で議論する
4. LGTMを貰ったらmergeする
やりたいことを応援してくれる環境
開発中に社内Scrapboxに「こういう機能作りたいです」ページを作って考えてることを書いておくと知恵が集まってくる
開発が行き詰まったその時に細かく聞かなくても、寝て起きると/shokai/shokai.iconさんのアドバイスが来てて最高
新しく入って来た人にとっては、すごくやりやすい開発環境だった
筋が悪い時は納得いくまで説明・議論してくれた
もやもやした気持ちを残さずに次に進めた
これもほとんどストレスを感じなかった理由かも
Nota社内の/yutaro/Scrapbox.icon
新しい人が書きやすい環境を作り出せている
社内で議論になっていることにも学生の素朴な意見を書き込みやすかった
これが一番すごい気がする
試したことの軌跡が残っていて失敗を次に生かしやすい
自分がやりたいことを /masui/増井俊之.icon 先生が過去に提案していたりする
知見を生かした上で作り始められる
自然に知見の引き継ぎができていた
情報が自然と共有されている
昼食や休憩時のふとした会話でかなり突っ込んだ話ができていた
今やっていること・やりたいことを理解してもらえた上でアドバイスをもらえたのは本当にありがたかった
実装した機能
UserScriptからpageのタイトル一覧を取得できるようにした
https://gyazo.com/b14343385f330a716268128c0c3b752c
window.scrapbox.Project.pages
[]でのページ補完に使われているページタイトルのリストをUserscriptからでも取れる
(初めて mergeされたpull request!!)
New Page ボタンでページを切り出す時にいい感じにインデントを下げる
https://gyazo.com/551aae6586d85d427f59c430a82966a7
選択範囲の行が全てネストしている場合に行全体を選択して切り出すとネストが下がった状態で切り出される
1つのページにだらだらと書いて切り出すというように使っている場合が多かったのでこの機能を便利にしたかった
Random Jump Button
https://gyazo.com/d48397b3b738175d29a88e5db111c465
Project内のランダムなページに遷移するボタン
次にジャンプするページはボタンが押される前に決まっている
prefetchされているので超高速で次のページに遷移可能!
Random Jump Buttonを連打して、気になる記事を見つけてからリンクをたどるみたいな使い方ができるようになった!
忘れかけていた記事にリンクをつけたり情報をアップデートする機会になる
参加したてのプロジェクトや公開プロジェクトで連打すると高速に雰囲気がわかったり、気になるページが見つかったりする
すごくいい場所に置かせていただけて yutaro.icon が一番びっくりした
喜んでる人をTwitterで発見した時めちゃめちゃ嬉しかった!!!!
インターン中に作っていた・作りかけの機能は他にもいくつかあるのですが、無事mergeされたら書き足す予定
最後に
Notaの皆さんには本当にお世話になって不自由なことなく欲しい機能をひたすら開発し続けられた楽しすぎる毎日でした。
ありがとうございました!yutaro.icon*3
/shokai/shokai.iconさんがインターンの総括的なありがたい記事を書いてくれていた
おまけ
歓迎会をしていただいた時に生まれた名画
https://gyazo.com/16e6ed4b1cc181dda7bbadbb5eeba019
/pastak-pub/pastak.icon さんがjavascriptのthisを午前2時に教えてくれている図
かろうじて聞いている左の後ろ姿がyutaro.icon 右で死にかけているのが/progfay-pub/progfay.icon
Tシャツ好評発売中!
/shokai/shokai.iconさんが買ったらしい
ちょっと欲しくなってきたw
最終日にいただいたInternship仕様 Tシャツ!!!!!yutaro.icon*5
https://gyazo.com/94cab5200ae0e29e2b056ed8dd0a91fc
https://gyazo.com/47115baa197f860fcbf8fbf5a13f3543
去年の/daiiz/daiiz.iconさんの時は#Scrapbox だったのが今年は[Scrapbox]になっているところがポイント