hunachi’s diary

Android studio でお勉強してます。

LINE Fukuokaさんで長期インターンしていました!

こんにちは!

最近ブログをサボっていたので超久しぶり、ふなちです。いえーい。

 

本題にはいります。

自分は8月末から3月中旬にかけてLINE Fukuokaさんで長期インターンさせて頂いていました。(東京への引越しとか色々でブログを書き終えるのが遅れちゃってごめんなさい!)

もちろん高専にも通いながらのインターンなのでかなりお休みを頂いてしまう形になってしまったのですが、自分なりに出来る限り働くことができてとてもいい経験になりました。

 

AGENDA

- きっかけ

- 仕事内容(ざっくり)

- 会社の雰囲気

- 特に学べたこと

- 反省すべきこと

- 会社のいいところ

- 全体的な感想

 

きっかけ

受験が終わったあとに夏季インターン先を探そうとしたらほとんどの募集期限は過ぎてるわ、福岡での募集はそもそもの母数が少ないのもあって募集を1つも見つけられなかったのです。ちなみになぜ福岡で働きたかったのかというと、人生経験として普通自動車免許を取りたかったから。人生一度くらいドライブしたかったので!

そこでTwitterの力を借りて探してみることにしました。

 その結果、

linefukuoka.co.jp

をつよつよ新卒iOSエンジニアのふれでぃさん(生牡蠣当たるマン (@___freddi___) | Twitter)に教えていただくことができました!ふれでぃさんが声をかけてくださるまでに後のメンターさんであるつよしさん(Tsuyoshi UEHARA (@uecchi) | Twitter)とiOSエンジニアはるふさん(LA LA はるふ (@_ha1f) | Twitter)を経由?したという話を後で聞いて面白かったです。(ありがとうございます!)

その後は、応募→書類選考→コーディングテスト→ホワイトボードとかを使う感じの軽い?面接を受け無事働かせていただけることが決まりました。 

仕事内容(ざっくり)

メンターさんはつよしさんTsuyoshi UEHARA (@uecchi) | Twitter)で、LINE本体のAndroidアプリの開発するチームで働かせて頂いていました。

連続して会社に行くことができない時期が結構あったので基本普段手が回らないだろう部分のリファクタリングをしてた。詳細は以下の通り。

- 画面の追加

 絵文字の詳細画面の作成者からその作成者が作成した別の絵文字一覧を表示させる画面の追加をした。画面の追加をしただけじゃなくて、9割型同じコードになる作成者のスタンプリストを表示する画面のコードを絵文字、テーマに適用する時もそれぞれのdata classと2~3行書けば(言い過ぎかも)使えるようにリファクタリングした。最初にしたタスクでレビューを沢山して頂いた&変更が多かったのもあってこのタスクを終えるまでに時間がかってしまった。

- リファクタリング

 より年齢が高そう?急いで書かれてそうなコード、厳密にいうと上記の画面の追加時に作ったdata classを使っているけどそのdata classの中の一部のpropertiesをmutableにしなきゃいけない原因になっているコード(ある画面らのコード)をリファクタリングした。ViewClontrollerが使われていていたりするけど非同期処理がそのまま残っていたりデータを管理しているFragmentsのコードを新たに作成したViewModelsとViewControllerを使って整理した。勿論、このViewModelsとViewControllerは機能ごとに作ったので他のFragmentsにも使えるとよ。

 あと、DB周りのコードも少しだけリファクタリングした。テストは書いたしQAテストも通ったけど本番でバグってないことを祈る…!

- 機能開発を少し手伝う

 最近リリースされたメッセージスタンプ(Message stickers – Top LINE official stickers | LINE STORE)のタスクを少しさせて頂いた。2~3つくらい小さなタスクをこなした後、卒研で忙しくて週1~2日しか出社できなくなったのでこれ以上タスクをもらうのを断念した。ほんとうにごめんなさい…

 みんなメッセージスタンプ楽しいから買って使うとよ!

- 小さなissue潰し

 暇な時にいただいたり最初にいくつか頂いたIssueをこなした。

会社の雰囲気

- 仕事環境

Mac Book Pro メモリ16GBとiMacが1人1台ずつ使わせてもらえる。しかも机は昇降式だった。(控えめにいって最高)

あとオフィス内にLFKカフェ(社内専用カフェ)があるのでいつでも安価(100円前後)で美味しいコーヒーとか色んな飲み物が飲める。無料じゃないのでむしろ好きなだけ頼みやすく良かった。

- 働いているときの雰囲気

自分の机の周りは基本煩くないけどちょこちょこ議論してる声が聞こえるという、ちょうど良く落ち着いた雰囲気だった。ちなみにごろねスペースやソファーがあるところに移動して作業してもOKだった。

私が働かせて頂いていたチームの社員さんは、半分以上?海外の(中国、韓国etc出身の)方だった。でもみんな(日本人の方も含め)ありえないくらい優しいしめっちゃつよつよだし、私は拙い英語と知識で喋ってまじで申し訳ないと感じるレベルだった。マネージャーさん(たけちんさん たけした (@taketin) | Twitter)がフレンドリーな方だったので分からないことはなんでも聞けてよかった。(質問しすぎて迷惑だったかも)

- 英語の使用頻度

チャットでは出来る限り英語を使ってた(別に日本語でも精度の高い翻訳botが通訳をしてくれるので大丈夫)。デイリーミーティングでは英語と日本語交互?(最初は英語onlyだった)、技術を共有するためのミーティングは完全に英語、大きなミーティングの時は同時通訳の方がいるのであまり言語の壁を気にする必要はなさそうだった。(通訳さんがいるミーティングにはあんまり参加したことないけど…)あとGitHub上、コード内のコメントでは完全に英語だった。まあ色んな国から同じリポジトリを触っているのでそれはそうという感じなのだけれども。

特に学べたこと

- 大規模アプリでコードの品質を保つ方法を学べた

今回は、大規模なアプリの実際にリリースされるコードを書く必要があった。そしてこの運用の為にコーディング規約が定められていて、レビューの体制もしっかり整っていた。

以下のブログが全てを語っているのでこちらを参照してほしい。

engineering.linecorp.com

それに伴い、身をもって品質を保つためのコーディング手法を学べた。

スピードより品質が大切なときは一度書いてみてあとでまとめることがより有効だったりする。詳しくはここでは書かないけど、コードのまとめすぎもよくない程よくコードの共通化をする。などなど…

- 丁寧なレビューをして頂けた

上の項目と若干被るのだけれど、品質を保つためにコードレビューがすごく丁寧だった。同じチームの方々はもちろんのこと、上記のブログの筆者であるIshikawaさんにもかなりレビューして頂けた。ほんとうに感謝しかない。そして定期的に酷いコードかいてごめんなさい。次、またインターンする機会があればこの素晴らしい社員さんたちを見習っていけるようになりたい。

- 英語を使う環境で働く雰囲気を知れた

私はずいぶん昔に一度留学をしたことがある。その経験から言うと英語喋れる海外の人は真面目すぎて冷ためで怖いみたいな印象があったけど、前述したように全然そんなことはなかった。あと、日本語みたいに周りくどい言い方をすることが若干少なく感じたのでわかりやすかった。

ただ編入のために英語を勉強してたので最低限の英語の知識はもちろんあったのだけど、最初はまじで喋れないし、リスニングも怪しかったし、英語の文章をチャット等で送るのも遅すぎて送れる文章ができた時には話の流れが終わってたりなんてことばっかりで大変だった。でもオンライン英会話を受講させてもらえた(新田さん youhei / 新田 洋平 (@youhei) | Twitter ありがとうございます!)のもあり、使ってるうちに英語に対する抵抗感は少なくなった。最後の方はリスニングはほぼ聞き取れるし最低限のスピードくらいではライティングもできるようになったのではないかなという感じになれた。スピーキングもボロボロだけど若干できるようになった。もともとの文を構成する能力が低い(特に会話において明らかに正解と思われる返答が存在しない内容で話しかけてくれた時にまじでなんて言って良いか分からない)のでまあ英語云々の前に英会話についてはどうしよもないのかも知れないのだけれど…( ;∀;)

でもこんなに英語を使う機会、普通だったらエンジニアのインターンという立場で経験できないと思うのでものすごく良い経験になった。

余談:ふれでぃさんがみんなとがっつり英語で会話してて尊敬してました。いつかふれでぃさんみたいになりたい!

英語がんばるぞい!

- リモートワークの経験ができた

これはコロナのおかげかな、最後の飲み会が消えちゃったけどリモートワークが経験できたのはすごくよかった。将来リモートワーク可の会社を選ぶべきかどうかという選択に大いに役に立つと思う。私の場合結構人目をきにしちゃったりするから気が散らないリモートの方が私の性能はよかったけど、iMacを自宅に持ち帰えらなかったのでMBP1台でPCのスペック的にちょっと厳しかった。(iMac持ち帰っている社員さんはいらっしゃったので持ち帰ろうと思えば持ち帰れたかも…!)

反省すべきこと

- もっと社内で技術共有のためのミーティングで色々共有できる人になる

- 英会話をがんばる

- うまく卒研と両立させてもっと多くの時間出勤すべきだった

- もっと色んな方とランチとかご飯に行けばよかった

- 事務処理失敗しまくってごめんなさい

会社のよかったところ

- みんなが使ってるアプリの開発ができる

今までは私のしてることにあまり興味がなさそうだった家族や友達も興味を持ってくれて嬉しかった。あと自分が使う時もここはこういう実装だったなぁって思えて楽しい。

-  社員さんがみんなつよつよで優しい

さすがLINEさん。あと採用にがっつり?エンジニアが関わっているからこそ実現できている環境なのかな。

-  福利厚生がいい

英語についてはオンライン英会話だけじゃなくグループレッスン(私は時間が合わず参加していない)もあって入社後でもかなり勉強する環境が整っている。

作業環境がいい。PC2台はいいぞ。モバイルエンジニアにとってこれはかかせないのでは…

他にも育休制度もしっかりしてて私がいた期間にも育休で休む社員さんがいておめでたかった。

あと私は結局やりかたを教えてもらう前に退職しちゃったので詳細は分からないんだけどオライリーの本の電子書籍が無料で読めるらしい…!

-  エンジニアを大切にしてくれている

ハッカソン とかもあるみたいで社員さんたちはすごく楽しそうだった。

LINE DEV DAYにも旅費は会社持ちで参加させて頂いた。楽しかった。

- 部活動もある

部活には参加しなかったのですが、電子工作愛好会に参加させて頂いて半田付けを久しぶりにしたりわいわいできて楽しかったです。

- フィードバックがもらえるかも もらえた

インターンのフィードバックをお願いしたら承諾してもらえた。とてもありがたい、結果はどうであれ楽しみ。

フィードバックいただきました!しっかり良かった点,改善点共に伝えて頂きました.今まで頂いたことがなかったのもあり自分を客観視できる機会にもなり,とても為になりした🙇‍♀️今後に役立てていきます!ありがとうございます!

 

他にも沢山あるはずだけどとりあえずはこれくらいかな。

全体的な感想 

はじめての長期インターンとしては十分すぎるほど色んな経験ができました。

もっと時間がある時にもっと実力をつけて再度インターン等に挑めたらいいです!

インターン中沢山お世話になったメンターさんの上原さん(つよしさん)、マネージャーの竹下さん、コードレビューや飲み会等でお話ししてくださったエンジニアの皆さん、迷惑かけまくってしまった事務の方々、LINE Fukuokaの方々ほんとうにありがとうございました。

今は東京にいますが定期的に帰ってくる時にたまに伺わせて頂くと思うのでその時はよろしくお願いいたします!

またお会いしたり一緒に働くことができれば嬉しいです。

f:id:hanahanahunachi:20200402073904j:plain

f:id:hanahanahunachi:20200402073908j:plain



 

ここまで読んでいただいた方、ありがとうございました!!

2019年の振り返り!

こんにちは!ふなちです。

色々あって一個前の記事を非公開にしたのでとても久しぶりの記事になります…!

 

今年も残りあと10分切ってますね。時が経つのは早いもんです。(これを見てくださった方がいてももう年越してそうです)

 

さておき、未来の自分の為にも今年の振り返りをしていきたいと思います。

詳しく言うと何しとったん?

1月

入試勉強と虚無(覚えてない)

2月

入試勉強と虚無(覚えてない)

ワールドトリガーにハマり始めた

  入試の勉強を怠るなよ〜〜。

3月

入試勉強と虚無(覚えてない)

4月

入試勉強と虚無(覚えてない)

大学の説明会

5月

入試勉強と虚無(覚えてない)

研究室のゼミ

6月

入試(受かった、落ちた)

研究室のゼミ

7月

入試(受かったの分かってたからって調子乗りすぎて落ちた)

研究室のゼミ

大学が決まったら退寮すると決めていたので退寮した!!4年間3ヶ月お世話になった寮からやっと逃れられた。

インターンの為の選考

入試が全て終わったのでお酒が飲めるようになった

8月

家族旅行

  湯布院あたりいった気がするけど記憶が曖昧だし違うかもしれない。

高専主催の国際ハッカソン

  海外の友達ができた(?)

Hack U 福岡会場で優秀賞

  後輩と他大学の友達を誘って参加した。  
  最優秀賞取れなくてごめんなさい。

塾のバイトの面接

  面接の時に説明を聞いた時点でやる気を無くしてやめた。

L社さんで長期インターン開始

車校に通い始める

9月

L社さんでインターン

文化祭に向けて技術書を書き始める

仮免を取った

10月

JPHacks

  食パン焼くやつ作った。

  くぅさんと福岡にいる強強エンジニアの方々と知り合えてよかった。

  女子3人男子3人で参加するつもりが本番で2人が来なくて女子1人だった…なんで…

Hack Fes at 北九州

  JPHacksに一緒に参加していた北九大の方と九工大の方と一緒に参加させて頂いた。

  教授とのメールのやりとりを簡易化するアプリを作った。

  最優秀賞をとって1人1台Oculus Questをいただいた。

文化祭に向けて技術書を書きあげる

  まじで自分のせいで死にそうだった。

  共同執筆者に感謝しかない。

L社さんでインターン

11月

文化祭

  コスプレと技術書を売ることに専念した。

  コスプレ楽しい。ウィッグを結構買ったので貸して欲しい人は声をかけて欲しい。

L社さんでインターン

LINE DEV DAY

  会社さんに✈️と🏨とってもらえて感謝しかない。

  色々な方に出会えて色々学べて楽しかった。

12月

L社さんでインターン

  いつもお世話になっております。

  忘年会もとても楽しかったです!!

東京に遠征

  オールのみめっちゃ楽しかった。また一緒に飲ませてください!!
  お昼ご飯もどくぴーさんとおひさしぶりにランチできて楽しかったです!!

  お目当のワートリグッツが全部手に入ったので満足。

免許をとった

  12/25の朝から(クリスマスイブの次の日だし人少ないだろと思って)頑張って行った。めっちゃ人多かった。なんなん、非リアはこの日に狂って決まっとるん?

  免許とったばかりですが、お父さんのプリウスをめっちゃ使わせてもらってる!🚘

 

…以上です。

総評

例年と比べるとめっちゃ怠けとるやんけ…!!喝!!

でも今年も知り合いが増えて、L社さんで働けて、とてもいい年でした(((o(*゚▽゚*)o)))

一緒にお話してくださった方々、一緒に働かせて頂いている方々本当にありがとうございます。一緒に過ごした時間、とても楽しかったです!!

 

来年の目標

年賀状を書いたのでそこに書いてます!!(あとでここに貼ります。)

2020年もどうぞよろしくお願いいたします。

f:id:hanahanahunachi:20200107213611j:plain

 

お茶の水女子大学 編入試験 体験談

ブログはお久しぶりです。ふなちです。

という事で、不真面目すぎてあまり役に立たないブログを書いていきたいと思います。

私の基本情報ですが,
1〜4年次の席次は1,2,1,3位で,大会沢山出て複数社でインターンシップをしてきた.って感じです.

Agenda

試験の手応え

  • 試験の形式
  • TOEIC
  • 数学
  • 情報
  • 面接

勉強の仕方

試験の手応え

試験の形式

英語はTOEICのスコアを提出するだけ。
数学と情報の150分の試験。
これだけ。ただ情報の範囲がクソ広いので試験勉強をするより普段から色々なことを学ぶのが良さそう。
受験者は6人だった。合格したのは1人だったのでヒヤヒヤした。

TOEIC

スコア775 で提出した。
悪い方ではないのでは?(謎の自信)

数学

出来は9割弱な気がする。

大問1:マクローリン展開とかと,log(2019)をlog2を使って求める問題。

log(2019)を求める問題が有効桁数が6桁くらいあって計算がめんどくさそうなので飛ばして最後にといたら焦ってまちがえた。その他はやるだけ。

大問2:カージオイドの面積と周長を求める問題。

何度も答えを見たことあるしハイ。

大問3:スカラー倍と線形性を持つ空間に属するための条件を書けみたいな問題。ベクトル空間かどうか証明する問題。

1問目は日本語がよく分からんかったから適当に書いた。2問目は久留米高専の制御の学生なら瞬殺できるのでハイ。量が多くて手が疲れた。ただ一切ベクトル空間辺りを触ってない人は大問3全てお亡くなりになりそうな問題だった。

大問4:与えられた行列が可逆か調べる問題。その可逆な行列の逆行列を求める問題。

サービス問題。

情報

良くて6割、悪くて4割って感じ。
※大問が5からなのは数学と試験が結合している為。

大問5:クイックソートの問題が5つあった。詳しくは過去問がいつか公開されるはずなのそれを見て。
(1)swap関数の中身を書け。
(2)コードがバン!って書いてあって、これはなーんだ? A.クイックソート
(3)最悪計算量平均と平均計算量を答えよ。
(4)データが与えられた時の出力を答えよ。
(5)高速にするにはどうすればいい?

私は頭がおかしいのでswap関数の引数がポインタ変数になっているのを無視してたし、もっと高速にする方法を平均値に近い値を基準にするとかいうヤバイことを書いた。
オーダー問題が出てくれたのはありがたかった。

コードが読めない人とか情報処理基礎だけしかやってない人は厳しそう。高専生は(3)以外はわかるのでは?

大問6:
(1)階層構造の利点は?
(2)I/Oシステムでの割り込み処理にはどんなのがある?
(3)サーバークライアントシステムとは?またシンククライアントとリッチクライアントはどんなもの?
(4)公開鍵暗号を使った電子署名と暗号化通信の仕組みを答えよ。

(1)は適当に全探索を避けれて〜みたいな事書いた。(2)はわからなかった。(3)は9割がたあってること書けた。(4)はBobとAliceを使って超丁寧に書いた。

情報処理基礎対策が全然役に立たなくて笑った。私的にはありがたかったけど。

面接

午前中の試験が終わり,午後の面接に備えて待機室でみんな静かにしていた。
私はご飯を書い忘れた事に気づいて待機室でうろちょろした後に建物の外の自動販売機で豆乳とゼリー飲料をかってきた。
他の人が真剣に面接練習をしている中,
「私は飲み物だけで十分やで!」
とか思いながら待合室で豆乳を飲んでいたら「ぶしゅっ」と派手に音をたてながら豆乳をこぼした。
床と自分のスーツにこぼしただけで済んだのでよかった。一人でトイレットペーパーを取ってきて拭いた。
その後も他の受験者と喋りたくてキョロキョロしてた。その結果熊本の高専の方に話しかける事に成功した。
話した事で緊張がほぐれたので良かったけど,気合いが抜けすぎたのは良くなかった。
私は4人目だったので他の方が面接をしている間,ソワソワしながら授業の資料を見直してオタク話をする準備をしていた。

〜面接開始〜
面接のための部屋に入ったら10数人の先生方がいてビックリした。

まず受験番号と名前を聞かれた。

受験番号をはっきり覚えてなかった私はとても焦った。一番可能性の高そうな番号を言ってその場を凌いだが突っ込まれなかったので合っていたのだと思う。

その後、志望理由、高専での研究内容、プログラミングできるみたいだけどどれくらいできるの?とか、プロラボ部について聞かれた。

おどおどしながら下手な日本語でなんとか答えた。

もう先生方から何も質問が無かったから?か帰っていいよ!と言われた。

私は主成分分析やら確率の話がしたい!!という気持ちを言い出せずにそのまま退出した。

帰り道それらの話が出来なかった事をすごく後悔した。あと,面接が超短く感じられたので筆記の結果的にもうこの人はいいやと思われたのかと思って落ち込んでた。

勉強の仕方

そもそも前提として私は東大が本命だったため、お茶の水のために勉強した事はほとんどないです。なのでほとんどお茶が本命の人には役に立たない勉強法だと思います。

TOEIC

2年生の春休みに留学したのもあって、3年生の時のスコアは500。(低すぎて引く)
その後はプログラミングばっかりしてたので英語の勉強は放棄してた。
4年生の初めに受け直した所またもや480だったのでなってさすがにまずいと思い少し勉強を始めたけど,夏休み終わってもスコアが上がることはなかった。
流石にやばいと思い、スタディサプリEnglishを始めた。
色々忙しかったのにも関わらず9月の試験でスコアは500から630まで一気に伸びた。その後の10月くらいの試験でスコアが伸びなかったのでスタディサプリEnglish は3か月くらいでやめた。まあスタディサプリEnglishのお金を自分で払ってたし...。
その後だらだら勉強してた為なかなか630あたりからスコアが上がりませんでした!(人生こんなもん。)

2月の中旬頃3月の試験でいいスコアを取らないとやばい!と思い毎日模擬試験を一回ずつし始めた。
更に4月の試験は申し込みの段階で失敗してしまったので3月の試験が入試に使える最後の試験になり、窮地に立たされた。真面目に勉強した。
窮地に立たされたおかげで3/10の試験で775という最高スコアを叩き出したのでこれを提出した。
その後の試験でも無勉で750は超えてるのでまぐれではなさそうです。

数学

以下の2冊を1- 2回して黒木先生の有意義な授業である信号処理の内容を真面目に理解しました。久留米高専生は圧倒的に高度な授業を受けられるのでラッキーですね。
編入数学過去問特訓: 入試問題による徹底演習 https://www.amazon.co.jp/dp/4792201039/ref=cm_sw_r_cp_apa_i_7MAkDb45J2XKA
大学編入のための数学問題集 https://www.amazon.co.jp/dp/4477027176/ref=cm_sw_r_cp_apa_i_4OAkDb9KW9J0T
どちらの本も悪くはないですが、自分は天才だと思う人は上の黄色い方だけで十分だと思います。

線形代数楽しいね。

情報

2年前まで競技プログラミングをしていたのでアルゴリズム系の基礎は勉強しなくてよかったし普段からアプリ開発もしてたから実を言うとあまり勉強してない。東大に向けた英語の勉強が忙しかったのもあるし。あえてしたことと言えば5年生の情報よりの専門の授業を真面目に聞いてたかな?。
試験2日前から情報基礎に出る用語を叩き込んだ。沢山暗記しすぎて頭痛がしてた。
真似しないほうがいいと思う。
さておき,一応読んで役にたった本を紹介しとく。
暗号技術入門 第3版 https://www.amazon.co.jp/dp/4797382228/ref=cm_sw_r_cp_apa_i_oXAkDb5DPCHS9
あとペンギンの絵が描いてある情報処理基礎の対策本。
特に役にたったのはこれだけかな。
やっぱり普段から色々学ぶのが一番っぽい。

まとめ

プログラミングと研究が好きな女子高専生は受けるべきだと思う。あんまり受験勉強しなくていいし、大学院も比較的簡単に目指せるみたい。
過去問をあげる事は出来ないけど過去問の答えに関する相談なら受け付けてるので是非。https://twitter.com/_hunachi

pixivさんの冬のインターン(ハッカソン)に参加してきた!

こんにちは!

ふなちです(((o(*゚▽゚*)o)))

 

今回は,pixivさんの冬のインターンに参加させていただきました!

ãã¯ã·ãæ ªå¼ä¼ç¤¾

recruit.pixiv.net

私はアプリ開発Android)での参加しました.

メンターさんは,まーくん (@m4kvn) | Twitterさんでした!

 

面接のコーディングテストではありえないくらい緊張して頭真っ白になってしまいましたが,結果的に参加させていただけたので良かったです.(倍率はそこそこあったみたいだったので運が良かったです.)

ちなみに交通費,宿泊場所(前後泊入れて3泊分),食事を提供していただけたので何不自由なく過ごすことができました.お金のない学生にとってはとてもありがたかったです.

 

1日目

前入りしたので,たくさん寝れました!

インターンやバイトの初日は5割の確率で遅刻するのですが,今回は遅刻しなくて良かったです.(社会性が上がってる!)

 

初めてpixivさんにお邪魔したのですが,いろんな所に絵が描いてあってカラフルオフィスでした.可愛かった.

 

私を含め,6人がインターンに参加していました.Androidインターン生は私を入れて2人でした.

今回のハッカソンは「1人1人で自分にとって最強のアプリを作る」だったのでインターン生1人+メンターさん1つアプリを作りました.1人のメンターさん(まーくんさん)に二人のインターン生が付いていたのですが,別々の物を作りました!アイディアは共有しあってましたが!

 

最初に自己紹介フェズがあったのですが,どの方も色んな分野に手を伸ばしていて,すごいなぁと思いました.

私もAndroid以外の分野にも興味を持てるようになりたいです!(手を出すならKotlinでサーバサイドかな!)

社員さんの方々の自己紹介も面白くて緊張がほぐれました.

 

自己紹介が終わったら早速,アイディアをメンターさんに紹介して,開発をはじめました.

メンターさんが用意してくださったテンプレート(アプリとしての最低限の機能を備えたもので,pagingなども使われており,あまり時間をかけずに作ったという事に驚きました)を参考にさせていただいたものの.最初pagingが使われている部分のアイテムを動的に変化させたいと考えていたため結局メンターさんのテンプレは使わず一から作りました..(そのまま作ってもでけたのでは?とあとで後悔しました(> <。))

 

 \_ヾ(^-^ヽ)

 

ひるめし

f:id:hanahanahunachi:20181219204308j:plain

めっちゃ美味しかった. 

 

\_ヾ(^-^ヽ)

 

Coroutine の Dispatcher.Mainが(UI Thread≒)Main Threadをさすわけではないということをメンターさんから教えていただき驚きました.UI Threadを指したいときはUnconfinedを指定してあげなきゃなんですね.(完全に時代遅れだった)

ちなみに,調べてみたところ,DefaultはCommonPool(Background thread)を指すんですね!

 

\_ヾ(^-^ヽ)

 

ゆうごはん

f:id:hanahanahunachi:20181219204333j:plain

帰りにミルクティーまで頂きました.(このミルクティーめっちゃ好きでした.)

f:id:hanahanahunachi:20181219203846j:plain

 

\_ヾ(^-^ヽ)!!!!

 

(°_°)!

kapt?(コード生成)周りでエラーが....RoomのDatabaseインスタンスが生成されない.治った!と思ったら今度はdatabinding周りでエラーが(号泣)

メンターさんに助けを求めたました.

 

豪華な差し入れを頂きました.

f:id:hanahanahunachi:20181219203945j:plain 

結局,バグとメンターさんを残したまま終電でホテルに帰ることに.

インターン生全員同じホテルをとってくださっていたので安心して帰れました.

 

ホテルについて,まずは休憩にと「寄宿学校のジュリエット」を視聴.期待通り面白かったので疲れが取れました.

 

そのあと頑張って寝る準備をした後,寝る前にもう一度errorと戦いました.

 

\_ヾ(^-^ヽ)

 

戦っている途中でメンターさんから助け舟プルリクを頂いたので,そのプルリクをマージし再戦.でも途中まではうまくいくものの,Databaseのインスタンスが生成されない....apply kotlin-kaptをいれると生成されるが,databindingのエラーがぁ....ほにゃぁ!!!

 そのあと,Room周りのコードの書き方に問題があることに気が付いた.プロパティ名をprivateにしていたし,なんか使ってない引数をとってる関数があるしでやばかったので直しました.

 

諦めて寝ることに.

(´-`).。oO

 

2日目

6時に目が覚めてしまいました.

2度寝を試みるも眠れなかったので諦めて,開発を続けることにしました.

で,バグの方も諦めてdatabindingを使わないことで解決させた.kotlin extentionのおかげでそんなに書き換えるところもなかったし,databinidngの恩恵を得られてなかったので使わないようにしたこと自体は別に悪いことじゃなかったと思います.

メンターさんにも手伝ってもらったのにエラーから逃げてしまいました....すみません.

 

ハッカソン終わった後に試して見た所,

 

apply plugin: 'kotlin-kapt'

...

dependencies{

         kapt "androidx.room:room-compiler:$room_version"

}

を追加して,

やばいプロパティ名やら基本的なミスを直せばいいだけだったぽくて泣いた.

databindingが本質的ではないエラーを出すのはお決まりなのを完全に忘れていました.(この問題はもうそろそろ改善されるっぽいけど.)

ハッカソンあるあるとはいえ,実力がなさすぎてダメヾ(。>д<)シ 

 

その後,9時15分過ぎぐらいに一緒にホテルに泊まっていた方々と会社に向かった.集合時間のon timeで着くことができました.

 

\_ヾ(^-^ヽ)

 

お昼はまーくんさんが買ってきてくださった🍙*2を食べた.シャケと「ごはんです」味.

 

\_ヾ(^-^ヽ)

 

最低限のアプリが出来上がった.

 

差し入れに豪華なケーキをいただいた.

f:id:hanahanahunachi:20181219203938j:plain

発表までそんなに時間がなかったので,スライド作りを始めた.

まーくんさん(メンターさん)にスライドの書き方のコツを教えてもらいながらスライドを書きました.

アプリ名に迷っていたところ,Hunaxivという名前をつけていただいたのにも関わらずその後思いついたFamixivにアプリ名に変えました.(自分の協調性を疑う(> <。))

 

最後の発表の時間!って時になって,アプリのお気に入り一覧が表示されなくなった.

焦ったのですが.アプリのキャッシュを全て消したら治ったので発表には間に合ってデモも上手くいきました.Room周りのバグだったのか....怖いしちゃんと原因を探りたいです.

 

他のインターン生の発表は素晴らしかったです.日本語力を分けて欲しい.

しかも,アイディアも面白くて,特に自分や他人がいつ絵を書いたか見れるカレンダーのアプリと,ただただ絵を見続けられるアプリ(サイト)が好きでした.

特に後者は優秀賞をとっていたのですが,圧倒的でした.私も使いたいと思いました\*1/

 

私の作ったアプリのスライド(一部)とデモ動画をのっけておきます.

f:id:hanahanahunachi:20181221015139p:plainf:id:hanahanahunachi:20181221015202p:plainf:id:hanahanahunachi:20181221015220p:plain

www.youtube.com

 

 結果は,特別賞でした.(なんか色々勘違いがあったみたいで,申し訳ないですが嬉しかったです.)

f:id:hanahanahunachi:20181221015636j:plain

f:id:hanahanahunachi:20181221015253j:plain

FGOの絵がたくさん載ってる本(FGOに詳しくないけどどの絵も綺麗で好き)

本をいただけて嬉しかったです.

絵を書くのが好きな友達に貸したのですが,好きなイラストレーターが書いた絵があったらしく喜んでもらえたのでとても嬉しかったです.

 

懇談会

生魚が食べられないといったら,ピザを頼んでもらえる事になりました.申し訳なかったのですが,ザがすごく美味しくて感動したので頼んでいただけて良かったです.ありがとうございます!! Uber Eatsが便利ということも学べました.

f:id:hanahanahunachi:20181219204215j:plain

f:id:hanahanahunachi:20181219204335j:plain

懇談会では,まーくんさんと軽く設計のお話などをさせてもらえて良かったです.勉強になりました.

人事のかみこさんにも気にかけてもらえて嬉しかったです.ふなちちゃんって呼んでくださりありがとうございます!嬉しかったです.でも気にかけてもらってばっかじゃなくなるくらいもうちょっとしっかりした大人になれるよう頑張ります💪(´-`💪)

 

ごはんを食べた後,ちげさんが持ってきてくださったプログラミングかるたと,gitかるたで遊びました.

楽しかったです.

社員さん方(特にCEOのえどばくふさんとまーくんさん)が強くてさすがだなぁって思いました.私も何枚か取ることができて嬉しかったです.

コードの方でプログラミングかるたをしたら全然先に進まなかったのは面白かったです.

f:id:hanahanahunachi:20181219204238j:plain

 

明日の朝も早いので20時半ごろに先に帰らせていただきました.

 

この後の壮絶なレポートとの戦いは,pixivさんのインターンと関係ないため別記事に後々書きたいと思います.

 

色々ありましたが,無事12時すぎに学校に到着し,実験にも間に合いました.

 

感想

楽しかったです.

pixivさんが思っていたよりもずっとフレンドリーな雰囲気で技術力も高い会社だという事を知ることができて良かったです.久留米高専OBのはるかさんがいらっしゃる関係で弊校(久留米高専)には何度かpixivさんがきているというのにその時に限って留学してたり,インターンいってたりで一度もpixivさんと触れ合うことができてなかったのでとてもいい機会になりました.

 

強い他の学生の方々と知り合うことができたのも良かったです.(今まで参加させていただいたインターンでは他のインターン生の方との交流というものがほぼなかったので...!)

 

作って持ってきたシールも貰って頂けて嬉しかったです(((o(*゚▽゚*)o)))

 

また,まーくんさん(メンターさん)に色々教えていただけて良かったです.最新のCoroutine周りがまだよくわかっていなかったので勉強になりました.

ただ,実際の業務のコードを少しでも見せていただくのを忘れていた(これは面接の時に見せてもらえますか?と聞いてOKをもらってたのに....)し,まーくんさんにgradle kotlin dslについて教えていただきたかったのを忘れてました.もうちょっと計画的に行動できるようになりたいです.

もし次お世話になる機会があったら,その時にでもこれらのやりたかったことを達成したいです.楽しかったので実力を積んでから,もう一度くらいお世話になれるよう頑張ります💪(´-`💪)

 

また,今回のアイディアはインターン当日に急いで決定したものだったので,自分でも納得の行くものではありませんでした.しかももうちょっとAndroidである事を生かせるいいアイディアあったわ....とインターン後に後悔する事になったので次もし同じような機会があったらその時はもっとハッカソンの経験を生かしたアイディアで勝負できるようにしたいです.

 

パーカーやファイル,本など頂いた物はこれからも大事に使わせていただきます.

なんだかんだ福岡は暖かいみたいで,今もpixivさんパーカーでもなんとか寒さをしのげていて,パーカーがとても活躍しています.圧倒的感謝.

f:id:hanahanahunachi:20181224173057j:plain 

最後に,pixivさんの社員のみなさま,他のインターン生の方々,ありがとうございました🙇‍♂️

*1: °ω°

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を使うのですね!!

マッチングエージェントさん(サイバーエージェントさん)でインターンしてきました!

こんばんは.

ふなちです(((o(*゚▽゚*)o)))

 

8/13~9/7までマッチングエージェントさんでAndroidエンジニアとしてインターンしてきました!

マッチングエージェントさんはサイバーエージェントさんの子会社で,「タップル誕生」というアプリを作っている会社です.

 

Agenda

- お仕事の内容

- プログラムを書く中で学んだ事

- プログラミング以外で学んだ事

- お仕事以外での活動

- 大変だった事

- 自分の中での課題点

- 最後に....

 

※文字サイズが小さくなっている部分は読んでもらおうと思って書いてる訳ではないので読み飛ばしてください!参加したイベントに関するブログはまた別で書きたいと思います!

お仕事の内容

KotlinでAndroid アプリのコードを書かせて頂きました.

主に,

- 既存の負債コードの修正.主にflux化とListAdapter化.

- テストを書いた.(自分の書いたコードのみ)

- 施策の実装.

- その他小さなissue潰し.

等をしました.

プログラムを書く中で学んだ事

- flux.

- コードレビューの仕方.

- テストの書き方.

- Android Studioの便利なショートカットキーや機能.

- ペアプロの楽しさ. 

flux.

そもそも私は,インターンに参加するまでfluxとは何か?というのはAndroid設計パターン入門の本を読んでほわほわと知っているけれど,fluxの設計思想で書かれたコードに実際に触れたり,書いたりしたことがありませんでした.

\今までMVVMばっかり触ってました/

最初のflux化は,MVVMの設計思想に基づいて書かれている画面をflux化する事でした.

MVVMには慣れ親しんでいたのでどこに何が書いてあるのかすぐに分かったのと,9割型同じ機能をもつ画面が既にflux化されていたのでそのコードを参考にしする事ができました.そのお陰もあり,fluxとはどういうものか何となく学べつつ1~2日でflux化することができました.

その後も3箇所くらいflux化しました.その中でfluxの書き方と良さみを知る事ができました.

私が学ばせて頂いたflux化については,メンターさんだったへいへいさんの

Flux for Android - Speaker Deck

www.youtube.com 

のスライドを見ればわかるのでここでの発言はちょっと省略します!

 

スライドとはちょっと違うところは,LiveDataとListAdapterを使って書いてたくらいだと思います.

Adapterに関してはListAdapterじゃないとモヤモヤする病(楽をしたい病)にかかってるので勝手に無心でRecyclerView.Adapterから書き直しました!!

ちなみにLiveDataの問題点である垂れ流し問題(あの画面回転したらもう一回イベントが飛んでくる的な問題)はSingleLiveEventで解消していたので問題なしです!

ただ,LiveDataを使ってもprivateのMutableLiveDataとpublicのLiveDataで二つプロパティ用意しないといけないのが悲しいお気持ちになるので,いい感じのものが出て欲しいです!(公式に対してissueとしては話が出てるみたいなので楽しみ!) 

その他Tips

- SharedPreferences関連はStoreにかく.

- ActionCreatorを叩くのは,Viewで!ActionCreatorのAとBがあった場合,AのActionCreatorを叩いた事により得られる値を使って,BのActionCreatorを叩きたいってなった場合も,(複数のActionCreatorを叩きたいってなった時も,)ごちゃごちゃなるのを伏せぐためです.

-  (これは好き好きかもですが,)Viewだけで完結するものは,Viewで完結させる.当たり前だけど,脳死で書いていると,全て回そうとしかねないのでちゃんと考える.

fluxの私流の書き方(自分用のメモ)

- Viewで必要な情報を洗い出す.

- Storeに必要な情報を垂れ流してくれるLiveDataを作る.

- Action Creatorに通信処理周りを書いていく.

- ActionにAction Creatorを書いていく中で必要になったActionを書いていく.

- StoreにActionの受け取る部分を書く.LiveDataの値を更新するのもここ.

- StoreのLiveData群のうち,どれかのLiveDataに依存するものの値をTransfomationとかMediatorLiveDataを使って更新させる処理をかく.

- Viewでちゃんと値を受け取る体制ができているかの確認と,まだ回せるものがないか探す.

- 最初に戻るか,終わり.

私の感じたfluxの良さみ.

- ActionCreatorに非同期処理周りを書く!Storeにロジックを書く!って決められているのでコードが描きやすい!MVVMだとVMが肥大化した末迷いが生まれたりした経験があったのでそういった事がなくて良い!

- Actionをリスト画面と詳細画面のStoreで受け取るようにする事で情報共有が簡単に出来る!onActivityResultとサヨナラ出来る!(ただし,LiveDataから情報が渡ってくるタイミングはちゃんと知っておかないと挙動に驚く羽目になるので注意です?)

- コードレビューがしやすい.(ここ大事!!)

fluxへのモヤモヤ

- Storeの肥大化.この話はsato△さんにお話を聞いたのですがReduxまでは行かなくともStoreのコードを分散させれるReduceみたいなものを作った方がいいのでは?というお話でした. 

コードレビューの仕方. 

4週間もお世話になったのもあり,コードレビューしていただく機会もする機会も沢山あったからこそどうやってすべきなのか学べました.

前のインターンは2週間だったのもあり,自分の仕事に手一杯でなかなかコードレビューをする事ができませんでした.自分のせいなのもあり後悔してました.

ですが,今回はかなり人のコードを読む事ができ,勉強する事ができました!まだまだ修行が足りませんが....

私のコードレビューの仕方は,Github上でdiffを眺めて(。 ・ω・))フムフムとしていました.

- どういうところに気合いを入れて読むかなんとなく考えて読むとより良いコードレビューができる.

- なんの処理をしているのかわからない部分は遠慮なく質問する事が大切,

という事を学びました.

ちなみにfluxで書かれているコードほど読みやすく,StoreとActionCreatorを読めばだいたいわかる.みたいな感じで良かったです.設計って大事やな!

また.コードレビューをしていただいて色々知る事ができて良かったです.ありがとうございます.

テストの書き方.

今までテストをちゃんと書いた事がなかったのでいい経験になりました.

- flux化した部分のテストを書かきました.

- Storeのテストを書くのが難しかったです.Mock地獄になってしまいました.自爆なのですが特にLiveDataが連鎖的に変更する場合のテストが...Testableなコードを書くよう心がけていきたいです.

 テストを書く事で,何箇所かバグを見つける事ができました.その度,このためにテストはあるんやな.と感じる事ができました.

テスト,大変だけど書いて損はないのです!!

 

Android Studioの便利なショートカットキーや機能.

- Show memory indicator

f:id:hanahanahunachi:20180916004337p:plain

f:id:hanahanahunachi:20180916004347p:plain

その他色々....!全部書くのは大変なので....👀

 

ペアプロ楽しさ.

ペアプロとは,ドライバーとナビゲーター?に分かれてドライバーがコードを書いてそれを見ながら質問や指摘やをナビゲーターがする.という形でしました.

ペアプロをする事でコミュニケーションができ,実は理解していなかった!という部分が知れたり,悩んでいた部分の解決を早くする事ができたり,Android Studioの自分の知らない使い方を学べたり等する事ができました.

一度だけナビゲーターをさせて頂いたのですが素早くコーディングするコツを学べて良かったです.プロのコーディング力は全然違うなって思いました.

素早いコーディングのコツ:似た感じのclassを丸っとコピぺして再利用するの大事!

へいへいさんと何回もペアプロをさせていただいてました.他の方とも一緒にペアプロさせていただけて楽しかったです感謝です.

プログラミング以外で学んだ事

- 工数は正しく見積もる!

- KPTを書き出して話し合うの大切.

工数は正しく見積もる!

インターンにきたばかりの時,最初のメンターさんだったnamikiさんに

「今のお仕事何日くらいかかりそう?」

と聞かれ,その時は特に困った事がなかったので私は,

「あと2日で終わります!」

と答えました.ですがテスト書いたりしていたのもあり2日で到底終わりませんでした😭

もしこれがプランナーさんに聞かれていたりとかしてたら詰んでいたと思うとヒヤヒヤしました.

工数を見極めるのも経験と知識が必要なのですが,それ以前にnamikiさんにアドバイスをもらった通り,自分にあまりにも不利すぎる工数は言わないようにしようと決意しました. 

KPTを書き出して話し合うの大切.

チーム(施策)メンバーと月一,Androidチームメンバーとは週一でKPTを行ってました.

KPTの良さみ

- 実は気になっている事や困っている事を伝えるいい機会になる.

- 認識の差を払拭できる.

- 褒め合う文化もあったのでモチベを高められる.

- 考えや気持ちを共有する事でチームの仲が良くなる.

- 週一開催なので負担にならない.

私は今までKPTを洗い出しみんなで話し合うという事をした事がありませんでした.

でも今回経験させて頂いてとても大切な事なんだなと知る事ができました.私自身良く認識の差が発表会直前に見つかりデスマする羽目になったりなど経験してきたので,今まで取り入れて来なかったことに後悔です... 

お仕事以外での活動

- 尊敬する方々とランチ🍔

- 部活動🏓

- 打ち上げ🍹 

- お仕事全く関係ないのもあるけど記憶に残ったディナー 

- 一人暮らし

尊敬する方々とランチ🍔

主にへいへいさんがいろんな方とランチを設定してくだ去ったおかげでいつもqiitaやブログ等でお世話になっている方々に会えました.

ogaclejapanさん,takahiromさん,前川さん,sato△さん...等々沢山の方とランチさせて頂きました!

またAndroidersランチ🍚も開催されており,美味しいお弁当を食べながら勉強になる話が聞けて楽しかったです.

Home · airbnb/MvRx Wiki · GitHubが気になる👀といった話や,jetpackの導入状況の話などをしていました.

みなさんとても優しい方で色々なお話を聞かせてくださり,有意義な時間を過ごす事が出来とても嬉しかったです.もっと精進してもっと沢山お話したいなとも思いました!

他にも,シャッフルランチといって会社の中でエンジニアだけでなく全員でランダムにチーム分けをしてランチに行くというイベントが毎週開催されていたのですが,そのイベントでも普段お話しないような方とお話する事ができたりして楽しかったです.

f:id:hanahanahunachi:20180916211231j:plainf:id:hanahanahunachi:20180916211241j:plainf:id:hanahanahunachi:20180916211245j:plainf:id:hanahanahunachi:20180916211253j:plainf:id:hanahanahunachi:20180916211300j:plainf:id:hanahanahunachi:20180916211309j:plainf:id:hanahanahunachi:20180916211322j:plainf:id:hanahanahunachi:20180916211332j:plainf:id:hanahanahunachi:20180916211347j:plainf:id:hanahanahunachi:20180916211405j:plainf:id:hanahanahunachi:20180916211433j:plainf:id:hanahanahunachi:20180916211041j:plain

施策?チームでランチした時に食べた鰻も美味しかったです.

f:id:hanahanahunachi:20180916211051j:plain

ほとんどなかったのですが,一人の日は会社で安く買うことのできるチキンや野菜を食べながらネットサーフィンをしていましたϵ( 'Θ' )϶チキンが美味しかったです.

f:id:hanahanahunachi:20180916210205j:plain

 🍚に関していうと,楽屋の唐揚げが美味しかったです!でも一個が大きすぎて3個/5個しか食べられませんでした.鍛えてリベンジを謀りたいです!

部活動🏓

一回しか参加していないのですが,へいへいさんに卓球部の活動に連れていって頂いたのがとても楽しかったです.

沢山汗かいて,沢山笑えて最高でした!!

f:id:hanahanahunachi:20180916213905j:plain

大人になったらまた参加して,🏓のあと呑みに行きたいです🍻

打ち上げ🍹

月の最後に打ち上げがありました!

美味しいドイツ料理とビール(私は飲んでないです)に囲まれて\わいわい/しました.

お酒入ってないのに超やばいことを話した気がするのですが,忘れてください!(きっとお酒入ってましたし忘れてくださってるはず...)

みなさん楽しそうで,それを見てられるだけで私は楽しかったです.

f:id:hanahanahunachi:20180916214106j:plainf:id:hanahanahunachi:20180916214140j:plainf:id:hanahanahunachi:20180916214208j:plainf:id:hanahanahunachi:20180916214214j:plain

お仕事全く関係ないのもあるけど記憶に残ったディナー

にしこりさんと

小さい企業で働いている方のお話を聞くこともそんなにないので,いい経験になりました.あと,ご飯が美味しかったです!

f:id:hanahanahunachi:20180916214359j:plainf:id:hanahanahunachi:20180916214404j:plainf:id:hanahanahunachi:20180916214413j:plain

釘宮さんとよこちさんと

このブログを眺めた方は多少わかると思うのですが,本やブログですごくお世話になっていたので,一緒にご飯にいけてお話できて嬉しかったです!

地元が近かったのでその話をしたり,他のAndroidエンジニアの方についてのお話や,少しですが設計のお話を聞かせていただけました!コミュ力と知識量を鍛えてリベンジしたいです!

お豆腐をお客さんの机の上で作ってくれる美味しかったです□

 

f:id:hanahanahunachi:20180916214624j:plainf:id:hanahanahunachi:20180916214635j:plainf:id:hanahanahunachi:20180916214647j:plain

インターン最終日の🍚

namikiさんとへいへいさんと🍚に行きました.へいへいさんは次の日始発?の飛行機で大変だというのに連れていって下さってほんとに嬉しかったです.

この時初めてお二人ともアニメに詳しい事がわかって驚きました!!(今更です.)

パンケーキも美味しかったですし,一番お世話になったお二人と悔いの残らないくらい色々沢山お話出来たので良かったです.

こうやってお話できるのもこれが最後かって思うとちょっと寂しかったです😭

f:id:hanahanahunachi:20180916220106j:plainf:id:hanahanahunachi:20180916220110j:plainf:id:hanahanahunachi:20180916220119j:plainf:id:hanahanahunachi:20180916220125j:plainf:id:hanahanahunachi:20180916220202j:plain

一人暮らし

一人暮らし最高!自炊出来たので生活費も抑えられました.

しかも会社から徒歩5分弱のマンション?を借りて頂いていたのでゆっくり睡眠を取ることが出来て最高でした.(普通だと女の子は遠くめのホテルに止まる羽目になるので..)

大変だった事

特にはないです!

あえて言うなら,もともと人の名前を覚えるのが不得意なので沢山の方とお会いしすぎて名前を覚える事ができず大変でした.

自分の中での課題

とりあえず何にせよ遅刻をなくしたいです.

また,コードを書いていて力不足だなと感じる事も沢山あったので,これからも頑張って行きたいです!

最後に....

インターンに来る前はそもそも行けることすら信じられず,実力が足りずに悲しいことになるんじゃないか?と不安で仕方がなかったのですが,インターンを終えて,

インターンシップに来てよかった!!超楽しかった!!役に立てて嬉しかった!!

就職するってなった時にチャレンジするだけの力があったら....入社チャレンジしたいです!!(小声)

と本気で思いました.

真面目に会社の方々全員良い人だし明るいし強いし私がこんな所にいても,こんなに楽しんでも,良いのだろうか?今が私の人生の中で一番Happyな時期時期かもしれないと思う程でした.

また,テストを書く練習や簡単なCustomViewを作らせてもらえたりなど,やりたい事をさせてもらい色々経験を積む事ができました.お陰様で最後のpushがCIを通らなかった事以外,悔いは残ってないです!

最後の最後に...

私に優しく接して下さったり体調を崩した際にも助けて下さった会社のみなさん,分からない時色々助けて下さったり色々お話して下さった施策?チームの皆さん,私に色々教えてくださったりコードレビューをして下さったAndroiderのみなさん(あつもさん,充さん,むっきーさん),コミュ障の私にも沢山声をかけて明るく話しかけて下さったプランナーのアニーさん,私に最初に声をかけてくださってインターンに参加させていただくきっかけを作って下さったnamikiさん,メンターさんとしてして私に色々なことを教えてくださったへいへいさん本当にありがとうございました.

 

色紙と花束嬉しかったです.

f:id:hanahanahunachi:20180916220715j:plain

 

 

PS.

午前中に用事が入るかもしれない関係で27日のお昼,ぼっちする予定なので一緒にお話🍚してくださる方募集してます...!

potetotips #54 に参加してきました!!

こんばんは,ふなちです!!

今日は,

「potatotips #54 (iOS/Android開発Tips共有会)」

にブログ枠で参加しました(((o(*゚▽゚*)o)))

主催はeureka, Inc. さんでした.

f:id:hanahanahunachi:20180823235652j:plain

写真撮るの下手でほんとすいません。゚(゚´ω`゚)゚。(なんかInvisible reCAPTCHAとかの画像認証?の写真みたいになってしまった...

 

ではでは今回のAndroid枠のTipsをまとめて行きたいと思います!!

iOS枠Tipsにも良いものは沢山あったのですが,私が知識をまったく持ってなくてデマを書きかねないので今回も遠慮させて頂きます \ゴメンナサイ/

また,誤った記載がある場合は即Twitter等でリプ飛ばしてください. 

1日でできる!ARCoreことはじめ by zukkey

speakerdeck.com

github.com

↑スライドとサンプルコード

Unityじゃなくて,Android Studioを使って,ARCoreを使おうぞ!と言うLTでした.

Unityに普段あまり触れてないな私みたいな人には朗報!!

ざっくりした実装の流れとしては,シーンを生成して,それにNode(モデル)を追加する.そして,その追加したNodeは移動,縮小,拡大,回転,が可能なのだそうです.デモでは,ドロイド君が沢山生成されて大きさを変えられたり,していて可愛かったです(((o(*゚▽゚*)o)))

また,円柱とか直方体とかは標準で用意されており,ViewRenbableを使って,簡単に表示する事ができるそうです.

ARCoreめっちゃ気になってたので,このLT聞けてよかったです!

今すぐにでも試したかったのですが,私はEssential PhoneとZenphoneしか持ってないので諦めました。゚(゚´ω`゚)゚。

ARCoreサポート端末一覧:Supported Devices  |  ARCore  |  Google Developers

 

 OculusGoの開発Tips by h-godai

Oculus Goのアプリの開発に関するLTでした.

※Unityにほんとに詳しくない&記憶を頼りに書いているのであまりかけてないです.

Oculus GoはAndroid端末なのでUnityで開発できるそうです!

Oculus Goアプリ開発において大切なのはfps問題だそうです.fps遅いと酔っちゃうみたいです🌀🌀

あまりにも重くなるような処理を有効にするようなチェックボックスのチェックはちゃんと外したり,あまりUserが気づきにくい無駄な処理等をしないように工夫すべきだそうです.例えばshadowの処理とかコントラストとかの処理はできるだけ省くべきだそうです.

Oculus Goせっかく持っているので私も何かしら活用したいです..

uber/motif by shaunkawano

speakerdeck.com

github.com

 ↑スライドと今回のLTをするきっかけとなったツイートとライブラリ.

Uber製DIライブラリのmotfiについてのLTでした!

motifって?

  • ネストされたスコープのために最適化されたシンプルなAPI
  • 実際の依存性注入のためのDaggerのコードを生成してくれる!
  • 絶賛開発中だよ!!(● ˃̶͈̀ロ˂̶͈́)੭⁾

実際にmotifを使ったコードからDaggerのコードを生成!

詳しいコードはスライドに乗ってるから省きます!

@Scopeと@Objectだけで,ComponentからModuleまで複雑なDaggerのコードを生成していて凄いです...

あと,@Exposeを使うことでサブコンポネントに公開するかしないかを選べちゃいます.@Exposeをつけたものはサブコンポネントに公開されます.

スライドの例で行くと,ChildScopeでRetrofitのインスタンス使いたいぽよ!って時に,もし@Exposeをつけてないとエラーが出現🐜そこで@ExposeをつけたらOK!エラーは消えます💥

アノテーションの種類も多く覚える事が多いDaggerに比べ,覚えなきゃいけない事が少なく学習コストが低いmotifはとても便利そうです.

使うかどうかはちゃんと概念(哲学)理解してからにしような!だそうです.

Androidにおける歩数取得とバックグラウンド制限 by KensukeIzumi

speakerdeck.com

www.slideshare.net

Androidで歩数取得をする方法には

  1. Google Fit APIを使う
  2. SensorLisrenerを使う
  3. 加速度センサーを使ってゴリゴリ

があるそうです.

上の項目ほど,簡単で.精度を高めたいなら下の項目の方法を使用すべきだそうです.

加速度センサーを使う方法は,かなり大変なので採用しなかったそうで,はたまたGoogle Fit APIも採用しなかったそうです.

Google Fit APIを採用しなかった理由は,Google Fitアプリと歩数が異なってしまうからだそうです(やばい).発表後詳しい話を聞いたところによると,そもそも歩数を計測する仕方がGoogle Fit APIGoogle Fitアプリ間で異なるそうです.Google Fitアプリではローカルでよしなに歩数を計測し,Google Fit APIではまた別のロジックでクラウドを介して色々やっているみたいです.だからGoogle Fitアプリと歩数が違う!と言う声をなくすためにも,SensorLisrenerを使うを使って実装したそうです.

ただ,SensorLisrenerを使うにしてもバックグラウンドで実行すると,Dazeモード(省エネモード)等に気を使わなくてはならず,AlermManagerを使って歩数取得をしているサービスが終了しそうになったら復活させると言う処理で代用していたそうです.という訳で,ForgroundServiceを使おう!って話でした.ただ,ForgroundServiceはどうやってUserから止められないよう工夫するかがネックになってくるそうです.

Android,省エネ大事精神がすごいのでdeveloperにとってはちょっと大変です...Pからはバックグラウンドが使えなくなっちゃうし...にゃーん🐱

Ripple再考 by yiwaisako

Rippleって言うのは,タップしたらぽわんって円が広がるエフェクトのことです,

公式ドキュメント:RippleDrawable  |  Android Developers

これの実装の仕方についてのTipsでした.

API 21から追加されたものですが,Lollipop(API level 21)では気をつけなければいけないことがあるようです,

例えば,ボタンのみにrippleをつけたい場合には,

<android.support.v7.widget.CardView
android:layout_width="368dp"
android:layout_height="wrap_content">

<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView" />
</android.support.v7.widget.CardView>

みたいな感じでFrameLayout(CardViewはFrameLayoutを継承してるのでOK)でtextを囲んだ物をButtomにしたり,drawbleリソースを定義する際には,rippleタグだけじゃなくitemタグの方にも色を指定してあげないとちゃんと動かないそうです.

 

Share apk via Bitrise  by kaelaela

speakerdeck.com

Share apk via Bitrise - Speaker Deck

↑スライド.このリンクに必要なリンクが全て書いて下さってるので超親切🙏🙏

タイトルの通り,bitrise+slackでapkを配布しよう!というLTでした.

apkをテスターさん等に配布するとき大変で無駄なコストがエンジニアにかかるのを避けたい!という気持ちからこのやり方を導入したそうです.

必要なのは,

  • Bitrise start Build step
  • Deploy to Bitrise.io step
  • Send a slack Message step
  • 簡単なshell script

だそうです!こんだけ!!!!

詳しい設定の仕方はスライドに丁寧に書いてあるので読むといいと思います.

私も最近,apkを友達にdeployGateを通して配布していたのですが,urlを教えなければならず,バージョンが変わるごとに毎度毎度リンク生成→コピペを繰り返していたので次はこの方法を導入したいです.

あとで聞いたのですが並列実行はこの資料の通りにやるだけじゃできないそう?なので,スライドの更新?楽しみです!!

Android/iOS端末間でデータを送る。BLEで。by coffeegyunyu

www.slideshare.net

 AndroidiOS間でBLE通信を行う方法についてのLTでした.

BLTは一気にたくさんのデータを送ることが無理🙅‍♀️なので,データを細かく分割して送信したり,その送信ではリクエストを沢山飛ばす関係で時間がかかったりする為色々工夫しなくてはなりません.

でも,MTU(Maximum Transmission Unit)を調整することで最適化が可能に!

Android -> iOSでデータを送る時(スライド6ページ)

iOS -> Androidでデータを送る時(スライド9ページ)

のやり方で行われるそうです.

ちなみにAndroidはMTUを取得できるAPIがあるのですが,iOSではMTUが取得できないのでAndroid側からMTUを知るしかないようです.

最後に,端末の割いてきなMTU取得方法を知っている方教えてください.との事です🙆‍♂️

まとめ

他にも,iOS枠のTipsでは,U+202E(Right-toLeft override, RLO)のお話とかもあり,勉強になった.

potetopisに参加するのは3回目なのでそろそろ発表すべきかなぁとか考えてます...いつかチャンスがあれば...

 

懇談会

f:id:hanahanahunachi:20180824023435j:plain

↑ピザ,美味しかったです!

 

f:id:hanahanahunachi:20180824023440j:plain

インターンで超お世話になっているへいへいさんまえかわさん(すごく仲良しで楽しそうなので羨ましいです!)

 

懇談会では他の方ともお話させていただけてそこでも新しいことが学べたりして楽しかったです!

eurekaさん運営さん,ありがとうございました🙇‍♂️

 

(読み直していない為,誤字脱字多いと思いますがご勘弁を。゚(゚´ω`゚)゚。)

あとあと,実はリベンジLTしたいスライド持っているのでいい感じの勉強会とかありましたら教えてください☆