投稿日:
更新日:

これまで触れてきたプログラミング言語についての所感と今後の抱負など

技術・テクノロジー

最近はもっぱら TypeScript / JavaScript ばかり書いていますが、今後はもう少し別の言語もしっかり書けるようになりたい・・・かも、と思うようになってきました。

そこで良い機会なので、振り返りも兼ねて自分がこれまで触ってきたプログラミング言語についての所感をまとめてみようと思います。

HTML/CSS

HTML がプログラミング言語かどうかは意見が分かれるところ ですが、あえて語ります。

自分は高校生時代、当時の何かしらのブログサービス等でサイトを作って、そこでちょっとページの装飾を CSS を使って行う、くらいの経験しかありませんでした。しかも、それも本当に文字の色を変えるとかその程度で、断じて「CSS 完全に理解した」とすら、到底言えないレベル感ではありました。

で、大学に入る前は漠然と Web サイトが作れるようになりたいと思っていた(ような気がする)ので、大学入学前の春のころに HTML/CSS の本を買って写経したのですが、正直「全然わからん!書けるようになるイメージが全く沸かない!」と思ったのをよく覚えています。

大学に入った後は課外活動で多少コーディングをするようになるのですが、その時も課外活動のメンバーの先輩が「HTML くらいなら本とか読まなくても Web 上の情報だけでいける」的なニュアンスのことを言っていた記憶があります。当時としては Progate とかも無かったので自分は「はぁ〜!?んなわけねぇだろ」と内心思っていたのですが、確かに一般的なプログラミング言語に比べるとコードの品質を無視すれば動くものを書けるようになるまでのハードルは低いかな、とは思います。

実際のところ、HTML/CSS はかなり奥が深く、ただ動くだけではないコーディングをしようとすると経験が長い人でもかなり難しいものだと思います。特に自分はフロントエンドをメインに活動しているので、これからも積極的にこのへんの技術はキャッチアップしていきたいなぁという所感です。

C / Java

大学の授業で触ったくらいで、正直ほぼ覚えていないです。今後触ることもあんまりなさそう。

課外活動で、他のすでにプログラミングの経験がある同級生のメンバーが C 言語について解説する会がありました。その際にスライドを用いながら「コメントはこのように書きます」とか言ってて、当時の自分はプログラム内のコメントが何かすら分からなかったので、経験者がプログラミングを初学者に教えるときは本当に基本的なところから説明しないとなぁ、とこの記事を書きながら改めて思いました。

PHP / Ruby

大学の最初の方では、PHP をよく書いていました。

ただ、フレームワークに乗ってちょっと使うくらいで、PHP の言語の深いところまでは学べなかったなぁというのが正直なところです。当時は CakePHP を触っていました。

その後、PHP から Ruby を触るようになるのですが、なんかすごい書きやすくてめちゃくちゃ感動したのを覚えています。Ruby はおそらく学生時代に最も書いた言語ですが、残念ながら今ではあまり書かなくなってしまいました。なので、最新の記法とかもあんまり分かっていません。

Ruby も、言語そのものというよりは Rails で使うことが多かったです。が、Ruby でちょっとした効率化のためのスクリプトを書くこともありました。当時は結構手に馴染んでいた記憶がありますが、より詳細な言語機能とかはあんまり・・・という感じでした。ただ、Ruby の短い記述で多くのことができる感じなどは当時かなり感動していて、好きでしたねぇ・・・。

Python / Elixir

学生時代は Python も少し触っていました。特に 2 系とかは若干記法が Ruby っぽく感じることもあり、個人的には馴染みやすかった記憶があります。しかし実際はプログラミングの触りの構文しか分かっていなかったかなと思います。ただ一応思い返してみると、Python でちょっとしたスクリプトを書くバイトを短期間ですがやったこともあり、一応お金をもらえるくらいにはなっていた記憶があります。あと社会人になってからも、一応少しは使いました。地味に学生時代の経験が生きてよかったです。

それと、当時は少し Elixir が流行っていて、その影響でちょっと入門したこともありました。そこで初めてパイプライン演算子を知って、めちゃくちゃ感動したのを覚えています。なんか友達に良さを力説していました。あとパターンマッチとかも知れて良かったです。

CoffeeScript / JavaScript

当時は Rails をよく使っていたこともあり、確か素の JS を書くより先に CoffeeScript を書いていたような気がします。ただ、当時は本当に何もわからないなぁと思いながら jQuery とかを書いていた記憶があり、できれば JS とかは避けていきたいなぁ・・・と考えていた時代もあった気がします。なぜそう思っていたかは正直あんまり覚えていないのですが、多分単純に経験不足でした。

当時は React が流行りだした時期でもあり、そのあたりからは普通に生の JS を書いていました。Flow とか TS も流行りだしていたので興味はあったのですが、なんか難しそうだなぁ・・・と思って手を付けてはいませんでした。

なんだかんだ、書籍では JavaScript に関するものを一番読んでいる気がします。逆にそれだけ 情報源が多い とも言えます。今ではベースの知識を元に Web 上の記事などで補完していっていますが、当時は何か書籍を読まずに学習するのはちょっと難しかったんじゃないかな?と思います。今では Web 上の教材も豊富になってきましたし、逆に最新の技術を追おうとすると書籍だと遅いこともあるなと感じるようになってきました。

JS は歴史的経緯から変な挙動が残っていたりして嫌われることも多いですが、慣れてしまえばそれまでという気もするので、個人的には割と好きな言語です。

TypeScript

社会人になってから、年々書く比率が JS と比べて上がってきている言語です。今ではありがたいことにフロントエンドの現場ではほぼ TS ばかり書いています。

ただ、最初は元々自分が動的言語ばかり使ってきたということもあり、書くのに苦労したのをよく覚えています。TS を書くのであれば、JS の知識が前提になってくることが多いので、個人的には分けて学ぶのがいいんじゃないかな・・・と思ったりしています。TypeScript の型情報が直接的にランタイムに影響を与えないことを意識すると、キャッチアップが早くなるかもしれません。

今では割と TS を書いてきた歴が長くなってきましたが、まだまだ型パズルに習熟していなかったり、言語仕様を生かしきった設計ができるかと言われるとそうでもないかもなぁと思っていたりはするので、継続的に学んでいきたい言語ですね。

Dart / Solidity

そういえば、社会人になってから趣味で Flutter でアプリ開発をしたことがあって、そのとき少し Dart に触れました。JS/TS の経験があれば、そこまで困ることなくちょっとしたことならできるようになるかなぁという感じで、割と良い印象だった気がします。今後、もしまたアプリ開発をすることがあれば、また触ることになるかもしれません。

同じく社会人になってから、スマートコントラクトを扱うために Solidity の入門をしました。といっても、ちょっと CryptoZombies をやって、軽くコントラクトを書いたくらいですが。記法は少し JS/TS に似ていて馴染みやすかったですが、コントラクトなのでコードを書く際は不具合を混入したらかなりまずいことになるという危機感があり、ちょっと書けるようになったレベルで実運用するコントラクトの記述はとてもじゃないけどできないなぁと思いました。

これから学びたいプログラミング言語

正直なところ必要に迫られないとなかなか学ぶことができない弱い自分なのですが、今後はやっぱり Rust を学んでいきたいなぁ・・・と思っています。昨今のフロントエンドのツールでは Rust が使われているものが数多くありますし、言語自体もかなり人気で魅力的なんだろうなぁと思わされます。

直近では Rust、さらに長期的には、余裕があれば関数型の言語を学びたいな、と思っています。具体的には Haskell とかですかね?Haskell は一度学ぶと他の言語を書くときとかにも良い影響がある、という話をよく聞く印象があるので、ぜひ学びたいところです。

所感

自分はプログラミング言語の便利な言語仕様そのものに惹かれる特性があって、可能であればできる限りそれを生かしてコーディングをしたい、と考えているような気がします。ただ、そもそものプログラミングのお作法や、設計の経験が不足しているところからまだまだ実際の現場では最適解を見つけられないところがあります。そのためプログラミング言語自体もそうですが、今後はその周辺技術の理解も深めていきたいですね。


余談ですが、プログラミング学習の挫折を防ぐには? - Yusuke Ando a.k.a yando という記事によると、MBTI 診断テストの結果とプログラミング学習の能力には相関があるようです。MBTI 診断は、過信は禁物ですが個人的にはなんとなく興味深いテストだなぁと思っており、わりと好きだったりします。

で、その結果によると、自分はどうやらプログラミングの適正があるようです。正直、これは意外でした。特に学生時代は、自分にプログラミングの適正があるなぁ・・・と思ったことは一度もなく、特にインターネット上の人とか周りとかを見て、みんなすごいなぁとよく思っていました。

ただ、今になって少し思うのは、自分の異常なまでに細部にこだわるような特性が、特にコードレビューをする時には役に立っているのかな?と思ったりはします。

とはいえ、EQ が低いほどプログラミングの能力が高いかも?とか(自分は少し当てはまっている気がする・・・)素直に喜べない部分もあり😅、まぁ比較的向いていることなのであれば、この調子で頑張って継続していればあんまり成果が出ない、ということにはならないかなぁ・・・と楽観的に考えて今後も学習を続けていければなぁという所感です。