チームラボ通年インターンシップ参加記
こんにちは、お久しぶりです。 1月ほど経ってしまいましたが、春季休暇中に参加させてもらったインターンシップについての記事を書きたいと思います。(だいぶ遅い)
2月27日から3月14日までの約2週間、チームラボさんにインターンシップでお世話になりました。
本当にありがとうございました。
行った内容
実際の業務のチームで行われているAndroidアプリ開発に参加させてもらいました。
インターンシップでは会社によって、全く業務に関係ないことだったり、1人だけで進めていく作業もあったりと聞いていて少し不安でしたが、自分がお願いしたように実際の業務のチーム開発に参加できてとても良かったです。
インターンシップ初日時点では、要件定義が終わって開発が始まったばかりでした。ですので本当に開発の初期段階から関わらせていただくことができました。
開発した画面
- アプリ初回起動時のチュートリアルが終了した際に出てくる画面
- ある桁数の決まった2つの数値をユーザーに入力してもらいその2つの値が正しいか調べ、正しいならアプリ内に保存する画面
一つ目の画面はプロジェクトでの開発に慣れてもらうみたいな感じで画面も処理自体もシンプルでした。ですが最初の1週間のほとんどをここで消費した気がします。
二つ目の画面は2つの値が入力されるまで確認用のボタンを非活性化させておく必要があったため一つ目に比べ複雑でした。ですが、後半ではだんだんと慣れてきたのかなんとかインターンシップ期間中にひとまず終わらせることができました。
初めて触ったインターンシップで触った技術やライブラリ、考え方
- DataBinding
- ConstraintLayout
- Redux
- Dependency Injection
- RxShared
- DataBindingのCustom Setter
どれも名前聞いたことある気がするけど実際に触ったことはないことばかりだったのでとても刺激的でした。
インターンシップで学んだこと
もちろん先ほど挙げた始めた触った技術も学べたのですが、それ以外にもチームのミーティングに参加させてもらい、どういう風にプロジェクトを進めていくのかとかモバイルチーム以外とのコミュニケーションとかも実際に見て学びました。
他にもコードレビューのありがたさや、文言をまとめた文書や画面デザインなどを管理したりコメントしたりするIDE以外でのツールの存在やその使い方などなど本当に多くのことを学ばさせてもらいました。
開発以外のこと
用意していただいた宿泊先が場所的にも設備的にも広さ的にもとても良かったです。
平日の昼にはメンターさんが他のプロジェクトの人などを数人呼んで一緒にご飯に連れて行ってもらったので自分がいるプロジェクト以外の人とも関わることができました。
連れて行ってもらったご飯屋さんも美味しいところばかりでした。
出勤時間が10:00だったので朝余裕をもって準備して出社することができました。
学校の登校時間もそれくらいにして欲しいくらい...()
土日が休みだったので遊びに行ったり東京で行われているイベントに参加したりもできました。
席の両隣の2人には特に世話になりました。
最後に
インターンシップ期間中は本当に多くの人におせわになりました。
ありがとうございました。
とても貴重な体験ばかりで本当に良い経験になりました。
チームラボさん以外の企業にもインターンシップなどで行ってより多くのことを経験したいです。
Bonfire Android #3参加録
こんにちは、mitoです。
1週間くらい経ってしまいましたが、「Bonfire Android #3」のブログ枠用ブログです。
Bonfire Androidとは
自分も今回が初参加で、詳しいことはまだよくわかっていないのですが 毎回あるテーマに沿って、Androidに関する15分くらいの発表が行われるイベントで 主催はYahoo Japanです。
今回のテーマは「サービスと設計」でした。
参加への経緯
Bonfireは、Yahoo Japan主催なのでももちろん会場はヤフー株式会社で、沖縄住みの自分は普段なら参加できないイベントだったのですが、今回某社のインターンシップに参加している期間中に開催されるということを知ったので即参加登録しました。
人数が多かったので空いていたブログ枠で確実に行けるようにしました。
Androidアプリの設計について
自分自身は、ちょうど参加していたインターンで初めて設計に触れ始めたくらいには 設計について初心者状態でした。
ずっと、「動いているから問題はないんだろうな〜」「一人で書いててどこらへんに何が書いてあるかわかるからいいか〜」みたいな感じで書いていましたが、今回のBonfireやインターンシップで設計について知り、どのような影響があるのかわかってきたので既存のプロジェクトや新規プロジェクトに導入できるとこからしていきたいです。
Bonfire Android #3の内容
スケジュールは
- Androidアプリにおけるソフトウェア設計の考え方
- 課題感から始めるクラス設計とチーム内での合意形成
- 4年の開発が積み重なったアプリへのリファクタリング手法
- 設計にみるAWA Androidアプリのこれまでとこれから
- Yahoo! JAPANアプリのLayered Architectureについて
でした。 見つけることができた公開されている資料はリンクを貼っています。
発表の詳細は「#yjbonfire」のタグをTwitterで見ながら、公開されている資料を読んでくれ頼む、って感じで省かせてもらいます。(まとめられる自信がない)
感想
発表
設計についてほとんど知らない状態で今回のBonfireに参加したため発表された内容を全部理解できたわけではありませんが、なるほどと納得できるものやこんなのもあるのかなどが多くあって、とてもためになりました。
何人かの人の発表にもあったのですが、既存プロジェクトに設計を導入する際は、そのプロジェクトで起こっている問題やメンバーの構成、学習コストをきちんと判断し適した設計を考えることが大事、ということでやはり設計に関しても「銀の弾丸などない」ということがわかりました。
適した設計を考えることも大事ですが、どの設計を用いるなどをチーム全体で共有することも大事ということも。
感じたこととしてはやっぱり、今まで設計を考えたことのない人に対して導入すると言ってもそれを導入するメリットを理解してもらうのは難しいだろうなということです。
とりあえず導入しても、効果について疑心暗鬼状態では開発スピードは落ちていく一方になりそうです。
そこらへんも学習コストとして考慮しないといけなさそうではあります。
イベントに申し込んだ段階では、「サービスと設計...?、なにそれ...、自分がやったことのない分野だから発表を聞いても内容も利点もわからなそう...ブログどうしよ...」みたいな状態でしたが発表では、こんな問題があってこういう状況だからこの設計パターンを導入してみたみたいな感じでなぜそれを選択したのかがしっかり話されていて、とても理解しやすい発表でした。
もしこのBonfireでの発表を聞いていなかったらまた設計に触れ流のがどんどん先延ばしになってしまっていたと思うので参加して、登壇者や同じ参加者の話を聞けてとてもよかったです。
懇親会
発表終了後にそのままの会場で懇親会が行われ寿司が出てきたのですが、会話に夢中になりすぎて結局寿司を一貫も食べれないまま容器は空に...
しかし、スタートアップした人や他高専生、Yahoo Japanの社員の方などなど多くの人と話せてとても楽しかったです。
今までイベントや大会の懇親会では、開発が終わっていないために早めに抜けたり参加していてもあまり他の人と話さなかったりしたのがとてももったいなく感じました(今更)
来年度以降のPCK組は早くに開発を終わらせて、コンテストの懇親会にきちんとでて他校の人と話をして欲しいです。
少し、短いですがここで終わりとさせていただきます。
また機会があればBonfireに参加したいです。
mito.
始める時に思ったこと
この記事は主にプログラミングを始めたばかりの人に送る記事です。
偉そうなことを偉そうに書いているかもしれませんがお付き合いください。
偉そうだなとか言うだけの人よりじゃあどこでそう感じるのかどうやったら感じない文章になるのか考えたり指摘してくれたりする人がより素晴らしい人だと思います。
mito自身にも当てはまることがあったりしますが、とりあえず自分のことは棚に上げて書いています。
とりあえずやってみる
新しいことに挑戦するという事はとても勇気がいります。
失敗しないだろうか、自分にはできないんじゃないか、やらなくてもいいのでは、時間の無駄かもしれない、etc...
そう言うことをどんどん考えていくと挑戦しない道を選んだ方が楽なことが多いです。
でも、そこを敢えて挑戦していくと違った世界が見えてくるはずです。
新しい言語の勉強をするときもとりあえず動く何かを作ってみて実感を得ることが大事になってきます。
自分は今年のPCKの開発の際に、挑戦しなくてもよかったかもしれない事をやりながら開発していました。
一番大きいことは積極的にライブラリを使っていったことです。
去年のPCKで出したふぁみここのコードを見るとサーバとの通信方法やJSONのパースの仕方などを標準のはめんどくさい、使いにくいと言われても標準で用意されている機能だけでやったのが多いです。
(一部、okhttpとかが使われているのはおりさの先輩に相談した時のコードです)
その時は、使いにくさだったりは特に感じていなかったし、いざライブラリを使おうとなっても使い方が分からず結局元に戻るだろうと思いが強かったです。
そして今年の開発でもそのコードを流用すればすぐに終わったかもしれない事ばかりでした。
でも、今年はmoshiやokhttp、Ankoといったライブラリを多く使いました。
特にAnkoはKotlinでxmlなしに画面レイアウトが作成できるみたいなライブラリなんですが、そもそもKotlinの情報が増え始めた頃でAnkoの情報が多いわけもなく、分からないことだらけで辛かったです(特にid周り)
こういったライブラリを使ったことでライブラリの便利さ・有り難さが身に染みてわかりました。
今は積極的にライブラリを使うようにしています。
少し脱線しましたが、やってみることによって得られる経験はとても良いものです。
やってみて結局使わなかった・いらなかった・分からないままだったでも、それはそれで良いと思います。
使わなかった・いらなかったでも他のプロジェクトでは使えたり、他のことに挑戦する時にあれではこうだったけどこれではどうなんだろうとかで良い経験値にはなると思います。
分からないままでもしばらく他の事をやってたりして時間を置いてまたやって見ると案外楽になったりします。(少なくとも悪化することはないと思う)
できることからやる
なんか上のやつと矛盾したことになりそうですが、やりたいことがあるが途中でやる気を失ってしまったり達成できずに終わってしまったりすると精神的にしんどいです。
でも、そういう場合って基礎が足りていないだけだったり前提知識がないだけだったりするのでやりたいことだけでなく、今できることを地道にやってどんどんやりたいことに近づいていくというのも道だと思います。
いろんなことに手を出す
よくいろんなことに手を出すより1つのことを極めた方がいいだとか、広く浅い知識より狭く深い知識の方がいいだとか言われることがあります。確かにこれらのことは技術職や専門職の人達にとっては必須ですが、プログラミングを始めたばかりだったりどれを深めていいのかわかっていない状態だと、それよりはいろんなことに手を出して自分の好きなことやりたいこと興味を持ったことを見つけるのが最優先だと思います。
(自分の経験とか書きたいけど1つ目で疲れた長くなりそうなので以降省略)
時にはなぜを忘れる
開発中に実装したい機能がある時にやり方が分からずにググってQiitaとかStackOverflowとかにあるサンプルコードを見つけて使いたいときがあります。
その時になぜそのコードが動くのか分からない状態で使うのは良くないと言われます。確かにその通りでそのコードの意味がわからないと使用独特のバグが生えてしまったり、使えなかった時の対処法がわからなかったりして開発に支障が出てしまいます。でも状況によってはそんなこと言っていられず動けるものを作らないといけないと言った時はわからないままでもいいと思います。
わからないままでもしばらくすると自然にわからないままにしたくないだとか単純に興味が湧いらとかでなぜ動くのかを調べるようになります。
とりあえずは動かすことに意味があると思います。
自分の環境を作る
プログラミングをする際に、ツールにもっとこだわった方が良いです。
どんなに有名なツールでも自分にとってとても使い勝手の悪いものだったらそれを使い続けることは精神的負荷になってきます。
これもとりあえずやってみると近いですが、どんどんいろんな環境を試してみて自分にしっくりくるものを見つけ、それをまた自分に合うようにカスタマイズしていきましょう。
自分の場合はもうJetBrains製品の虜になってしまい、AndroidStudioやIntellijのカスタマイズを結構やっています。
しかし、もうすでに開発が終了していたり非推奨になっていたりするものはなるべく避けましょう。
それ以外であれば、周りの他人に少し言われるくらい言われても拘ったほうがいいです。
どんどん公開する
せっかく何かしら作っても、「いや、駄作だから,,,」とかと言って公開せずに自分や身内だけで終わらせてしまう人がいます。
正直、勿体無いと思います。
せっかく作ったものが日の目を浴びないというのもですが後悔しないと他の人からフィードバックを得られません。
フィードバックを得たものと得てないもののサハ歴然んです。
後悔したことによって起こる人はいませんし(多分)、どんどん公開していきましょう。
個人的にはgithubで星をもらえたらいPRもらうのは嬉しい。
理由を教えてくれそうな人を見つける
何かあった時にその理由や原因をきちんと教えてくれる人は良い人です。やるだけだよとかしか言わない人に聞いていても仕方ありません。他を当たってみましょう。
何かやろうとした時にダメとしか言わないよりなぜダメなのか説明があったほうがいいですよね。そんな感じです。
最後に
途中から疲れてしまって閣僚もだいぶ減って、いくつか項目を消したのもありますがいかがでしたか。
偉そうだなと思った人はいると思います。自分がそうです。
この記事は割と雑に書いてしまっていて間違っているところもあるとは思いますが、参考程度にしてやってください。
ここに書いてあることを実践したからといって必ず良くなるとは限りませんし、このことを意識しすぎるとそれもまた良くないでしょう。
何事も適当にやるのが良いですよ。(この適当は本来の意味)
頑張ってください。応援してます。自分も今以上に頑張ります。
mito.
2017年の振り返り
これはICT Advent Calendar 2017の27日目の記事です。
みなさんこんにちは、mitoです。
寒いですね。年齢を重ねていく度に寒さを感じるようになっている気がします。
いつの間にか学年的には高校生最後の年度ももう少しで終わりです。
とある事情で26日の夜中から急にバタバタしてほとんど寝れていないのでこの記事が27日中に公開されていたらいいな。
昨日(12月26日)の担当はkurokojiでした。
振り返り
今年あった・やった・なったこと
Android開発を教えながらのりょーこん作成
1~2人に聞かれた学校の勉強を教えるのはだいぶ慣れていてできるのですが、今回のような複数人相手に講義っぽく教えたり実装する機能を割り振ったりするのは慣れていなくほとんど行き当たりばったりになってしまったと思うので、参加していた13thには迷惑をかけていたかもしれません(今思えば結局ほとんど何も教えていなかった気がする)
一番基礎的なことを教えていなかった気がする...本当にごめん...
このりょーこん作成は確か1月2月くらいから始めて大会の活動が本格化し始める4月5月くらいまで続けていたと思います。
そこで一旦終了になり、統合・テスト・修正のmitoの作業が始まりました。
PCKの開発の良い息抜きになりました。
このりょーこんシステムは、実際に12月5〜8日に行われた研修旅行にて、「けんしゅうりょーこん」として試運転しました。
前日に変更しないといけないところが発覚したリ、ビーコンの数が足りてなかったりと色々なトラブルがありましたが、ちゃんと動いて点呼を取ることができていたので感動的でした。
mitoのgithubにてリポジトリがpublicになっていると思いますので興味ある方は見てみてください。
PCK
今年のPCKにはちょこちっぷマフィンとしておたすけじゅーるを持って行きました。
結果は去年同様、ベストデザイン賞でした。
アプリのUIのほとんどを自分が考えて実装したので褒められた時は嬉しかったです。(一番良いと言われていたところはIG先輩案のとこでしたけど)
仕様や画面デザインを確定させきれていない状態でタスクふりをして開発を始めてしまったため、結局びーまかが作成した1画面を丸々変更することになってしまいました。本当に申し訳なかったです。
詳細は前回の記事 にありますのでそちらを見ていただけると幸いです。
学生寮の保安委員長
これね、なんでやろうと思ったのか今の自分もわからない。
来年度から寮外生になるのですが、これ関連が理由の半分くらいを占めてます。
もちろん全男子寮生が当てはまるとは言いませんが、なんで自分が冷蔵庫に入れたものにくらい名前も書けないんですか。小学生よりひどい。
冷蔵庫内の物品を回収する前に毎回放送しているのに確認もしないんですか。放送やメールの連絡はちゃんと見て聞いて。
本当にお願いします。このままだともっとどんどんひどくなり、最悪全フロアの補食室閉鎖なんてこともあり得ますよ。(実際に可能)
それと次年度の委員長が決まらないんですか、誰か...
やりたくない気持ちはまあわかるけど,,,
ICT委員会副委員長
多分、去年の今頃くらいに副委員長になった気がします。
副委員長になったことによって2年の頃までは自分やチームがやっていることしか気にしていなかったけど、ICT委員会全体に関することも考えないといけなくなり、良い経験になったと思います。
副委員長の仕事を1年間できてとても良かったです。来年以降の委員長副委員長にも頑張って欲しいです。委員会の各位は委員長に負担をかけすぎないように各自しっかりしてください。
ちょこちっぷマフィンのリーダー
前回の記事 にも書いたのですが、リーダー・メインプログラマー・UIデザイナーの兼任は自分がリーダーとUIデザインの初心者だったからというのもあるとは思いますが大変でした。
どちらかに注力していると他のところでまだ?と催促され、全部を同時並行でできるほど経験や実力があるわけでもなくクオリティが残念なことになってしまう。
お前のやり方が悪いと言われるかもしれませんが難しかったです。でも、ちゃんと動くアプリを本選に持っていけ、受賞もできたので良かったです。
話がだいぶ変わるのですが、企画書を書いている頃か開発始まった頃くらいまで、チーム名は「ちょこちっぷまふぃん」と全部平仮名だと思っていました。
みとった〜開発
これの開発を始めた頃がいつだったのかは覚えていないんですが、今年の話とさせていただきます。
作り始めた理由が公式クライアントアプリで使いづらいところがあった、Androidアプリ開発の勉強が主な理由だったと思います。
もう基本的な機能は作り終え、あとは画面デザイン検討だったり、細々とした調整だけなので早くplayストアに公開したいと思っています。
公開するために、アイコン作成と名前を決めないといけない(みとった〜は音だけ聴くと色々不味い)けど全然進みそうにないです。
ビジコン
今年も去年同様、PCKで発表したアプリにビジネスプランをくっつけ提出しました。年明けにもビジコンがありそこにも出します。(最後のビジコンになりそう)
うちな〜ICTの方ではフロム理事長賞をいただきました。(去年と同じ)
某企業の某と某バイトの面接
今年の後期中間テストの頃から研修旅行前後に某企業の某と某バイトの面接や試験がありました。
先に結果をいうと両方とも合格?採用?されました。👏
春休みにしばらく東京に行ってきます。
これまで面接で合格したことがあるのが英検の面接しかな句く、そのほかの推薦入試や指導寮生の面接とかは落ちていたのでとても心配していましたがなんとかなりました。
良かったです。
またとない機会ですので両方とも頑張りたいです。
まとめ
今年も色々なことに参加・経験することができました。来年には進路の話も本格的になっていき考えないといけないことも増えそうな気もしますが、体調を気にしながら無理せず無理したいと思います。
皆さんも今年できなかったことややりたいことに来年はもっと挑戦していきましょう。
ここまで長い駄文になってしまいましたがお付き合いいただきありがとうございました。
良いお年を!
明日のAdvent Calendar担当は、がちゃみんです
mito.
PCKの反省記事はAdventCalendarに書こうか別記事にしようか悩む(PCKの反省記事です)
11月2日~5日にみんなが高専祭の準備や高専祭を楽しんでいる間、福島県会津に行ってPCKモバイル部門に「ちょこちっぷマフィン」として参加してきました。
PCKには2年連続での参加でした。
今年のPCKは記念大会ということもありプログラミング部門もモバイル部門も本戦出場チームが多かったです。(一枚の絵部門は知りません。ごめんなさい)
結果はベストデザイン賞でした。
(2年連続...ペンタブ2枚目......)
アプリ開発のために意見や話をしてくれた先輩、アイコンやロゴを作成してくれたるいコ、プレゼンやパンフ、ポスターの協力をしてくれたりし、副委員長パイセン、みずきち先輩、やがみあん先輩、何から何までお世話になったM教授、そしてチームメンバーの眠人とびーまかのおかげです。
本当にありがとうございました。
僕がPCKに参加することはもうないと思うので今の1,2年生やまたその次にグランプリは期待したいです。
チームでの役割
うん、流石に辛いものがあった(わっさん先輩とかすごすぎる...)
感想
良かったところ
- KotlinとAndroidに対する理解が深まった
- 見易さや理解しやすさを意識しながらコーディングできた
- ライブラリの便利さがわかった
- 新しいライブラリや書き方に挑戦できた
- ゲドさんやふなちさんと喋れた
- 温泉最高
- UIを褒められた
- 2年連続受賞できた
悪かったところ
- リーダー・メインプログラマー・デザイナー兼任は厳しい
- ポスター・パンフ・プレゼンの完成がかなりギリギリ(というかアウト)
- 教授に見せるのがだいぶ遅かった
- びーまかをプレゼンの準備に送り出すのが遅かった
他にも色々ある気がするけど今思いつくのはこれくらいなので以上で締めさせていただきます。
来年はプロコンに挑戦すると思います。
あと、Androidアプリケーション開発に興味持っている人を引きずり込みたいです。
関係ないけど、最近このブログのPVが増えて嬉しいです。
mito.
KotlinとJavaのソースファイルが混じっているAndroidプロジェクトを複数人で開発する時の注意
某コンテストに参加しており、1人はJavaでもう1人はKotlinで、コンテストに出すAndroidアプリを開発していて、その時に片方ではエラーと出て片方では何も出ていなくて2人ともビルドや実行はできるという状況に陥ったけど解決した話。
# 開発環境
Windows 10
Mac OSX Sierra
AndroidStudio 2.3.3
Java8
Kotlin 1.1.50
# 状況
- gitでバージョン管理をしていて、Kotlinで書いている人(以下K)とJavaで書いている人(以下J)がdevelopから生やしたブランチでそれぞれ作業をしており、Kがmergeした後のdevelopブランチにJがmergeした後に急に出てきたらしい(当人ではないので詳しくは分からず)。
- KとJはそれぞれ別フォルダにそれぞれの言語のコードを保存していました。(main.java.srcDirs += 'src/main/kotlin')
- AndroidStudioに「cannot resolve symbol」と言われ赤波線を引かれてエラー扱い。
- ビルドや実行はでき、「Message」ではエラーと出ない。
- ビルドや実行はできるがエラー表示され、他のエラーに気づけなくなる可能性があるためどうにかしたい。
- Kの方ではエラー出されていない。
- エラーが吐かれたファイルはMainActivity.java。
- エラーが吐かれた部分は全部、Kotlinで作成したクラスのインスタンス化だったり宣言をしているところ。
- Kotlinが入っているフォルダをAndroidStudioが見つけられていないっぽい...?
# 解決方法
ここまで読んできて、詳しい人なら気付いていると思いますが、
J側のAndroidStudioにKotlinのプラグインをインストールしたら解決しました。
これでAndroidStudioが.ktファイルを認識するようになったみたい。
そのあとは同じ状況にならずに済んでいる。
# 感想
エラーというか要注意扱いなのかと考えたけど「cannot resolve symbol」と言われたらね...
当然と言われればそうかもしれないけど、全く考慮できていなかった。
最初、全部Javaに書き直そうかと思って、少しJavaで書き直したところでめんどくさくなって解決方法を考えてみたけど成功してよかった。
今の所、これ以外でJavaとKotlinの混じった開発に支障はなくて安心。
進捗(´・ω・`)
AndroidStudioのプロジェクト作成方法
AndroidStudioを使ってAndroidアプリを作成する時に最も大切と言っても過言ではないであろうプロジェクト作成についての記事を書きます。
環境
AndroidStudio 2.3
MacOS Sierra
本題
まず初めに、「Start a new Android Studio project」を選択します。
次に「プロジェクト名」、「ドメイン名」、「パッケージ名」、「プロジェクトの保存場所」を決めます。
プロジェクト名等を決めたら、次は作るアプリの対象とするAndroidOSの最低バージョンを決めます。
その次に、デフォルトとなるアクティビティを追加することができます。
ここで「Add No Activity」を選択して追加しなくても後で追加できます。
最後に、追加したアクティビティの名前やもう少し詳しい設定をしたりします。
(ここでは「Empty Activity」を選択しているので名前だけです)
そして、「Finish」を押すとプロジェクトが作成されます。
mito.