hunachi’s diary

Android studio でお勉強してます。

Wantedlyさんでインターンしてきました!

こんばんは!ふなちです(((o(*゚▽゚*)o)))

 

9/10~9/21の2週間,WantedlyさんのサマーインターンAndroid)に参加させて頂いてました!

 

メンターさんの住友さんに教えて頂きながら,色々学ぶ事ができた2週間でした.

 

wantedlyinc.com

wantedlyinc.com

Agenda

- お仕事の内容

- 学んだ事と自分の課題点

- イベントにも参加した

- ご飯

- インターンを終えて 

お仕事の内容

詳しいことは言えないでので大雑把なこと言います!

- iOSではリリースされて居るが,Androidでは実装されていない機能?の実装

  - カメラから渡ってきたbitmapから一部分を切り取る.

  - もともとあったコードを活用しつつアニメーションをつけたり等.

- 既存の画面をちょっとだけ拡張した.

  - Transitionを使ったアニメーション.

他に,わくわくさんとKotlinの導入をしたりなどをしてました!

学んだ事と自分の課題点

- コードを素早く正確に読めるようになる大切さ.

- 数学をプログラミングに活用する大切さ.

- 最終発表までに完成しなかった.

コードを素早く正確に読めるようになる大切さ

javaに慣れてないというだけではなく,経験が浅いのと効率的に読む事が出来なかった為か,コードを読むのに時間がかかってしまいました.

そのせいでコードを書く時間が減ってしまい,進捗があまり出ない...と言う悲しいことになったので.これからはもっと経験やコツを積んでサーっと読めるようになりたいです.

でも,住友さんにClass Hierarchyの見方など教えて頂いたりしたので前よりは早く読めるようになったと思います!

 

また,数年前からあるアプリは今の時代,負債が存在するのは当たり前なのでしょうがないのは分かってるのですが,今回触らせて頂いたコードは有名どころの設計パターンで書かれていなかった(独自Viewが沢山だった)ので,最初はコードを読むのに苦戦してしまいました.

私のコードを読む力が不足していたのが1番の原因なので言い訳に過ぎない訳ですが。゚(゚´ω`゚)゚。

独自Viewに関してはささっと作ったり読めたりしないと生きていけないので精進です.

 

私自身新規機能の開発だけでなく既存のコードを新しい設計に沿って書き換えるのも好きなので(前のインターン先ではFlux化をたくさんして楽しかったので),いつかまたお世話になる機会があるのであれば,コード改修をさせていただけたら(知識が沢山詰まったコードをもっと理解できそうですし,コードを読む力も上がりそうで)すごく楽しそうです!

数学をプログラミングに活用する大切さ

@CameraフレームからBitmapに切り出す

私は,サイズと座標系がCameraフレームから切り出したbitmapとdisplayでは異なるので,それをよしなに変換してくれる変換行列の役割を担うmatrixを作っていい感じにbitmapの一部を切り抜いたり,表示を正しくするようにしたりなどの実装をしました.最初の半分は住友さんに一対一で教えて貰いペアプロしながら書きました.

最初,行列を使うと教えて頂いた時には驚きました.「え,Androidで行列ですか?!」って驚きました.特に「二次元の画像の回転や移動を3*3の行列でする」と言われた時,数学でしか行列を触ってなかった私は「え,2*2 じゃないの????」と混乱してしまいました🌀でもその後白板を使ってどういう変換をしたらいいかというのを住友さんに教えてもらいつつ一緒に考えたことで,プログラミングでの行列の扱いも知る事ができましたし,3*3の行列を使う理由*1も知る事ができとても勉強になりました.

@幾何

他にも,いくつかの図形が存在する時にある点から一番近い図形を探索するコードなど(簡単な幾何コード)も他の人のライブラリを参考にしながらですが書いたりしました.Kotlinを使ってinfix operatorを使った拡張関数を沢山書けたので楽しかったです.

 

こういう実装を乗り越える事ができたのもある程度は学校での数学をちゃんとやってきたからだと思うので高専教育にちょっとは感謝していきたいです.ですが,自分の力だけですぐに解決する事ができなかったので普段から数学や算数には触れておくべきだったなぁと後悔しました.

最終発表までに完成しなかった.

既存の画面をちょっとだけ拡張する方の実装が最終発表までに終わりませんでした.

何がしたかったのか

Fragmentに乗った丸いアイコンをタップすると,別のActivityでそのアイコンが拡大表示(正方形で表示)されるようにしたかったので,その為にShared Element Transitionを使いたかった.

実装案

①Custom Transitionを書く.

②bitmapを毎回削って行く.

③遷移先のActivityでAnimationを書く.

④ライブラリを使う.

結果

そこまでTransitionやAnimation周りの知識があったわけではないので,どの方法がいいか分からず,何個か試しに実装してみたりしました.

①角を丸くする際に中心点移動するし無理っぽいって事で断念.

②解像度が大きめのbitmapを毎回削って行くのはパフォーマンス的に良くないので実装すらしてない.

③実装力がなくてどうしても上手くいかず断念.(頑張ればどうにかなります.)

④本当は自前実装がしたかったのですが,最終発表が始まる直前,諦めてこの方法で実装した.実装し始めて1時間くらいしかかからずにできあがった.

もう一つのタスク

bitmapを切り出すタスクの方も,OpenCVの関数を使って透視変換する際に失敗する時の条件を判定するコードがかけずじまでした.(行列が正則じゃないとダメとか色々調べたのですが,ダメでした,ちゃんとOpenCVの内部実装を読めるべきでした.精進🙏)

でも,このタスクの方はマージされて段階リリース中だそうです.楽しみです!

結論

先人の遺産を早く使うべきだった.アニメーションに弱すぎる事を再確認した.もっと落ち着いて丁寧に実装する癖をつけたいです.

最終発表もみんなの前発表できなかったです.実力があれば良かったのになぁと今までの怠惰な自分のお尻を叩いてあげたい気持ちになりました.

一緒にインターンしていた身近なゲ・ドリンクは凄い活躍していて社員全員の前での最終発表も上手で,羨ましかったので彼をお手本に私も頑張っていきたいです!

エンジニアとしての力をもっとつけたい.

住友さんは長い事エンジニアをされているので,考え方など色々教えてもらいました.

手始めに,ここまでやったから次はこれをしよう.みたいにもっと逐次処理のできる人間になりたいです.

イベントにも参加した

Kotlin愛好会 vol.4 がWantedlyさんで開催されたので参加させて頂きました.

love-kotlin.connpass.com

f:id:hanahanahunachi:20180930102842j:plain

色々あってわくわくさんにお題を譲って頂いたのもあり,講談枠で参加する事ができました🙏スライドは↓です!

speakerdeck.com

私の講談はターゲットがピンポイントで微妙だったかもしれませんが,他の方の発表はDSLやKOIN,ChangeLogの話など,知らない事を知る事が出来とても勉強になりました!運営さん,Wantedlyさん,ありがとうございました!!

また,Paniniさんともお話できて良かったです.twitter上でしか知らなかったので,明るい方で驚きました!

ご飯

- ランチ

- 夜ご飯

- 最終日

ランチ

会社の近くのお店にいつも社員さんが連れて言ってくれました.ありがとうございます!ただし,白金台なのもあり他の所よりほんの少しお高めなお店多い気がしました.

一番面白かったお店は,客がセルフで会計をするカレーうどん屋さんです.性善説で成り立ってる感があり面白かったです.

f:id:hanahanahunachi:20180929233849j:plainf:id:hanahanahunachi:20180929233826j:plain

チャーハンミニワンタン.

f:id:hanahanahunachi:20180929233839j:plain f:id:hanahanahunachi:20180929231836j:plain

また,高専OBのてっぺーさんに奢っていただきました.(ちぎちゃん先輩の誘導有り?)美味しかったです!

f:id:hanahanahunachi:20180929233836j:plain

シャッフルランチなど,社内イベントのランチもありました.いつもタイ料理のお弁当でした.初日のランチイベントで,ワクワクさんにパクチーの避け方について教えてもらったのが記憶に残ってます.

f:id:hanahanahunachi:20180929233853j:plainf:id:hanahanahunachi:20180930102804j:plain

夜ご飯

基本は一緒にインターンしてたゲ・ドリンクと食べに行ったり,会社で作ってくれている炊き出し?のご飯を食べていたのですが,最終日を除いて一度だけ社員さんにカレーに連れて行っていただきました.美味しかったです!ご馳走様でした🙇‍♀️

f:id:hanahanahunachi:20180929232046j:plain

炊き出しのご飯も安くて美味しくてとても良かったです!夜ご飯を会社で食べれるのはとてもいいと思いました.

f:id:hanahanahunachi:20180929234318j:plainf:id:hanahanahunachi:20180929234326j:plain

最終日

焼肉に行きたいです!って言ったら連れて言って貰えました.お高めのお肉,美味しかったです!ありがとうございます(((o(*゚▽゚*)o)))

またレポートの話など,私にとってなうなうな話題のお話ができたりして楽しかったです.ワクワクさんがおられなかったのちょっと残念でした!

f:id:hanahanahunachi:20180929232356j:plainf:id:hanahanahunachi:20180929232412j:plainf:id:hanahanahunachi:20180929232419j:plainf:id:hanahanahunachi:20180929232429j:plain

インターンを終えて

次お世話になる機会がある時はもっと頑張りたいです。゚(゚´ω`゚)゚。

今回のインターンではJavaを主に書いてました.それもあって,Javaも別に嫌いではないのでこれからもKotlinをもっと知るためにも今まで怠ってきた分,Javaの(JVMの歴史についての)勉強もちゃんとしていきたいと思いました!

すでにある程度できる人間である前提でインターンに参加させて頂いてたのにも関わらず,詰まっていた私を助けて下さった住友さんに感謝です.

また,人事の方とも1対1人生相談会?みたいなものが出来て楽しかったです!

私はインターンした期間が他の方より短かったのもあるのですが,他のインターン生との交流が沢山はできませんでした(> <。)でも,社員さんとは多少なりとも交流できて会社の雰囲気を知ることが出来たので良かったです.余談ですが,IOIerのMasaki Hara (@qnighy) | Twitterさんとお話したりする事もできました!

最後に....

Wantedlyさんには強い人しかいないイメージでした.インターン生も強い人が多く驚きました.そのおかげで沢山刺激を受けながら成長できた2週間(9日間)だったと思います.

ここで言うのも何ですが,以前はWantedlyさんのインターンはあまりイメージがよくなかった様ですが,今は全然大丈夫でした!お高め?の日給+交通費+宿泊費を出してくだりなおかつ,残業してるインターン生は多分いなかったと思います!しかも一応フレックスタイム制なので,私自身9:00~18:00で働いたりする日もありました.

だから私は強いぞ!って方は是非行くべきだと思います.

 

最後の最後に,

住友さん,ワクワクさん,他の社員さんの方々色々お世話になりました.本当にありがとうございました.またお世話になる時があったらその時はまたよろしくお願いします🙇‍♂️ 

 

住友さんのたぬきときつねと,私の小さなきつね.

f:id:hanahanahunachi:20180930102744j:plain

*1:回転と移動が一気にできるので楽だから3*3を使うのですね!!