社会に出て3年間でやってたこと

社会に出て3年間でやってたこと

題名の通りなんですが、まとめてみます。Twitterとかで個人的に勉強したことは出してても、 業務のために勉強した事とか出してなかったので、まとめておこうと思います。

ただし、実際に何作ったかとかは結構パブリックな感じでは出せないものがあるので技術とか個人的な勉強とかだけにしとこうと思います。

お仕事で使ったもの(順不同)

  • React.js(2年くらい?)

    • WebGIS絡みのプロジェクトで利用

    • Fluxの類は入れなかったので苦労する面もあった

      • バケツリレーはやっぱり誰でも悩むんだなぁとか

      • ただ、色々合って入れなくてよかったなと思う面もあるので一長一短

  • TypeScript(2年強)

    • React.jsかVue.jsと組わせて使ってた

    • 個人的にはかなり好き

      • C#っぽい書きっぷりとか、型の柔軟性とか

      • 事前にF#とか関数型勉強してた事もあって型については結構調べてても楽しかったです。

  • Vue.js(半年弱くらい)

    • React.jsのあとに使いました。結構好きです。

    • Angularも短期間ですがやってましたが、ReactとAngularの間くらいの感じで結構好きです

      • 用意されている機能もちょうどいい塩梅だと感じてます

      • FluxなしのReactほどカオスにならず、Angularほど大掛かりでも無い印象

  • Angular(一週間くらい)

    • めちゃくちゃ突発で、直前に言われて2日で勉強してくるみたいな無理をしたやつです

    • 結構大掛かりな感じなフレームワークだなという印象

      • 双方向バインディング人類には早くない?とか

  • C#(2.5年くらい?)

    • DLLの作成からASP.NET MVCでのWebアプリ作成まで色々使いました

      • CLI使って結構頑張るとC++と連携とか色々出来て楽しいです

    • 言語としてはかなりいい出来だと思ってます。LINQがかなり良いです

  • Java(合計すると半年くらい?)

    • 主にWebアプリで利用

    • PlayFrameworkとかSpringFrameworkとセットで使ってます

    • C#のあとに触れたので色々違和感が・・・

  • C++(これも合計で半年くらい?)

    • デスクトップアプリ作るのに使ってました

    • dll、libとかかなり複雑でした。libに二種類あるとか最初はめっちゃ混乱

    • ガッツリオブジェクト指向で作られているプロジェクトでデザインパターンを積極的に入れていることを売りにしているプロジェクトだったので、

      OOPに関しての知見とか知識は勉強させてもらいました

  • Ruby(1年弱)

    • Railsと一緒に使ってました

    • PHPから移行したプロジェクトで結構苦労しました

    • 動的型付け + OOPはちゃんと作らないとカオスだと言うことを学んでしまった・・・

  • Python(1年くらい)

    • 正確に言うと社会に出てからの物ではないです

    • 大学院の研究でアルゴリズムの検証とか実験に使ってました

    • 言語としてはかなり好きな方です。押し付けてくるシンタックスとか仕様が割りと好きです

    • あとは社内のお遊びプロジェクトで画像を集めるのに使ったりとか

    • 1,2を争うぐらい好きな言語。プログラミングの楽しさを教えてくれた言語です

  • その他(めっちゃ短期間だけ触ったもの。細かい説明は割愛)

    • PHP

    • Go

    • C

個人的な勉強

  • Clojure(勉強開始からだと半年ちょい?)

    • 最初はLISP系言語敬遠してたんですが、全く違う物勉強したくなって触りました

    • Pythonと同じくらい好きです

      • 好きな理由が上手く言えない。なんとなく言語の思想を押し付けてくるところだとは思ってますが

        • Simple Made Easyだとか、連想配列の分配束縛とか辺りにそういうの感じてるのかなぁとか思います

        • シンプルさの必要性 とかは結構読み返しました

      • シンタックスレベルで思想を押し付けてくるのはPythonとも若干共通している気がしなくもないです。Clojureのほうが柔軟だとは思いますが

    • 作ったものは過去のブログ参照ってことで

  • Elixir

    • これ自体は出たばっかりの頃にインストールだけしてみたりしてたものです。多分学生時代です

    • 社会に出てちょっとしてセミナーとかで見かけたのでちょっと真面目にやってみるかって思ってやってみた感じです

      • Programming ElixirとProgramming Phoenixとか読んでました

      • Programming Phoenixについて過去のブログ参照です

    • アクターモデルとかについては勉強になりました。並行処理とか余りちゃんと勉強してなかったんですが勉強になります

    • シンタックスがRuby風味なのは今となっては正直余り好きではないです

    • https://bitbucket.org/y_fujiwara/elixir-tutorial/src/default/

    • https://bitbucket.org/y_fujiwara/programming-phoenix/src/master/

    • https://gitlab.com/y-fujiwara/gemini

      • Phoenix、TS、React、Fluxでチャット作ろうとしてガワだけ作って止まっちゃってるやつ

      • 結局チャット自体はClojureの方で満足してしまっている・・・

  • その他(チュートリアル程度だったり、本一冊読んだ程度だったり)

    • F#

      • プログラミングの基礎がOCamlで書いてあったのでF#でもイケるっしょって思ってやってました

      • 言語自体は結構好きでしたが、何故か余り深入りしませんでした

      • 実践 F# 関数型プログラミング入門とかも取り寄せして読んだりしてました。再販してほしい

      • https://bitbucket.org/y_fujiwara/metro-network/src/master/

    • Rust

- 完全にチュートリアルしかやってません - C++の経験だけ合ったので比較対象としてはかなり有意義でした - 所有権とか余り意識してなかったのでそこら辺は勉強になりました - Elm - これもチュートリアルだけです - 正直難しかったです。Haskellあまり習得もしてないので尚更

その他読んでよかった本とか

  • プログラミン言語の基礎概念

  • カイゼンジャーニー

  • なぜオブジェクト指向で作るのか

  • プロになるためのWeb技術入門

  • シングルページWebアプリケーション

  • JavaScript: the Good Parts

    • 上の二冊はクライアント側実装するときに勉強した本。個人的にはバイブル

  • etc...

まとめ

個人的な好き嫌いで言うと Clojure = Python > TypeScript > C# > Ruby > Java って感じですかね。

まとめてみると色々触ってるなぁと思います。なんかWebクライアントサイド結構やっているように思われがちな気がしてます。 向き不向きは置いておいて、正直いうと余りクライアント側好みではないです。

今と言うか今後しばらくClojureやっていると思います。最近色々考えなきゃなぁと思うこともあるのでうごいていこうかなとか。 なんか3年も立つと1年目のときには考えもしなかったこと考えてしまうなと感慨深い今日このごろです。