前回「もし新人プログラマが「プリンシプル・オブ・プログラミング」を読んだら」の記事を書かせて頂いたあの開発です。プログラマ界隈では「1年に1言語」とは言いますが、かくいう私も一念発起して新しい言語を学ぼうと思った次第でございます。学ぶだけではペースも落ちますし、やる気の上下も大きいと考えました。そこで、”学んだ内容を記事にする”というタスクを自分に課すことで学習効率を無理やり持ち上げようと画策致しました。そんなわけで今回は、「新人プログラマがどのように未収得の言語を学習するか」について津々浦々と文字列を列挙したいと思います。TypeScriptTypeScriptとは、マイクロソフトによって開発/メンテナンスされているオープンソースのプログラミング言語である。概要TypeScriptは、一言で言ってしまえば「静的型付けJavaScript」だと私はとらえています。JavaScript)」というものがあり、TypeScriptもそのうちの1つです。altJSのプログラムはコンパイルすることでJSコードを生成することができ、別の言語のプログラミングを通じてJavaScriptを記述することができます。TypeScriptでは、従来のJavaScriptに対して”string”や"number"などの型(Type)を明示的に定義し、型を守るようにプログラミングすることができます。それでは型を導入することで何が良いのかについてまずは語っていきたいと思います。JavaScriptとの違いJavaScriptは動的な型付け言語として知られており、TypeScriptは静的な型付け言語です。JavaScriptではプログラミング段階では変数や関数などの型が明示的に指定されておらず、実装が容易です。JavaScriptは実行前の事前コンパイルがないため、実行してから意図しない挙動を示すことがままあると思っています。これはC言語などの強い静的型付き言語ではコンパイルの段階でエラーがでることから比較的防ぐことが容易な内容が多いです。一方のTypeScriptでは、前述のとおり明示的な型の指定が可能であり、コードを記述した段階で型の不一致などのエラーを検知することができます。これにより実行前にある程度のバグを解消でき、本筋の開発に集中できます。詳細ここではTypeScriptについて少々細かく説明したいと思います。基本の文法はJavaScriptと同様です。TypeScript独自の文法としては、型の宣言があげられます。ここではTypeScriptの型システム、型宣言や型推論について見ていきましょう。型宣言まずは型の宣言から見てみましょう。Typeの形式で型を定義することができます。関数については引数も型指定ができるため、コーディングの段階で誤った変数を渡してしまうことを防げます。}};また、TypeScriptではクラス、public,private,protectedなどのアクセス修飾子やインターフェースもサポートされています。これによりC++やJavaのようなクラスベースのプログラミングをすることが可能となっています。}}型推論TypeScriptの特徴の一つに、型推論があげられます。これは右辺値を基準にその変数がどの型なのかを機械的に判別してくれるため、律儀に型を書く必要がありません。必要最低限の記述で静的型付きの恩恵を受けることができます。以下に実際にどのような様子でエラーが出るのかを示します。TS型推論この型推論のおかげで、必要最低限の変数の型定義、関数の型をしっかりと定義しておけば残りは言語側で良しなにやってくれます。実際にやってみたここまでTypeScriptについて説明してきました。言語の基本を覚えたら、実際に何か書いてみましょう。いうものは書いて覚えるといった側面もあります。何はともあれ書いてみましょうとりあえず何か書いてみるのも大事かなと思います。頭より先に手を動かす的な。DE)」をTypeScriptで実装したいと思います。言われる領域で活躍する最適化アルゴリズムの一種です。最適化アルゴリズムとは、対象問題の評価値を最小(もしくは最大)にするように変数繰り返し計算し最適化する計算手法です。最適化アルゴリズムの実社会での応用例としては、新幹線N750系のフロント形状の設計などが有名でしょうか。最適化アルゴリズムについて語りだしたらきりがないので、今回は割愛させていただきます。機会があれば記事になる可能性が微粒子レベルで存在するかもしれません。アルゴリズムとしては非常にシンプルですが、クラスの概念であったり、整数値、小数値であったりと何気に純正JSでの実装は手間がかかったりします。これをTypeScriptでどれだけサクッとできるかを検証したいと思います。実際に実装したソースコードが以下になります。上記ソースコードを実行してみた結果を見てみましょう。リポジトリにある「test.html」から実際に上記コードを動かしてみます。test.thml「test.html」で表示された画面で、パラメータを入力します。ParameterSettingそれぞれの入力が完了したら、「optimization」ボタンを押しましょう。実行結果がParameterSettingの隣に表示されます。・Result2結果としては、各世代の最適解をテーブルにして出力しています。これを見ると、最初の方の世代では最適化が進んでいるものの、終盤の方の世代では停滞していることが分かりますね。今回の目的はある程度の最適化ができることなので良しとしましょう。実際にTypeScriptでDEを実装してみましたが、型があることでプログラマが意識すべきことが減ったような気がしてコードは書きやすいなと感じました。型推論が便利で、良い具合に保管してくれるため無駄に書くこともなくなります。推論の結果型が合わない場合などはしっかりとエラーを出してくれるため、コードの修正が容易です。この点が純粋なJSだと、実際に実行してみるまで自分のミスに気づくことが難しかったりするので恩恵を受けている部分ですね。筆者はソースコードをVSCodeで書いていましたが、Intellisenseもなかなかに精度が良く書きやすかったのも評価ポイントです。上記結果から、TypeScriptはJSに比べ書きやすい言語であり、そこそこの規模のソースを作るのに最適であると感じることができました。普段静的型付き言語を触っているなら比較的慣れも早いと思うので、興味のある方は是非さわってみてください。今回の例題で「TypeScriptのコードを書く際になぜDEを選んだのか」と言われると、ぶっちゃけ書いたことあるアルゴリズムだからというだけです。よい複雑さで、ある程度構造的に処理しないと面倒であり、別言語での書いた実績のあるものだからというのが選定理由ですね。普段は静的型付き言語しか触らない筆者としては、JSの何でもあり感には若干の抵抗があるわけです。今回のソースコードでも、箇所によって扱っている変数や関数の型を変えており、ある程度意識して管理しないと成り立たないものになっています。この辺がTSだと、コーディング途中やコンパイル時にエラーとなって知らせてくれるのでただのミスを大幅に低減することができます。おわりに今回はエンジニアとして自己を高めることを目的として、TypeScriptについて学びました。結果として、TypeScript初級編くらいの知識は付けれたと思います。今回はほぼ純正のTypeScriptのみで実装を行いましたが、今後はライブラリも活用してもう少し規模の大きいプログラムも組みたいなと感じました。1年に1言語を目的として、来年も何かしらの言語を習得したいと思います。おまけ:言語の勉強をどうやるか今回の記事作成に当たり、自分なりにどうやって未収得の言語を学べばいいかを考えました。備忘録もかねてまとめておきたいと思います。自己流なのでそのあたりはご了承ください。言語仕様の把握まずは何といっても仕様を把握することが先決です。公式のドキュメントやはてなブログ、Qiitaなど分かりやすく解説している記事を探し、とりあえず読み漁りましょう。評価の高い書籍を読むことも非常に効果的です。この段階をクリアすると以下のような気分になるでしょう。仕様を把握したら、次は文法です。ここからは実際に手を動かして言語に触れましょう。経験を積むことが何より重要です。人生において、大抵のことは慣れが解決してくれると個人的には考えているので、言語に慣れましょう。作る作る作る...プログラミングを進めていると、以下のような気分になるでしょう。「なにもわからない...」アウトプットするある程度まとまったプログラムを書くことができるようになったら、アウトプットしましょう。学習はインプットとアウトプットのバランスが重要です。これまでインプットを続けてきたので、ここからはアウトプットの時間です。これまで学習してきた内容、作った成果物を世に公開するのです。媒体は何でも構いません。Git、ブログ、会社や大学の発表会etc...とにかく誰かに見てもらってレビューを受けることが重要です。外部に公開することを意識することで自分としてもある程度きれいに、体系的にまとめようという意識を持つこともできます。その結果、言語についてある程度話すことができるようになるでしょう。いまこここのまま学習(インプット)と公開(アウトプット)を続けていくと、最終的に以下のような気持ちになるでしょう。プロダクト開発チームの開発者ブログです。クラウドECプラットフォーム「メルカート」、ビジュアルマーケティングツール「visumo」などを開発しています。技術勉強会#2~』(2020年1月15日)C#でフロントWebアプリが動く、Blazorを試してみた【TypeScript】TS初心者の、TS初心者による、TS初心者のためのTS入門LT(ライトニングトーク)、始めてみたんですよ。(1)はてなブログをはじめよう!ecbeingさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。