アプリケーションプログラマへの道①

Pocket

noImage

 

こんにちは。エンジニアの志賀です。

さぁ記事書くぞ!
とは言っても最初っから変に細かい技術に関して書いてもなぁと思って何書くかずっと悩んでました。

さてさて今回が恐らく初の技術系記事ということもあり、この記事を読んでいるのはどんなレベル感の人かも分かりません。
まぁタイトル的にも恐らく、

「アプリとか作ってみたいけどこれから何を勉強していけばいいんだろう」

的な感じの人が多いかな?

というわけで「アプリケーションプログラマへの道」とかいうタイトルを付けておきながら、今回は何すれば良いか分からず道に迷っている人たちが疑問に思っていそうなことを9割ほどの主観に基づいた偏った意見を言ってみたいと思います。
まぁ内容的に今回は技術にあまり触れないのでコイツこんなこと考えてるんだな程度に思って今後の指針にしてくれればいいかなと思います。

 

また、その上で次回以降は具体的な技術や知識などの話をしていこうかなと思っております。今後は「Webアプリケーションプログラマへの道」と「モバイルアプリケーションプログラマへの道」に分けて進めていこうかと思います。
ネイティブは筆者がWindows機しか持っていないため、Android用アプリケーションがメインになると思います。wp8も今のところコード書いたこと無いので無しで!

というわけで今回の内容はこちら

  1. 結局Windows機?Mac機?
  2. どの言語がいいの?
  3. Webアプリケーションとかモバイルアプリケーションって何が違うのさ(次回)
  4. エンジニアとしての心構え的なSomething(次回)

 

非エンジニアもちょくちょく疑問に思っていそうな内容かと思います。まぁ3番以外は答えとか特に無くて昨今のエンジニアでも派閥争いしてます的な部分だと思うので筆者個人の意見であるということを念頭に置いて読んでください。

1. 結局Windows機?Mac機?

これよくエンジニアじゃない知り合いとかからも聞かれますね。PCにちょっと詳しければみなさんも質問されたことあると思います。そんな時に毎度筆者は思っています。

「やりたいことによるだろ」

と。
と言っても埒が明かないのでエンジニア的な観点から話そうかと思います。まぁそもそもWindows専用機なんてものは存在しないのですが、どこのPCメーカーもWindowsを載っけて販売しているのが現状ですのでWindows機と書いてます。

結論から言わせてもらいますと、「男は黙ってMac機」です。

「男は黙ってOS X」ではありません。OS Xについてわからない人はググりましょう。まぁ簡単に言うとMac機に載ってるOSのことです。

「何が違うの?なんでMac機なの?」

理由1 Windows機で出来る事は基本的にはMac機でできる

Mac機では「Parallels」や「VMware」などを用いることでWindowsも動かすことができてしまいます(あ、もちろんOSを購入しないとですけどね)。よってWindows機でしかできない事というのは基本的に存在しません。

じゃあWindows機上でOS Xは動かせないの?と思うかもしれません。原理上は出来ます。が、しかしライセンス違反ですので金になる仕事をする場合は表立ってそんな事をしたらどうなることやら…

まぁそもそもAppleが売りたいのはOS XではなくてMac機であり、Microsoftが売りたいのはWindowsというOSのみであるという事に基づいてます。
と僕は思っています。

理由2 OS XはUNIXベース

UNIXってなんぞやと思うかもしれませんが、まぁOSの原点だと思ってくれればいいです。
OS XはUNIXベースですが、Windowsはその派生から外れたところに属しています。
じゃあなぜUNIXベースがいいのってなると思います。

これはエンジニア特有なのですが、例えばサーバーを管理するとか他にもいろいろな事情でUNIXベースのOSを扱うことが必然的に多くなるので慣れていたほうが楽という話です。
まぁでもこれからの時代はOSさえクラウド上でマウスポチポチやれば済むのでこの辺はもしかしたら好みかもしれません。
でも慣れておいて損は無いかなぁというのが正直なところです。基幹システムを理解することは重要だと筆者は思うので。

 

追記:じゃあなんで筆者はWindows機?

筆者に関しはアレです.PCをハードとして好んでいるので..あとThinkPad信者なので…みんな同じハードなの嫌いなんですよねw
まぁCygwinというUNIXライクな仮想環境もあるのでWindowsだからといって変に気遣う必要もないと思います。(どっちやねん!w)

2. どの言語がいいの?

まぁこの疑問も正直なところ好みの問題という回答になってしまいます。何を気にするかによって様々な回答があると思いますが、最終的には

「悩んでる暇があったら取り敢えずコードを書け」

コレに尽きると思います。この言語は◯◯に特化しているだのこの言語は××がダメだの色々特徴はありますがプログラムを書けるようになりたいという目的のもとであれば何を書いても同じです。

とりあえずコードを大量に書いてプログラミングに慣れましょう。プログラマーの思考が身につけば言語を変えてもすぐにコーディングできるようになりますので。ただし特殊な言語は別ですよ。アセンブラとか…。C言語などは他の言語からの移行は多少難しいですが、まぁ純粋なCでアプリケーション作ることって滅多にないですし。

というわけで慣れこそ全てだと伝えた上で何がいいのと聞かれるならば

Webアプリケーション作りたい→PHP,Python,Ruby
スマホ→Objective-C or Swift(iOS),Java(Android)

がよいかなと思います。 (個人的にC#を学ぶのがアツいと思ってます理由は後述)
Webアプリケーション側の言語はフレームワーク(分からなければそういう物があると思ってください)の充実した言語を使うのがいいと思います。どれを選んでも外れはないと思いますが、PHPは慣れてから嫌になる率が高いと思います。Pythonなんかはコードが綺麗にかけるので多人数開発に向いているとかなんとか…まぁ正直なところ何でも良いです。名前のカッコよさとかそんなんで最初は決めましょう。

最近Pythonの対話シェルが便利でちょくちょく使ってます。

 

ちなみに

スマホアプリのコード書くなら現状はiOS,Android各1言語のみですが、まぁ最近はクロスプラットフォーム開発が盛んなので色々他のでも書けますよと(文献が大量に無いと書けないという実力のうちは普通にObjective-C,Javaを薦めます)。

スマホアプリでC#と書きましたが、これは最近Xamarinというものが流行っているからです。まぁコーディングになれないうちは文献も多くないのでオススメしませんが、触ってみた感じ個人的にかなり良いかなって思ったしC#がなにより書きやすいので(あとObjective-C書かなくて良くなる)コレもありかなぁって思いました。

ただし会社で使う場合にはライセンス料との兼ね合いですね(笑)

というわけで今回はここまで!次回はこちら!

 

  1. Webアプリケーションとかモバイルアプリケーションって何が違うのさ

  2. エンジニアとしての心構え的なSomething