LIFE PEPPERでのエンジニアリングで実感したこと from LIFE PEPPER日報

片岡 了一 Ryoichi Kataoka

今回はいわゆるエンジニア的なことを書く。
——————————————————————————————————-
本日は先日に引き続き新しい言語(Golang)の習得に着手し、今回のアプリケーションでどのように組み込めるかを念頭に作業を行なった。

僕が LIFE PEPPERにジョインしてから何をやってきたかと言うと90%の作業は全て学習と調べ物であり、10%が実装(目に見えるとこの開発)である。

通常新しい言語を学ぶ場合は1ヶ月くらいはがっつりその学習に当てて、習得していくのだが、その時間は残念ながら無くので、インプットしたらすぐにアプリケーションに実装し動作を確認してモック(試作品)に実装と言う流れでやってきた。

この期間で理解・体感した知見が以下である。

1. 文法は速攻終わらせ(二日程度)て、簡単なアプリケーションから実装を始め、目標とする本番のアプリケーションの理解を点を潰すこと
2.言語を2つ以上学ぶことによって、新しい言語も初見で理解できるところがあり、習得が早くなる。
3. 難易度が高いのはライブラリの使用、組み込み方法、またはネットワークやセキュリティであり、フロント(アプリケーションの画面)の実装は比較的理解しやすい。
4. 優れたOSS(Open Source Software)を参考にすることで本番実装に近い感覚を得ることができる。

以上に関して、エンジニアとして歴は浅く、どの程度精度が高いかはすぐには推し量れないが、少なくともこれから入ってくるであろう後進のエンジニアも同様の経験をする可能性が考えられるので、今のうちに記載しておく。
——————————————————————————————————-
まず、”1″に関してはSwiftと言うiOSアプリケーションを開発する言語をやりだして気付いたことである。
前職でもほとんど未経験で現場に放り投げられてから自分でどうにかしてきたこともあり、この時のやり方を踏襲したに過ぎないのだが、今回で言語化できるに至った。

プログラミング言語に置いて、文法と言うのは、英語やフランス語のSVCやSVOみたいなものと考えて欲しい。
自然言語(英語とかフランス語などの人間が発する言葉)の方がはるかに複雑なので、基本的なルールを守れば誰でも一定の機能を作ることはできる。

しかし、文法だけ習得しても「画像を表示させる」や「動画を再生する」などの機能は実装できないので、このルールに基づいてライブラリ(お助けツール)を駆使して作る必要がある。言葉が文法覚えても話さないと話せるようにならない原理と同質だ。

この速度を早めることでより本格的なアプリケーションに必要な機能が見えてくると言うことである。
——————————————————————————————————-
次に”2″についてだ。
言語というのはプログラミング言語のことだが、現在までに数多くの言語が開発されてきた。

しかし、実際の開発に用いる言語は実はそれほど多くない。
例えば、前職の現場では僕は”Python”という言語を使っていた。
この言語はデータ分析や数理計算に適した言語のため、僕は主に機械学習/ディープrーニング/AIを開発するために使用していた。Pythonだけで論文からアルゴリズムを実装することができるのである。

また副業で始めた開発では”React Native”というFacebook社が開発した言語でiOS/Androidアプリケーションを開発している。Pythonはモバイルアプリケーションを開発するには適していないため、少ない工数で開発できる言語として選択した。

このように言語によって得意、不得意があり、実現できることも異なる。
ただ、実現できることが違うとはいえ、基本的な概念は共通することはあるため、自分は今回の開発および現在新しく学んでいる言語で「お、これわかるぞ」と体感した。
——————————————————————————————————-
“3”は”1″、”2″を経た上でこれは同様には行かないと実感したために記載した。
開発において、ライブラリは非常に強力でそれも公式のもの、サードパーティ(OSS)で公開しているものと非常に種類が多い。

これらは強力で便利な分、やはり言語が万能で内容に、それぞれにデメリットもある。AのライブラリではUIがデフォルトで綺麗に設計できるがカスタマイズ性が乏しい。Bのライブラリはその逆、のような感じだ。

ネットワークやセキュリティは非常に深い知識を求められる。
ネットワークをとってもHTTP通信のメソッド(GET/POST)やサーバーサイド・クライアントサイドAPIの構築方法、エラー表示等がある。
セキュリティに関しても、アプリケーションのキャッシュの扱い、ユーザー情報の管理、暗号化処理等々と非常に幅広い知識が求められる。

これは世に出てるアプリケーション全てが抱える課題でもあり、自分たちもこれを解決していかなくてはいけない。目に見える機能だけがアプリケーションではないのである。
——————————————————————————————————-
最後の”4″はこうした状況において、全て自分が創出することは不可能なため、世にある優秀なエンジニアの知見をお借りする形でOSSを使い、本番実装を体感する必要に関して述べた。

優秀なエンジニアがどうしてこのライブラリを用いて、このアプリケーションを実装したのかが現在はネット上にはたくさんあるため、このお手本を使わない手はない。
“3”の際に述べたように、完璧なアプリケーションもこの世には残念ながら存在しないので、あくまで知恵を借りて自分の開発に適応していくという目的で行う必要がある。

僕が全くの初心者であった際は、お手本がバイブルのように見えて、これをどうやって自分の実装に落とし込むか全く検討がつかなかったのだが、嬉しいことに現在はむしろ積極的にこれを行うことができている。
——————————————————————————————————-
以上がこの1ヶ月で僕がLIFE PEPPERでのエンジニアリングで実感したことである。
もし、解りにくかい場合、めちゃくちゃ丁寧に教えられる自身はあるのでいつでも声をかけてください。```

この記事が気に入ったら
いいね!しよう

最新情報をお届けします