Allegro!

JavaやIT系小ネタ、趣味の話まで。

GW中に見た本について殴り書きしました

皆さんこんにちは。

ついに10連休が終わりますね。今の今まで満喫しまくってたPaZooです。

 

最近、設計に携わる機会が増えましたので改めて【良い設計・良いコード】について勉強しようと思い『システム設計の謎を解く 強いSEになるための機能設計/入出力設計の極意』と『リーダブルコード』を読破しましたので感想を書いておきたいと思います。

『システム設計の謎を解く 強いSEになるための機能設計/入出力設計の極意』と『リーダブルコード』を読んだ感想

設計を始めたばかりの初心者からより綺麗で良質な設計書を書きたい方へ是非おすすめしたい一冊です!

本書では、「画面、帳票、DB、外部連携」といった4つの入出力設計「オンライン、バッチ」という2つの機能設計について詳しく書かれています。

設計の前作業やアーキテクチャについても触れられている良書なので気になる方は是非読んでみてはいかがでしょうか?

『リーダブルコード』を読んだ感想

全体的にとても読みやすい本でした!

本書はオライリージャパンより出版されていますが、非常に読みやすかったです。

しかし、上級者から見ると「自分にとっては当たり前のことだから得るものは何もなかった。」と映る内容かもしれませんし初心者から見ると「CとかPythonで書いてあるけどSwiftしか分かんないから無理!」となるかもしれないです。

ただ、本書に書いているのは「プログラミングのお作法」がまとめられているので上級者の方は知識の整理で読んで欲しいですし初心者の方はプログラミングのお作法を知るということで何だかんだ言ってもプログラムを書く人には是非一度読んで欲しい本です。

 

ポイント

2章 名前に情報を詰め込む

明確な単語を選ぶ

名前をつけるときに「取得するための変数だからとりあえずGETにしとこう」と考えるのではなく、ネット経由ならDownloadにするなど名前から分かる動作や状態を説明する単語を使う。

スコープが小さければ短い名前でも良い

数行程度でしか使用しない狭いスコープの中でなら具体的な名前をつけなくても読みやすい

 

6章 コメントは正確に簡潔に

曖昧な代名詞は避ける

「これ」や「その」などの代名詞を使用することは避ける。

情報密度の高い言葉を使う

コメントは長々と正確に書くのではなく、密度の高い言葉で簡潔に書く。

 

まとめ

いやあ、とても良い本ばかりでした。もっと設計力、コード力を身に付けるために今後も継続して設計書関連の書籍を読み漁っていきます。

Visual Studio 2019にどっぷり浸かった日曜日を過ごしました。

もうすでに火曜日も終わろうとしていますけどね。

皆さんこんばんは、管理人のPaZooです。 

f:id:PaZoo:20190417001727p:plain

先日、2019年4月14日(日)に「Visual Studio 2019 Launch Event in Fukuoka」へブログ枠として参加させて頂きました!
ちゃんと参加したよ!!という足跡を残すべく、どんなイベントだったか私の曖昧な記憶と偏見に基づいて書き嬲っていきます。

 で、どんなイベントだったの?

統合開発環境(IDE)としてめちゃくちゃ名高い『Visual Studio』。
エンジニアなら誰しもがご存知かと思いますが、ついにメジャーアップデート版「Visual Studio 2019」が2019年4月に正式提供が始まりました!!

そこで、どんなアップデートがあったのかをMicroSoft社の井上章さんと小田祥平さんをゲストにお迎えし、新しいVisual Studioについてエンジニア達とアツく語り倒すようなイベントでした!


イベント内容としてはこんな感じ。
昼間から夕方までどっぷりVisual Studio2019に浸かってきましたw

 

  1. Visual Studio 2019 GA ! ~ 最新情報 & これからの開発スタイル(@chack411)
  2. Azure*VisualStudioで簡単アプリを作ってみよう(@MS_odasho)
  3. 開発持続性を保つために私が考えるアプリケーションアーキテクチャ(@tsubakimoto_s)
  4. ASP.NET Core を使用して Web API を構築してみよう! with Visual Studio 2019
  5. LT(7名*5min)

 

 

それぞれの内容を簡単にまとめてみましたので、ざっくりとご覧ください!

1.Visual Studio 2019 GA ! ~ 最新情報 & これからの開発スタイル

Speaker:井上章さん(@chack411)

今回井上さんがお話された内容は、AIがコーディングを支援する「IntelliCode」、ペアプログラミングを支援する「Live Share」など、これまで注目されてきた機能についてdemoを交えながらの講演でした!
アプデ内容についてはざっくりとこんな感じ。

 ・devenv.exeのメモリ最適化
・UI/UXの強化
リファクタリング機能(コードクリーンアップ:俗にいうお前のコード直しておくやで機能)
・AIが支援するIntelliSence
・Live Share機能 etc...

噂はちょこちょこ耳に挟んでいましたが、実物を目にすると「なんと!!!」と非常にワクワクしましたw

ちなみに、Visual Studio 2019 for Macでは、C#コードエディタがWindowsVIsual Studioをベースにしたものに置き換えられ、ユーザーインターフェイスmacOS UIネイティブなものとして作り直されているのでぜひチェックしてみてください!

 

www.slideshare.net

2.Azure*VisualStudioで簡単アプリを作ってみよう

Speaker:小田祥平さん(@MS_odasho)

簡単アプリを作ってみよう!という名のもと、イベント当日まで資料を作っておらず「焦りながら作ったよ〜」と努力の結晶がところどころ見え隠れする講演でした…w

内容としましては、簡単アプリをAzure*VisualStudioで作ってみよう!!とdemoを行いながらの講演で、非常に簡潔にまとめられており実際にVisualStudioを触りながらアプリ作成をしてくださったので使うイメージが持ちやすかったです!

話の内容も面白く、あっという間に時間が過ぎたのでまた次回機会があればお話を聞きたいなーと思いました^^

www.slideshare.net

 

3.開発持続性を保つために私が考えるアプリケーションアーキテクチャ

Speaker:松村 優大さん(@tsubakimoto_s)

開発持続性を保つためのアーキテクチャ
今までの開発人生の中で、そんなことを考える時間などあっただろうか。

ふと振り返ると自分の開発人生の中でアーキテクチャーについて学ぶことは、ほぼほぼなかったように思えました。

そんな中での、今回の松村さんの発表は私の心にささるものがありましたし、エンジニアとして「こんな風になりたい」と思った憧れの人です!

登壇資料はアップされていなかったので、残念ながら掲載することはできませんがまた次回機会があれば積極的にお話を聞きたいなと思いました^^

追記:公開して10分経たず松村さんからの反応をいただけました・・・!!
松村さんありがとうございます!!

www.slideshare.net

 

docs.microsoft.com

4. ASP.NET Core を使用して Web API を構築してみよう! with Visual Studio 2019

ハンズオンで行った内容を、かきそふと(@kakisoft_tab)さんがまとめてくださっていたので興味のある方は下記URLをご覧ください!

 

kakistamp.hatenadiary.jp

 

5.LT

LTはひとり5分という持ち時間の中で、思い思いの内容がぽんぽん出てきました!

ある会社ではビールを飲みながら勉強会しようぜ!という取り組みをやっていたり、ある登壇者はVSのバージョンアップを催促してくるあの娘がいたりなんやらかんやらで、とにかくアウトプットしまくる方々の話を聞けてイイ刺激(?)になりました。

次回、機会があれば私もLT枠で参加させていただきます!w

まとめ

一言で言うと今回のイベント、めちゃくちゃ面白かったですw

外部イベントでエンジニアの皆さんと交流できる良い機会にもなりますし、新しいことを学習することができたので参加してよかったなと思いました^^

また、こうしてアウトプットすることで自身の知識や整理力もつくのでどんどん活かして経験値にしていく所存ですw

めちゃくちゃ面白いイベントを企画してくださった運営の皆さん、そして同じイベントに参加した皆さん、本当にありがとうございました!!

【Rubyのパパ まつもとゆきひろ氏特別講演】20代エンジニアのためのプログラマー勉強法に参加した話。

皆さんこんにちは。

先日、2019年3月30日(土)にサポーターズで開催されたイベント「まつもとゆきひろ氏特別講演

20代エンジニアのためのプログラマー勉強法」に参加してきました!

 

f:id:PaZoo:20190331203414j:plain
どんなイベントだったのか、自身の備忘録も兼ねて振り返りたいと思います。

 

講演内容

  1. 学生と社会人の"勉強"の違い
  2. なぜ勉強するのか?
  3. 勉強についてのTips(what,where,when,how)
  4. とにかくアウトプット
  5. 成功するためのTips
  6. 最後に3つのアドバイス

1.学生と社会人の"勉強"の違い

 

学生 

社会人
満点がある 満点がない
記憶

把握

苦手克服 得意を伸ばす
試験 常在戦場
メイン サブ

 

これ、一つずつ説明していきますと…

満点があるvs満点がない
  • 学生・・・満点があるので記憶が重要になってくる。
  • 社会人・・・満点がないのでどれだけ知識を詰め込んでも100点以上取ることは出来ない。つまり学生時代の勉強法では通用しないと言うこと。 
記憶vs把握

学生のテストでは記憶が重要になるが、会社ではググれば良い。大切なのは知識のインデックスを作っていくことなので、調べる力が必要。 

苦手克服vs得意を伸ばす

自分の苦手な科目を頑張る、と状況。

・90点以上は見込めない

・40点ならまだ伸びしろがある

しかし、好きなことを頑張っていた方がモチベーションを保つことができる。

平均的なプログラマー以上を目指すなら、得意なものを伸ばすことがあるべき戦略である。 

ちなみに私は分数や数式がとっても苦手でしたが、文章問題は得意でした。

なので、同じ分野でも得手不得手があるのである分野の中でも特に得意なものや好きなものを伸ばしていくともっと良くなるのか。

試験vs常在戦場

学校では基本テストの結果が大事、しかし社会人では常に仕事での成果を求められる。

メインvsサブ

学ぶことは学生にとってメイン、しかし社会人では学ぶこと自体サブであり得た知識や技術を持って成果を出す必要がある。

 

2.なぜ勉強するのか?

働いている上に、勉強したいから勉強会に参加している。

なぜ勉強をしたいのか。なぜ参加したのか。

そこには様々な理由がある。

  • 成功した
  • 高収入が欲しい
  • 良好な人間関係が欲しい
  • 嫌なことはしたくない
  • 好きなことで生きていたい

これらを実現するためには、「高評価」を得ることが必要になる。
つまり勉強の目的は「尊敬される(人格的な評価)」または「尊重される(蔑ろにしない)」と言う部分を得ることと言える。

 

3.勉強についてのTips(what,where,when,how)

what

好きなことを学ぼう。好きこそ物の上手なれ。

自分が好きなものを見つけるためには、インベントリ(棚卸し)をすること。

つまり、自己分析をすること。
得意なことや趣味、興味、思考、背景といった自分の特性について理解を深めることでインベントリすることができる。

 

where

上記でも説明したが、「成功」と言うのは高評価を得たり尊敬や尊重されることである。

良い環境で学ぶ→成長する→モチベーションup→もっと勉強するといった好循環ループに入ることが出来る環境に自分を置くべきである。

ループになることを妨げる環境からは離れた方が良い。
win-winの好循環ループかNo Dealであるべきでそうでないなら逃げて良い。

自分が成長できる環境に身を置くと言うのは、結構難しいところですよね。

しかし、時間は平等にしか流れない。

今勉強している人たちと同じ時間を過ごしている時点で、と言うことでしょう。

when

まとまった時間を作るのは意外と難しい。だからこそ、優先順位をつけて過ごすことが大事である。

また、その時間を過ごすために生産性を高めることで時間を確保する必要がある。

how

好きなことで稼げることがベスト。

しかし、お金にならない可能性もあるわけで。なので、妥協と打算が大事になってくると言うことですね。

しかし、一度自分が決めた判断を永遠に信用してはいけない。

10年後、20年後と選択肢に迫られることはあるので妥協をしても常に可能性を模索すべき。

4.とにかくアウトプット

知識を得ることはググれば良いので比較的楽な昨今、アウトプットに価値がある。

一見簡単そうですが、アウトプットすることで「失敗したらどうしよう」や「面倒」と感じたり意外に出来なかったり心理的障壁がある。

 しかし、アウトプットは人を成長させます。

ハードルを下げるために、アウトプットの質は置いておきつつ習慣化することでアウトプットする習慣が身に付き、心理的障壁を下げていくと出来るようになる。

5.成功するためのTips

成功するためには知名度をあげる。

そのためには認知され、知られる必要があります。故に、アウトプットして自分の価値を示す必要がある。

6.最後に3つのアドバイス

コンピューターサイエンス・アーキテクチャの基礎を押さえる

CSの基礎知識が差別化になりうる。

良いプログラムを書く人はコンピューターアーキテクチャをきちんと理解しているので、コンピューターサイエンス・アーキテクチャの基礎を押さえてこう。

英語を学ぶ

まず英語があれば18億人と繋がることが出来る。プログラミングに限らず、最新の技術や発見は英語で発信される。

なので、英語があれば一時情報を取ることができるが、出来なければ日本語に訳されるのを待つしかない。

ペラペラ話せなくても、英語から情報を読み取る能力は身に付けるべき。

まとめ

変化し続ける、というのはすぐにできることではないです。

しかし、毎日少しずつ「昨日はあそこまでやった。今日はここまでやろう」と変化を持たせることで継続していけるのではと日頃の自分の生活を改めようと感じました。

今回の講演に参加してよかったです!

 

PMしたいが為にBacklogWorldreCapMeetupに参加した話。

皆さんこんばんは。管理人のPaZooです。

f:id:PaZoo:20190308005354p:plain

先日、3月6日(水)に株式会社ヌーラボさんで開催された「JBUG(福岡#7)BacklogWorldreCapミートアップ」に足を運んで参りました!


今回のイベントが初ですが、非常に心熱くなる内容でした〜!
備忘録も兼ねて皆さんにご紹介していきます。 

 

 

そもそもJBUGってなに?

JBUG(ジェイバグ)は、Backlogユーザーによるコミュニティです。

Backog(バックログ)とは何なのかと言いますと、チケット駆動型システムと呼ばれるプロジェクト管理ツールのことを指します。

 

Backlogとの出会い

現在、仕事ではRedmine(レッドマイン)というプロジェクト管理ツールを使っています。

 

「じゃあRedmineで良くね?」という声も聞こえてきそうですが、これから先「自分でアプリ開発をやっていこう!」と考えた時にプロジェクト管理ツールを一つだけしか知らない場合、もしかしたら時間を無駄にしてしまうかもしれません。

それってすごく勿体無いことですよね。

 

常に最良のものを探してアップデートをして行きたい。そんな意識の中で出会ったのがBacklogでした。

ちなみに、Wikiを利用したりSubversionやGitとの連携もできますしガントチャートをバーンダウンチャートなどのプロジェクト管理機能も使うことが出来る本気で使えるツールなんです!

 

詳しくはこちらからご覧ください!

backlog.com

 

どんなイベントだったの?

さて、まずはJBUGはどんな目的でイベントを開催しているのか。そこからお話させていただきます。
JBUGはコミュニティとして活動しており、全国各地にユーザーがいます。100万人を超えるユーザーがいることから、「プロジェクト管理」や「仕事のうまい進め方」に関する知識やテクニック、ノウハウを学び合う場として発足しています。

 

それでは、今回はどんな講演があったのか簡単にご紹介していきます!

 

session1:Backlogで分かる炎上の見分け方、消し方

登壇者は藤崎優さん。

株式会社オルターブースに勤務されていますが、受託開発を行う際にその時点で出来る粒度の課題を作成しているとのこと。

受託開発となると、顧客からの要望だったりクレームだったりと様々な意見がメールで送られたり電話で入ってきたりします。

しかし、藤崎さんはプロジェクトで500近くものチケットを作成し、スケジュールを組むことで平均した作業量というのが目に見えてきます。

これが「可視化」というものですね。

 

可視化することで『タスクの粒度の洗い出し』や『仕事の進捗確認』などが出来ます。

更に藤崎さんは、「メールではなく、Backlogのチケットに要望やコメントを書いてください」と顧客とのコミュニケーション場としても使用していたそうです!

(※ちなみに1作業1チケットです)

メールでのやり取りではなく、チケットで管理することで顧客と共通認識を持っておくことで「言った言ってない」にならず炎上を防ぐことが出来るよ!とお話されていました。

もちろん中には想定外の問題や、発生しなかった問題もあるのですが毎週棚卸しを行いながら、顧客とのコミュニケーションを取っていく感じです。

すごいなあ、ウォーターフール的な感じ。

 

 session2:こんなプロジェクトはいやだ!

登壇者は合同会社01waveのCDO兼株式会社ジーティーアイ代表取締役である佐藤毅さん。

 

数々の修羅場を経験してきた佐藤さんが、「こんなプロジェクトはいやだ!」とムンクの叫びの如く阿鼻叫喚なLTでした。

どこかで耳にしたことがあるようなフレーズですが、LTを聞き進めば進むほど心の底から「うわぁ…」と思うほどに非常に激しめな現場だったことを物語っていました。

今回お話された内容についてSlideShareで掲載されておりますので、以下の資料をご覧ください!

 

www.slideshare.net

 

session3:「田舎の木材工場で起きた奇跡」と、その後

登壇者は、「世界中の”むずかしい”を簡単に」という理念を掲げる株式会社diffeasy取締役CTOである西武史さん。

宮崎県にある、とある木材工場で起こった奇跡とその後のお話。

 

宮崎県にある、とある木材工場の社長から「iPadでシステムを作りたい」と相談された。

しかし、社員は平均年齢48歳のほぼガラケーで「iPadってなんね?」という状態からのスタートだったそうです。

 

ここで考えたのが「まず、何をやるべきか?」から決めていき、現場でのヒアリングと顧客側に担当者をつけて現場に寄り添った形で要求分析を行っていった。

 

見えてきた課題として「設計図面の管理が大変(家1軒につき500枚)、字が小さくて読めない」などが挙がり、解決策としてペーパーレス化を図ったそうです。

そうすることで、設計図面の管理も不必要となりますし拡大することで文字の可読性も上がります。

 

大成功ですね!!

そして、このシステム化で他にも良い影響が!

・設計者の残業時間が大幅に削減

・誰が何をやっているか進捗が分かる

・職人気質な為、技術が人に依存する形になっていたが作業が人に依存しなくなった

・技術の継承もできるようになった

 

これってすごいことですよね!!

しかし、西さんが意識したのは「要望がたくさんあっても一気にやらず、一番の課題に絞ること」で根本的な問題を解決していくことができたそうです。

 

ITのあるべき姿を体現したような、そんなお話でした。

お話の中で特に印象に残ったのは、システムを提供した後にユーザーが自分たちで工夫をして良い方向へシステムを使っていったことです。

なんとiPadを見やすくするためにスタンドを作ったり、工場内に大きなスクリーンを用意して全体に共有できるようにしたりとシステムを更に使うことで見事なまでに循環していました。

 

私もいつか、誰かに喜んでもらえるような、そんなシステムを作れるように頑張ります!

 

まとめ

今回初めての参加でしたが、熱量がものすごいイベントでした。
企業色が強いのかな、と正直不安でしたが全くそんなことはなくてどちらかといえば本当にプロジェクト管理についてのノウハウや知識を学び合えるイベントでした。

プロジェクト管理ツールを通したイベントでしたが、根本として「人to人の架け橋」なのかな、と感じました。

今後も更に期待が高まるコミュニティなので、気になったかたはぜひ一度参加してみてはいかがでしょうか?

 

【CeroDay2019Fukuoka byJavaコミュ】Javaerなエンジニアたちがビール片手にわいわいしてたお話。

皆さんこんばんは。管理人のPaZooです。

f:id:PaZoo:20190217005002j:plain


先日、2月14日(木)に福岡市博多区で行われた「CeroDay2019Fukuoka byJavaコミュ」へと足を運んで参りました! 

どんな内容だったのか、自身の備忘録も兼ねて紹介していきます!

 1.Spring以外のJavaWebフレームワーク(@kis)

このセッションは、私が初めて参加したイベント「Oracle Code One2018報告会」で出逢った異彩の人・きしださん(@kis)が登壇されました。


今回取り上げられていたのは、Spring以外のJavaWebフレームワークについて。

お恥ずかしい話、フレームワークはSpringとSpringBootしか知らなかった私。今回のセッションはとても勉強になりました…!


そしてMicronautはGroovyにも対応しているのね…!!ごめんよ。。。

取り上げられていたフレームワークについて簡単にまとめてみました。

JavaWebフレームワーク

説明
Micronaut

MicronautはJVMで動くフルスタックのマイクロサービスフレームワーク。GroovyやKotlinにも対応している。

特徴は、DIをコンパイル時に解決してくれます。

Helidon

HelidonはMicroProfileに対応したフレームワーク

特徴は、マイクロサービスを作成するために開発者が必要とする基盤(構成、セキュリティ、Webサーバ)を提供してくれます。


Helidonは比較的新しいフレームワークということもあり、Docker対応、メトリクス(何かしらのデータを収集して計算や分析を加えて分かりやすいデータに変換すること)やヘルスチェック(HelidonMP)が入ってきています。

メトリクス管理を行うことで開発者は品質を可視化することができ、ユーザーへより良いサービスを提供することができるというメリットがあるんです。


フレームワーク、すごいですね!この後、家に着いてからソッコーHelidon触りました。


ただ、やっぱりフレームワークの仕組みやピュアなJavaを全て理解しているという訳ではないので言語に対しての理解を深めながらフレームワークをうまく活用できるように取り組んでいこうと思った次第です。

2. もうすぐ出るJava12での非互換性(@ykubota)

初めてお会いした@ykubotaさんはマサカリを振るっていました(物理的に)。

こちらのセッション内容については、下記URLにてご覧ください!


Java 12: 利用や動作に影響を与える変更点 · GitHub


セキュリティ問題やランチタイムについて詳しくかつ分かりやすくまとめられています。

3.業務で使いたいWebFluxによるReactiveプログラミング(@cero_t)

さて、ここで今回の大トリである谷本心さん(@cero_t)が満を持しての登場です!

Spring5に導入されたWebFluxについてどんな感じか雰囲気を掴むのがセッションの主題でした。

そもそもReactiveプログラミングを知らなかったのですが、谷本さんの資料や説明を聞くと「めっちゃええやん、Reactiveプログラミング。。。」という印象を受けました。


WebFluxは少ないスレッドで効率的にさばいてくれる特徴を持っていて、特にリソース効率で良さげ。

詳しい内容については下記URLにてご覧ください!

業務で使いたいWebFluxによるReactiveプログラミング / Introduction to Reactive Programming using Spring WebFlux - Speaker Deck

 

まとめ

今回のCeroDay2019はとても興味深いものとたくさん出会えて刺激的な時間を過ごすことができました!
そして、登壇者のセッションの進め方だったりスライドの作り方なんかも今後の参考になるのでめちゃくちゃ勉強になりました。

毎日勉強あるのみだなぁ…たくさん学ぶことがあって大変ですが、楽しんでる自分しかいないのでこれから突っ切っていきますw

 

それでは、今回はこの辺で!

【LINEDeveloperMeetup#50】モバイルアプリとエンジニアたちの未来のお話

皆さんおはようございます。
24時を回れば翌日だと思っているので、日を跨ぐ時は必ず「おはよう」と挨拶をします。しかし友人たちは口を揃えて「なんか違くね?」と言います。なぜでしょうか。

さて、先日(というか昨日)は表題にも書いてある通り福岡で開催されたLINEDeveloperMeetup#50へと足を運んで参りました。

どんな内容だったのか、行った報告も兼ねてざっくりと紹介していきます。

1.LINEでのモバイルアプリ開発(Speaker:若狭建さん)

Agenda

  1. LINE Client Appについて
  2. チームについて
  3. 開発について
  4. これから挑戦していきたいこと
  5. 未来について

感想

若狭さんは過去にAppleGoogleといった企業でエンジニアとして勤務し、現在LINEでエンジニアディレクターとして様々な方面で尽力されています。
青い鳥でフォローはしておりましたが、実際にお目にかかったのは今日が初めてでとても楽しみにしていました!

Agendaで取り上げられている内容で受けた印象や感想は以下の通りです(*´ー`*)

LINE Client Appについて

  • LINEは、今年6月で誕生して8周年(!)
  • 主に使われているのがChat(メッセージ)やCall(電話)の機能で、多い時は50億近いメッセージを処理しているらしいですよ。
  • バイス:iOS,Androidの他にも数多くのデバイスに対応(WindowsMetroとか)
  • 機能:Messasing(Chat),stickers/Themes,Album/Photes/Videos,VoIP(Call),Line Pay etc...
  • 連絡ツール:LINE,slack,JIRA,Zeplin(デザイナーとデザインの話をする時に使うらしい)

チームについて

iOS開発エンジニア、Android開発エンジニア共に100名!!
これだけ大規模な人数で開発しているとプルリクした時のコンフリクトがやばそう…

拠点は主に東京 、ソウルのようですが台北や福岡など様々な拠点でエンジニアやデザイナーたちが活躍しているみたいです。

ちなみに、日本語から現地の言語へとそれぞれの国に応じた言語を通訳してくれる人が各拠点にいるのでサポートが手厚いのが分かります…!

開発について

  • CI>Jenkins,SwiftLint,ktlint(for Kotiln) etc...

開発言語>[iOS]Object-C(50%),Swift(50%) [Android]Java(70%),Kotiln(30%)

 上記の比率を見てみると分かる通り、ほとんどがSwiftで占めていたりKotilnで実装されていて、古いコードについても今後移行するとのことでした。

これから挑戦していきたいこと

大規模なアプリで大人数で開発を行うため、毎日プルリクエストの数がえぐい(150くらい)。
そしてその分だけコンフリクトが発生する。よって誰かが泣く悲しい世界。
→対策として、自動化できるところは自動化したい!
そしてDX(Developer Experience)を良くしたい。

どの企業でも言われているようですが、「DXの向上が開発のモチベーションを決める。開発者が気持ちよく開発が出来ないと、ユーザーへいい商品を届けることが出来ないよ!」 と仰っていたのが印象に残りました。

未来について

  • 自動化できるところは自動化していこ。
  • プラットフォームの進化を常にキャッチしていこ。
  • ビルド/リリースしてくれるエンジニアを探そ。
  • コードのリファクタリングもやりたいよね。
  • テストも簡単に簡潔にしたい。
  • UX、DXを良くしていきたいよね。

LINEという大規模な開発を行っている企業は完全に役割を分担して、自分のタスクだけに集中していこうという考えでこれからやっていけるところに注力していきたい感じが伝わりました...w

「なるほどな〜」と思いましたが、如何せんまだまだひよっこエンジニアなのでコストがどのくらいかかかるだとかタスク管理についてはこれから勉強していこうかと思います。 

2.LINE Creators Studioで写真を簡単&きれいに切り抜いてもらいたい話(Speaker:馬見 誠さん)

Agenda

  1. LINE Creators Studioを使うと誰でも簡単にスタンプが作れるよ!
  2. LINE Creators Studioの中身はこんな感じ!

感想 

馬見さんはLINE Creator Studioの開発に携わったAndroid開発エンジニアとしてLINEに勤務されています。

Android開発者なのでJavaerなのかと思いきや、Swiftで開発したりと無神教らしく、また休日の日には専らマラソンに精を出しているとのことでした。

 

LINE Creators Studioの存在を初めて知ったのですが、このアプリの中でやっていることがめちゃくちゃ面白かったです!!

こちらは簡単に説明させていただきますが、個人的に一番興味深かったのは「写真を自動切り抜きする際、機械学習アルゴリズムを使い、その結果自動切り抜きをしてくれる」というのが面白かったです。

Object DetectionやImage Segmentationを使えばよくね?という話になり、イメージの前景領域を抽出する「GrabCut Algorithm」というアルゴリズムを使って自動切り抜きを実現化させたとのことでした。

こいつの仕組みというのは、下記の通り。

  1. ユーザーが選択した範囲から生成して入力し、外側を背景に内側は前景になる。
  2. GMM(混合ガウスモデル)で前景と背景の画素数分布を学習する。
  3. ピクセルの色情報より前景/背景である確率を予測するモデルを作る。
  4. モデルを用いてピクセルをつなぎ、グラフを構築する。
  5. ピクセルをつなぐエッジの重みを計算する。
  6. エッジの重みの総和が最小になるように切断する。
  7. ユーザーに補正のための線を入力してもらい、再び計算する。

こんな感じ。ねっ面白いでしょ!!

他にも、処理速度を向上させるためにJavaを使わずにRenderScriptを使ってピクセル単位の処理を高速に行うためのScriptを使ったり、画質を向上するために元画像とアルゴリズム用の画像を別々に保持したりといろんな工夫がされています。

話を聞いていると、「ああ、この人はものすごくエンジニアだなぁ…」と感じました。

 

3.LINEとLINE Creators Studio iOSアプリのサーバーAPI呼び出しアーキテクチャリファクタリングした話(Speaker:はるふさん)

Agenda

  1. LINE Creators StudioのLINEログイン周りをSDKアップデートのついでに仕組みから単純化してObservableで楽に扱えるようにした話
  2. LINE SHOPパートのLINEスタンプで扱うリソース管理を大規模らしくより切り分けることで整理した話

感想

はるふさん、新卒採用でLINEへ入社したらしいのですがとにかく知識と技術がものすごいです。
そして、めちゃくちゃ分かりやすいまとめ方をされていてスピーチも分かりやすかったです。

今回のAgendaに共通することは、「従来の仕組みを変えてより単純化しよう!」という感じでした。

私は特に「1.LINE Creators StudioのLINEログイン周りをSDKアップデートのついでに仕組みから単純化してObservableで楽に扱えるようにした話」が印象深かったので簡単にご紹介します!

1.LINE Creators StudioのLINEログイン周りをSDKアップデートのついでに仕組みから単純化してObservableで楽に扱えるようにした話

このお話の経緯としては、元々LINEログインでユーザーを管理していたことが背景にあります。

従来の処理としては、ログインでユーザーに対してTokenを与え、Creators Studioへ連携し認証可能としていました。

ユーザーがブロックされていないか、凍結されていないかなどユーザーの状態を常に見る認証機能として「Refresh」も行っておりアクティブ確認などの役割を担っていたのが従来の機能。

そこへ差し掛かってきたのが「LINE SDK v2へアップデートしよっか」の通達。

これにより、クライアント側ではRefreshが取得不可になってしまいました。

これではユーザーの状態を取得することができません…。

 

そこではるふさんが考えたのが、新しい認証でした。

この認証方法は、独自のリフレッシュの仕組みを無くし新しいLINEトークンで再ログインする流れにしようという仕組み。

「おっこれ良さそう」と思いますよね。でも、そう簡単には行きません。

新たな問題として、今までリフレッシュが行っていたアクティブ確認をこちら側で判断する必要が出てきました。それはとても面倒ですね。


はい。そこで、Observableの出番です。

こいつってなんなのかを簡単に説明すると、

  • 非同期処理フレームワーク、ReactiveXの基礎概念
  • onNext,onCompleted,onErrorの三つのイベントを発生させる
  • いろんなイベントをObservable<T>の形で表すことができる

上記の考えの基、設計〜リリースまで行うことでわかったことがリフレッシュのエンドポイントが不要になったため、コスト削減になった。

複雑な状態もObservableで段階的に仮想して、ストレスなく通信ができるようになりEUやエンジニアにとって優しい世界!

まとめ

先日(昨日か)のイベントに参加して、全く自分が知らなかった知識や考え方に触れて非常に勉強になりました!

そして、「こんなことできるんだ!!やってみよ!」という刺激にもなったので私もガシガシ開発を頑張っていきます!!!

 

それと、今日(2月14日)はJavaのイベントなので終わり次第また報告(という名の感想文)ができればなと思います。

それでは、また次回!

 

 

エンジニアと語らう夕べ-「エンジニアになった彼女たちの思い」【Harmonize Talk!】

皆さんこんにちは、エンジニアとして働くPaZooです。

最近思うことがあります。

それは、会社というのは一種の生き物なんじゃないか、と。
そんな生き物の中で大きく変化していくためには、外に目を向けるのも大事だろうけどもっと内部とのコミュニケーションを取るべきではないのか、と!


ということで、今回は私PaZooが入社した会社で出会った二人のエンジニアとハーモナイズしていきます!!!

今回のハーモナイズメンバー 

メンバー紹介

Yさん(仮名:25歳)

世界中誰もが知っている某大手企業で働くエンジニア。とても笑顔が可愛い女性。好きなものはポケモンピカチュウ

Kさん(仮名:23歳)

日本に住む人なら誰もが使う某大手企業で働くエンジニア。年齢にそぐわず、とても落ち着いた女性。
趣味は旅行と御朱印集め。

今回はこの2人へ、質問を投げつけていきます!!

今、何をしているんですか?

ー今、お二人はプロジェクトに携わっているかと思いますがどんなことをされているんですか?

Yさん:企業名は言えないけど、テスト検証を行う業務に携わってるよ。

具体的に話すと、テスト設計者が作成した試験仕様書を基にテストをやっていく感じかな。

Kさん:私も同じく企業名は伏せますが、主に開発がメインです。

開発言語はJavaを使っています。SQLも触りますよ!

ふむふむ。やっぱり、ひとえにテストといえど様々なテストがありますよね。現場が違うとテストも観点も全然違うんですか?

Yさん:全っ然違うね〜。私はいろんな案件のテストをやったからか、何を目的としているのか案件ごとにガラッと変わるし。
だから、必ず「設計者が何をやりたいのか」って考えてテストをしてるかな。

Kさん:確かに。私も以前関わっていた現場と今とでは全く違いますもん!
前のところでは当たり前だったことが、今の現場では当たり前じゃないなんてざらにありますからね〜。おかげさま(?)で毎日勉強になります(笑)

 ーなんだか大変そうですね〜。

Yさん:でも、すごくやりがいはあるよ!大手企業って言うのもあって、勉強会なんかもあるしサポートが手厚いから安心して働けるね。

Kさん:私も、毎日新しいことの連続でとても良い刺激になってます。やりがいはすごくありますね!

 

ーめちゃくちゃ頼もしいですね(笑)

じゃあ、そんなお二人に次の質問です!

この業界に入ったきっかけを教えて!

ーお二人が、この業界に入ったきっかけを教えてください!

 

Yさん:Σおおぅ!なかなかド直球!!
この業界に入ったきっかけかぁ…、そうだなぁ。スマホのアプリを触ってた時に、「これってどうやって作られてるんだろう?」って疑問を感じたのがきっかけかなぁ。あと、「電波ってどんな仕組みなんだろう」とか。

気になって、調べ始めたら「へぇ〜、おもしろい!!」ってなって…。そこからハマり出して今に至る感じ(笑)

Kさん:私は前職でお客様から「Javaってなに?」と訊ねられたことがきっかけですかね(笑)

ものすごい頻繁に聞かれてたんですよ、それが!

最初はそんなに疑問を感じなかったんですけど、聞かれ過ぎて私も「Javaって何だろう?」って気になり始めて…それからJavaについて調べるようになりましたね。それがこの業界に入ったきっかけです。

 ーなるほど〜。お二人に共通しているのは「疑問に思ったことがシステムと関係していた」って言うのがきっかけのきっかけになったんですね。

 

Yさん:そうだね〜。
「面白そう!」って思ったからっていうのが一番かな!

一同:(笑い)

さいごに、これからどうなりたいですか?

ー最後の質問になりますが、今後エンジニアとしてどう成長していきたいですか?

Kさん:う〜ん、そうですね…。今は行った先行った先で、「こうしてください」「ああしてください」って言われるのを「私がやります」とか「こうしたら良いのにな」とかって言う知識を身に付けたいですね!

知識が身に付けば自己判断ができるようになりますし、そうなるともっと自分自身の幅が広がりますしね。

 

Yさん:難しい質問だね〜(笑)

うーん、私はリーダーを目指して頑張りたい、かな!

今は指示を受けて業務に携わっているけど、どんどん経験を積んで「この観点で良いのかな?」とか色んなところに気付いて動けるようになれれば品質が上がるし、何よりもっと仕事が楽しくなるよね。

ーなるほど、今の現状に満足せずにもっと上を目指したい!ってことですね。
二人とも向上心の塊!私も負けてられないです(笑)

まとめ

いかがでしたか?

今回は現役エンジニアのお二人にお話を聞くことができました!

実は食事をしながら座談会という形を取ったので、さっきまでふざけていたのにいきなり真面目な質問を投げるというちょっとこっぱずかしい感じになってしまいました。

 

Yさん、Kさん。今回はお忙しい中時間を作ってくださってありがとうございました!
次回はスムーズに進行できるよう練習しておくので、またゆっくりお話しましょうねー!!