非開発者のためのエンジニアリング超入門

fiber-optic-2749588

#0 対象者

何らかのWebサービスを自社開発している事業会社に所属するプロジェクトマネジャーやプロモーション担当者が独学すること想定しています。

#1 避けるべき技術

開発者であれば修得する意義が大きくとも、非開発者が最初に手を出すには恩恵が少ない技術要素があります。名前だけあげると、例えば次のようなものです。

  • Docker
  • AWS/VPS
  • Git

いずれも開発者にとっては欠かせないツールとなっているため、日ごろ目にすることもあるかもしれません。実をいうと筆者が所属する会社でも非エンジニア向けにもDockerが活用されています。ですが、独学する場合はこれらのツールに手を出すことはいったん避けましょう。

#2 仕事に役立つ技術

エンジニアリングと聞くと、まず最初にはJavaやRubyといったいわゆるプログラミング言語が思いつくかもしれません。しかしそれよりもまず優先して習得しておきたい技術が2つあります。それはスプレッドシートの関数とSQLです。この2つはあなたの仕事の価値をダイレクトに向上させてくれるでしょう。

#2-1 スプレッドシートの関数ではじめる自動化

まず、仕事で役立つナンバー1といえばスプレッドシートの関数を使いこなせるようになることでしょう。当たり前すぎて意外かもしれませんが「入力はこのデータで、これをあの関数に通すとこう出力される」という基礎的なプログラミングの感覚も身につくのでバカにできません。何より使うまでのハードルが低く、得られる効果(時間削減や正確性)も見えやすいので技術による自動化の力を体験できます。継続的な学習には最初の成功体験が大事です。

逆に欠点としては、複雑な使い方には向かないことです。このため、スプレッドシートの大規模な利用は避けるべきです。スプレッドシートを使う効果がそれを維持するコストを上回っていることを意識して、便利な範囲で使うことを心がけるようにしましょう。

 

プログラミングで大切なのは「便利にしたい」 というモチベーションです。そういう意味でうってつけなのがGoogle Apps Scriptです。ぜひ試してみて下さい。

https://qiita.com/katsuhisa__/items/9338b6b17d3f22f97fb1

 

#2-2 SQLでデータを味方につける

サービスの改善を考えるのも、プロモーション手段を考えるのも、何事もデータをもとに試行を繰り返すことが求められます。これはユーザーの満足度を測るために客観的なデータが必要だからです。そのデータを扱うにはSQLが欠かせません。SQLは「問い合わせ言語」とも呼ばれ、データ探索を効率的に行うために開発され、長らく業界標準として採用され続けています。SumoLogicやSplunkといったデータ可視化を行ってくれるサービスのDSL(そのサービス専用の問い合わせ言語)もSQLを元に考案されることがほとんどです。こういったことから、SQLは一度覚えてしまえば長らく活用できることでしょう。

#3 理解を深める

サービスをよりよく理解するために、エンジニアリングを学びましょう。ここでいよいよ、プログラミング言語の出番です。プログラミング学習の最初の課題は環境構築です。環境構築は多くの初心者を悩ませる問題なので、参考となる方針を紹介します。

#3-1 環境構築の簡単さで選ぶ

「とりあえずプログラミングをやってみたい」という人に最初に立ちはだかる壁が環境構築であることはすでに述べました。そこで、Jupyterノートブックという環境を使ってPythonを触ってみることをおすすめします。

あなたの端末のOSがWindowsでもMacでも、Jupyterはインストールが簡単に行えます。これはJupyterのインストールに使うAnacondaが開発者というよりは研究者向けに提供されているためです。研究者の仕事は開発者と少し性格が違い、データサイエンスで結果を出すことが主目的なので簡単に環境構築できることは大切なのです。

#3-2 サーバーとクライアント両方で動くJavaScript

「JavaScriptは普段使っているブラウザで実行することができる」と聞いたことがあるかもしれません。それは正しい理解です。ですので、JavaScriptの環境構築が簡単(つまり普段のブラウザさえ入っていればいい)というのは本当です。しかし、ブラウザでのコンソールで 1+1 を計算させても alert(“Hello world”) と打ち込んでも、きっと普段関わっているサービスとの関連はいまいち見えてこないと思います。

そこで、ドットインストールというプログラミング学習サイトの次の2つの動画をおすすめします。

  • jQuery入門 (20) — ブラウザでwebを閲覧するときはほとんどの場合HTMLでレンダリングされていると考えてよいでしょう。JavaScriptはそのHTMLを操作することができます。簡単に派手な演習ができることをjQueryを通して学んでみましょう。
  • Express入門 (21) — JavaScriptはブラウザだけでなくJavaやRubyといった他の言語と同様に、サーバーでも動かすことができます。ウェブページのフォームからHTTPリクエストを受け取るとはどういうことなのかといったことを理解してみましょう。

これらの実習をやるレベルになると、「避けるべき技術」として紹介した AWS/VPS にも手をだす必要がでてきます。やはりサーバー向けのプログラムを書くのであれば実際のサーバーを用意したほうが理解が進みますし、なによりインターネットからアクセスできるサービスを公開したときの言いようのない興奮が味わえるからです。しかし、そうなるとやはりUNIXコマンドは学習しないといけない…という具合に学習範囲は広がり難易度が増していきます。それだからこそ、やりたいことを明確にしてツールは必要になってから身につけましょう。

#3-3 Webとは何か

さて、一度サーバーで動かすアプリケーションなんかを作ってみれば様々な技術要素の理解が進みます。実際に手を動かして得た知見は何にも代えがたい価値があります。しかし、そのあとに体系的な知識をもとに各技術要素がなぜ必要だったのかということを整理してみることも強くおすすめします。書籍としてはWebを支える技術』(目次)をおすすめします。たとえ自分の会社が作っているサービスがiOSやAndroidのアプリで提供されていても、その裏側にはほとんどの場合こういったWeb技術が使われています。それはSQLの項でふれたようにビジネスにおいてデータを蓄積することは欠かせず、そのために最もよく普及している通信手段がWeb技術だからです。

以上!