ariyasacca

カテゴリ一覧

Biz | SF | Software | tDiary | Web | ゲーム | サバティカル | スポーツ | ミステリ | メタル | 健康 | 投資 | 携帯 | 時事ネタ | 死生観 | 資格 | 雑記
2004|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|05|06|07|

2015-05-01 (金) [長年日記]

[雑記]IT業界でこれまで学んで来たことの振り返りとこれから学びたいこと

GWは毎年Googleスプレッドシートに保存している職務経歴書を更新する時期としています。

今年もちょいちょい書き足して、「あぁ自分もIT業界で10年泥のように働いたなぁ」という気分になったので、これまで学んで来たことと、これから学びたいと今考えていることを書いてみます。

自分の立ち位置としては、SIerでExcelシートのお守りをしている人よりは、プログラミングにも真面目に取り組んでいる自負はあります。が、休日も時間を割いてどんどん学んで行く姿勢の人に対しては、どうにも追い付けない自覚もあります。子育てしながら学習意欲も落とさない人とか本当に凄い。僕は、自分が楽をできるためにつまみ食いで学んで行ければ良いかなというスタンスです。

学びたいと考える対象の基準は、前に読んだWEB+DB PRESS総集編に書いてあった「スジの良いシステム」ですね。学習に投資した時間が無駄になるのは年を取るほどにキツイ。つくづく感じる。

2004-04~2007-06

もう時効だと思うから隠す必要も無さそうだけど、某私鉄グループの、システム開発会社に新卒で入社しました。テンプレ通り3年で辞めてしまった。

こないだ2015年ってはてなブックマーク10周年ということを知って、この頃に誕生したんだっけとびっくりした。

自分がはてなアカウント作って使い始めたのは2011年からなんだけど、なんだかんだ言ってROM専としては長く影響を受けていたんだと感じる。会社のPCでWebフィルタリングで一切はてなドメインが見られなくなったことも辞めるきっかけの一つだったのではないか。

この時期はブログとかソーシャルブックマークが盛り上がり始めた頃で、Windowsプラットフォームを対象にしたスタンドアロンシステムと、Webシステムと、どちらかをやるチームに配属になる人が多かった。どちらかというと自分はWebシステム寄りで色々学ぶ機会があった。

  • Java
    • 最初に研修で使ったのがJavaだった。まだJDK 1.4 + Struts + JSPみたいなアーキテクチャだった。
    • 何だかんだで最初にJavaでしっかりとオブジェクト指向プログラミングについて学べたことは良かった。Javaは現在でもバックエンドでは選ばれることが多いし、投資して損をしないプログラミング言語の一つだと思う。
      • きっとまともな企業ならJava 8が使えるんだろう。Optionalは冗長だしラムダもクロージャじゃなかったり、かゆい所に手が届いてない気はするけど、使えるだけで全然良い。
      • Android StudioになってもビルドプラットフォームがJDK 1.7で、全てのAPIが使える訳じゃない、みたいな特定のつらい環境もあるけど、学んでおけば飯が食えるという意味では本当に幅広い。
      • 某大手SIer F社とかH社のオレオレフレームワークの相手をするのが本当につらかった。二度と近付きたくない。
    • 2015年になっても「このArrayListの拡張for文はfor文で書き直しましょう」みたいなコードレビューを真顔で入れて来る現場もあるので、Javaを学ぶにしても良い環境か悪い環境かというのは、現場によりけりなんだと思う。
  • C
    • なんとCでCGIを実装しているシステムを作ったことがあった。
      • ネットワーク越しに飛んでくる電文(電文とは~)をCで解析してHTML出力するという。Cで文字列処理つらい。
    • Makefileについても少々の知識はついたけど、Cに関してはすっかり苦手意識が付いてしまった。
  • VB
    • スタンドアロンシステムがVisual Basic 6.0のSP何とかかんとかだった。
    • 投資した時間がほぼ無駄になったと思えるプログラミング言語の一つ。
    • .NETプラットフォームになって構文もパワーアップしたけど、まともな人だったらC#を選択する。
  • VBScript(ASP)
    • Windows Serverプラットフォーム(ASP + IIS + SQL Server)では一般的なプログラミング言語だった。
    • VBに比べると意外と軽快に記述できて、スクリプト言語の魅力を知った。良い経験だったのかも知れない。
  • PHP
    • PHP 4.x + MySQL 3.xみたいな黎明期だった。
    • クライアントPCではPeggyエディタ、サーバでは先輩の影響でEmacsを使っていた。
    • 「サニタイズ言うなキャンペーン」でPHPが盛大にDISられていて、セキュリティに関心を持つ機会となった。IPAのセキュリティ試験にも合格できて、良い機会だった。
    • PHP自体はバージョン5.3を最後にお付き合いが無いのだけれど、言語仕様がRFCになってからは、PythonやScalaならどから積極的に構文を取り込んで、かなり良い感じになってるように見える。PSRのような規約もあって、2015年現在は学ぶのには良い状況では? と思ってる。
      • ジェネレータやトレイトの概念が、果たしてデザイナ寄りの人に分かるんだろうかというのは疑問だけれど……。
  • モバイル系
    • この頃のモバイル系というと、現在のようなタッチスクリーンではなく、ガラパゴスケータイの全盛期である。
    • ez-HTMLとかiモードHTMLとか謎のオレオレマークアップ言語を使わなければいけなかった。
    • GPSを使った位置測位が徐々に盛り上がりを見せていた時期で、保守的なドコモのプラットフォームでは、まだ基地局測位が一般的だった。

振り返ってみると色々と良い経験をさせてもらっていたのですが、当時の社長が「これからはオフショアだ! プログラミングなんて非生産的な活動は日本でやらず、SEとして顧客提案と設計に力を入れるべきだ!」みたいなことを言い始めたため、見切りを付けて辞めました。

退職エントリが今でも残ってるのすごい!

2007-07~2008-03

自分なりに「勤務先が名古屋市内で、プログラミングという行為にそれなりに重きを置いていそう」と感じた会社に転職しました。

前の会社よりも格段にハッカーらしい人が多くなり、転職当初は相当に刺激を受けました。まぁこの会社で居た時期がそんなに長くなかったんですが。

最初はこれまでの業務経験を活かしてみたいなノリで、PHP系の何をやりながら、新しいことを学んでいました。

  • Vim
    • 完全に当時の先輩に騙される形でVimを使い始めた。「ここでは全員がVimを使う」とかそんな感じで唆されて、Emacsを捨てた。Vim 6.3くらいだったと思う。
    • 「Vimという操作体系」を受け入れたことは自分の中で凄く良い投資になったと感じていて、XcodeやEclispeを使わざるを得ない場面でも、Vimの引き出しを上手く組み合わせることで格段に効率良くコードを書けるようになった。
    • まぁEmacsの操作体系もOS Xでは標準的に多くのアプリケーションで使えたりするし、Vimとは優劣などは無いと思うけど、重要なことは 広く普及した操作体系の知識は一度学ぶと絶対に無駄とならない という点だ。Emacs/Vimの操作体系は、どんなプラットフォームでも大体サポートされている。
  • Subversion
    • 前職ではCVS/RCSを使いましょうよって言ってみても、誰も反応してくれない状況だった(いわゆるファイルサーバに日付フォルダ的なアレだった)。
    • 新しい職場では当たり前にSubversionへ成果をチェックインする習慣になっていて、自分なりに追い掛けながら知識を身に付けて行った。
    • 2年くらいするとそれなりに使いこなせるようになっていて、Subversionの開発サイクルなども把握できていた。
    • 2015年の今にSubversionへ投資する積極的な理由は見当たらないが、日本のIT企業がGitへ全面移行するにはまだまだ時間が必要だろうし、そこそこ飯の種になるかも知れない。若者が無理して学ぶ意義は無さそう。

2008-04~

転職した先が、結構でかい企業に吸収合併されることになってしまい、社会人5年目にして3社目の名刺になりました。

とにかく大きい企業なので沢山のプロジェクトが生まれては消え、並行して走る仕事もザラでした。

一時期は人の入れ替わりが多い点にかなりの閉塞感を覚えて保守の仕事について思うことを書いてみたら、かなりの反響を得ました。それなりに裁量があってRedmineやらReview BoardやらQUnitやら、好き勝手に導入できて面白さもあったのですが、引き継いだ後で全く使ってもらえなくて、これまた悲しみを感じていました。

スキルセットとしてはフロントエンド寄りになりました。

  • JavaScipt
    • 2015年現在の物凄い勢いで変化していってるJavaSciptよりは少し穏やかだった、いわゆるAjaxやjQuery普及期のJavaSciptを使っていた。
    • こんなモテ言語になるとは予想もしていなかった。
    • prototype.jsがjQueryに駆逐されてしまう様をリアルタイムに見ていた。
    • Greasemonkeyが自分で必要とする範囲内で書けるようになったことも良かった。
  • C#
    • Silverlightという、もう終わりかけているプラットフォームで開発する機会があった。
    • C# 3.0だったが、C#というプログラミング言語から学べるものは明らかに多かった。C#自体も進歩しているし、機会さえあれば、また手を出してみたい。
  • Objective-C
    • Androidを少し触った後で、メインにiOSアプリを開発するようになった。
    • Objective-Cは最初に見た印象は「何だこのクソ構文は! 読めん!」というものだった。
    • 総じて、今では学んで本当に良かったと思っていて、書き手にmutableとimmutableを強烈に意識させるコアクラスの設計が特に良かった。
      • これC#やJavaでも深く学んでいる人は当たり前に意識しているのだけど、恥ずかしながら自分はObjective-Cを使うまでちゃんと向き合って居なかったと気付けた。
  • Git/GitHub
    • GitとGitHubとは正確には違うのだけど、敢えて同列に並べたい。
    • 分散バージョン管理Git/Mercurial/Bazaar徹底比較という記事に残されているように、かつてはSubversionに変わる新しい世代のバージョン管理システムとして、Git、Mercurial、Bazaarが比較検討された時代があった。
    • 僕はこの中でMercurialが気に入った。操作体系がSubversionに似ていてシンプルだと感じたからだ。しかし現実にはGit/GitHubが圧倒的に流行った。それはもう圧倒的だった。
    • 自分の中でGit/GitHubの流行は強烈な体験として残っていて、とにかく流行・普及して勝ち残ったものが正しいこともあるんだと実感した。ちなみにbzrコマンドは人生で10回も打ってない気がする……。

これから学んで行きたいこと

ただの振り返り日記だった筈がどんどん長くなっているので、これから学んで行きたい「スジの良いシステム」を手短に検討してみたい。

  • JavaScipt
    • 今やJavaSciptはウェブ業界の必修科目になった。好き嫌い関係なく、学ばねばならない。
    • 流れが早過ぎてどういうものが3年先に残るのか見当も付かない。AngularJSやReact.jsとは別で、jQueryもデザイナーを中心に一定以上の支持を残しそうに思える。
    • 多分、ES6のような標準や、標準と互換性のあるTypeScriptのようなものを学ぶのが無駄にならないんだと思う。DartやCoffeeScriptはもう忘れた方が良い。
    • サーバサイドをやる人ならNodeも有力な選択肢となるだろう。自分もそちらに関わる機会があれば学んで行きたい。
  • iOS + Swift
    • Objective-Cからは多くのことを学ばせてもらったが、Swiftもバージョン1.2から良い具合に成熟しつつあるように見える。徐々にシフトして行きたい。
    • XCTestのような領域から徐々にSwiftに、というアプローチが良さそうに見えてるので、実践して行きたい。
  • Android + Java
    • そろそろAndroid 2.3.xやEclipseを捨てても良さそうだし、再度チャレンジしたい。
    • 世界的に見てもシェアは圧倒的なので、投資した時間が無駄になる可能性は極めて低い。
  • C# + Windows Phone
    • C#は誰が見ても素晴らしいプログラミング言語である。
    • しかしC#で飯を食うには、Windowsプラットフォームを生業とする事業を起こすか、そいうった会社にジョインする必要がある。
    • C#で飯を食っていても、ひどい現場である可能性も否定できない(この辺はJavaと似ている)。
  • クロスプラットフォーム(モバイル)
    • 自分の中で「投資しない」と決めているのがこれ。
    • 多分それぞれのプラットフォームをネイティブで学んだ方が無駄にならないです。UIコンポーネントの概念からして違うのに、1つにまとめようというのが最初から無理な話。
    • 唯一、マイクロソフトが本気出して環境を整備して、かつそれが十分に普及した時だけが、投資しても良い時期です。アドビとかあの辺が頑張ってるものは気にしない方が良い。人生はモバイルOSクロスプラットフォーム開発の夢を見るには余りにも短い。
  • Ansible/Chef
    • サーバインフラ側の知識はあまり無くて苦手な領域なのだけど、やっぱりチャレンジして行きたい。
    • RubyよりはPythonの方が好きなので、多分Ansibleをやると思う。
  • Go/Rust/Nim
    • CやC++に対して絶望的に苦手意識があるため、システムレベル寄りのプログラミング言語を何か一つ学びたい。
    • メモリ管理の考え方がObjective-C/Swiftに近そうなRustや、Pythonシンタックスに近いNimが自分に合ってそうではある。
    • しかしGoは明らかに流行っているので、Gitが勝ち残ったことを考えても、Goに投資する方が正しい気がしてる。
  • 英語
    • スピーキング、ヒアリングは現状できてなくて別に問題無いのだけど、読み書きはさすがにできた方が良いという危機感がある。
    • メールやGitHubで毎回翻訳サービスにかけた内容をコピペしてコミュニケーションしてるの悲し過ぎる。
      • でもこれやってると「これこそが脳の拡張だ! インターネットだ!」という正常性バイアスの考えが脳の中でドバドバ沸いてきてやばい。

ひとまず2015年に注力したいのはJava(Android)、Swift、Ansibleで、様子見でJavaScript、英語は誰か何とかしてくれという感じです。


最近のツッコミ

  1. ともお (2024-05-29(水)20:59)「真上からの恐怖🫨」
  2. いちごみるく (2024-05-29(水)20:59)「🩸」
  3. レモン (2024-05-29(水)20:59)「レモン」

参号館  の中の  日記(ariyasacca)

トップ «前の日記(2015-04-26 (日)) 最新 次の日記(2015-05-04 (月))» 編集