「Ruby」を含む日記 RSS

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

2020-06-03

最近Windowsが気に食わない

なんかLinux寄りになっててなんだそりゃ?みたいな感じ

そら、cygwinとか仮想マシン使うよりは楽かもしんないが、なんかそこまでは・・・って気になる。

dockerネイティブに使えて、pythonrubyも変なパッケージインストールしなくてOKってのは嬉しいが、なんか面白くないんだよなぁ。

EdgeBlinkベースになるし、何いい感じに収まってんだよみたいな。

GitHub買って、npm買って悪かねぇんだけど、なんだかなぁ

つーか、早くslideshareログインMicrosoftアカウントOKしろよ。

2020-05-31

プログラミングを独学して、労働組合2.0としてのwebサイト作ってみた

https://www.whitedoor.jp/

自己紹介

今年の1月からプログラミング勉強を始めた無職


動機

https://www.whitedoor.jp/about

ここの動機の部分へ書いたので細かくは書かないが、友人が労働問題自殺して、なんとか違法労働をなくせないかなあと思い、労働組合の代わりになるようなwebサイトを作ってなんとかできないかと思った。

自身ブラック企業で以前働いていて困ったのもある。


目的

この国から違法労働を無くすこと。

このwebサイトコミュニティとして活発になり、人が増えれば、それだけで一つの力になる。

例えば同じ会社で仲間を見つければ上層部交渉することも出来るだろう。職業組合を作ることも出来るはずだ。

今度弁護士既存労働組合とも提携し、訴訟や、ストライキを行う機能なども実装したい。


計画

こうしようと思うのは簡単だったが、いざ始めて見ると学ばなければいけないことが多すぎて呆然とした。そもそも何を学ばなければいけないのかを学ばなければいけなかった。

HTMLCSSSQLJavascriptGitGithub、HerokuRubyRails、Cloud9、VScode、npm、Linux、Terminal、Vim、その他諸々・・・

とりあえずググって記事を読み漁って、プログラミングの学び方から調べた。


言語

Python流行ってるらしいのでPythonを学び、Djangoでやろうかなとおもったが、RubyRailsは使われていた時間が長く、日本語での情報が多いらしかったので、Railsで行うことにした。

途中でVueとFirebaseでやろうかなと浮気もしてみたが、日本語情報が少なく結局Railsに戻った。

Railsではわからないことは調べれば大抵のことは日本語情報があったので、いい選択だったと思う。

今後はVueちゃんと学び、今Jqueryで行っている部分を置き換えたい。


勉強で使ったもの

progate

https://prog-8.com/

非常にわかやすかった。環境設定を行う必要もなく、視覚的に説明してくれるので初歩の理解に非常に役に立った。

ドットインストール

https://dotinstall.com/

progateよりは難しかったが、動画説明してあるし、わからないことはググればそれなりにわかった。

また、progateよりも教材が圧倒的に豊富なので、HTMLCSS,Javascript理解を深めるのにも役立った。Cloud9やSQLドットインストールのおかげで理解できた。

Railsチュートリアル

https://railstutorial.jp/

これをやればとりあえず仕事できるレベルにはなるらしいと聞いてやった。

progateとドットインストールに比べればかなり難しく挫折しかけたが、それらでは学ぶことができなかったプログラミングの基礎の話や、Webサービスを作る上で知っておかなければならないことが書いてありとても役に立った。

あとはとにかくググりまくった。

YouTubeも見た。


デザイン


https://getbootstrap.jp/

Bootstrapに頼りまくった。これもドットインストールのおかげで理解できた。

ロゴイラストレーター作ってみた。楽しかった。

Navbarは本来こういう形で使うのではないのだと思うが、TwiterやInstagramのようなアプリのような使い心地にしてみたくてこのような形にしてみた。いいデザインになったと思う。

あとマテリアルデザインというのが流行ってると聞いて、見様見真似でやってみた。どうですか?


セキュリティ

調べれば調べるほど完璧に行うことは難しいとわかったので、もうユーザーメールアドレスを保存することを止めた。今後技術に自信がついたら実装したい。


完成

とにかくエラーが起きまくって、それがなんでなのかわからないことも多々あって、何度も挫折しかかった。

とりあえずわかることをやって、わからないことは放置してたら、他の部分の理解が進んだことで理解できるようになったりした。

デザインなどもっと気になる部分はあるが、今の自分技術ではどうしようもない部分もあり、とりあえず今の時点でもっとここをこうすればいいとか教えていただけるとありがたいと思い、公開した。

https://twitter.com/takatetomoki

Twitterを貼っておくので、ぜひ教えていただきたい。

あとノートを貼っておくのでサポートから投げ銭をもらえると、サーバー代など助かります

https://note.com/takatetomoki/n/nddb8123abc7a

ぜひ会社登録し、評価投稿し、掲示板を使って、Whidedoorを利用してください。

感想

これで僕がめんどくさいやつだなと思われて就職できなくなったら困るなと思ったが、少しでもこの国の労働環境改善、並びにこの国に貢献できれば嬉しい。

使用した技術など

開発環境 Cloud9 VScode

データベース MYSQL

言語 RubyJavascript

フレームワーク Rails

PaaS Heroku

できたもの

https://www.whitedoor.jp/

2020-05-30

仕様書プログラミング

※これを書いているのはまだプロプログラマーですらない奴だということにご留意ください

私は情報系の学生だが、プログラミングに最近疲れてきた。なんか最近楽しくない。Ruby書いてもC書いてもJava書いてもだ。BefungeやLazy Kも楽しめないしGrassに至っては言語解説を読むだけで疲れてくるほど。HTMLもそろそろ面倒になってきたし全部Pugに一本化したいなとか思ってる。要するに、熱が冷めてきたのかもしれない。で、これから就職するわけだが、就職先ではあまりプログラミングしたくないと思っている。もちろんエンジニア的職になると思うのだが、コーディングやりたくないのだ。めんどい修正ならともかくフルスクラッチとかマジで嫌だ。

から、これからプログラムは全部仕様書を書いてAIに渡して自動生成して欲しいと思っている。なんで仕様書かというと、どうせ仕様書は書かないといけないからだ。製品になるものなら当たり前だ。どうせ書かなければいけないなら、そちらだけ書いて、そこからプログラムを自動生成して欲しい。もちろん、自然言語で書くのでは曖昧な部分もあると思うから仕様書用の言語で書いてプログラム・日本語英語解説自動生成して欲しい。多分できなくはないだろう。DeepLとか最近あるし。

まあ、思い通りの挙動をするプログラムができるかわからいかもしれないが、そういうときは多少の手直しをすればいい。きっとフルスクラッチよりは楽だろう。そのためには、生成するコードが読みやすくなっていなければいけないわけだが、まあこちらは普通にできるだろう。

もちろんコーディング楽しいから自分で書きたい奴もいるかもしれない。そういう奴はこの方法を嫌がるかもしれないが、仕事に楽しさって必要ないよね。楽ならそれでいいじゃない。楽しいのは趣味でやればいいんだよ、ってことで。

最近疲れてるのかもしれない。こんな変なことを考えるなんてどうかしているのだろうか。もしかすると夢物語かもしれない。どうでもいいけど物語シリーズ好きです。おわ🍎

2020-05-29

anond:20200529001926

Javaから入って、rubyPythonもやったな。特定言語フレームワークに特化してる訳じゃないけど、その分幅広く知ってるから使い勝手はいいと自分で思う。

業種で言えば、金融医療以外は大体のところは経験した。

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未来を見通せる人材になっていただければと思います

2020-05-26

プログラミング初心者C言語から入門するのはオススメしない、と思っていた

一般論で考えて、それは100%正しい。機械制御のためにプログラミングを学ぶとか、計算機科学が専攻なのでなければ、もっと抽象度が高く、ライブラリ豊富言語を選んだ方が、手早く目的を達成できる。

しかし、現実は違う。多くのプログラミング初心者は、プログラミングで何がしたいのか、それに必要技術要素などが思い浮かんでいるわけではなく、大抵の場合、どの言語でやっても変わらないようなことをすることになる。

そして、これはもっと本質的問題なんだが、ぶっちゃけプログラミングの出来不出来は、言語の差よりも個人の差に圧倒的に大きく左右される。つまり、出来るやつはCから始めようが出来るし、出来ない奴はRubyPythonから始めようが出来ない。これが現実

2020-05-25

12歳の妹に「お兄ちゃんプログラミング言語どれからやればいい?」

って聞かれたんだけどおすすめ教えてくれ

とりあえず知ったかぶってrubyjavaをすすめといた

2020-05-24

anond:20200524141054

その点CrystalならRuby文法で実行速度もCと遜色ないしええよ

なぜぼくはScalaとCrystalを間違えてしまったのか

anond:20200524140458

言語的には最近はだいぶマシになったよ

2010年以降は徹底的に合議されるようになったので、首をひねるような仕様は入らなくなった

まあ古い仕様で変なところはちょこちょこ残ってるけど…(互換性のために…)

あとRubyPythonよりは二回り早くなった

anond:20200524135923

初期の学習効果が高いから。

Ruby子供だましのプログラムがすぐ作れるようになるけど、

Pythonは、まともなプログラムが組めるまでにたくさん学ぶ必要がある。

なんでプログラミングスクール情報商材屋はRubyを教えたがるの?

Pythonのほうが今後の需要もありそうじゃん

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

今、知り合いのつてでテレビ局制作下請け業務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コードの書かれたエディターと格闘していられたらいいのに。

2020-05-23

anond:20200521175300

どもども。

「なにか作ってみろ」は有効アドバイス

わたし意見と経歴

わたしは「なにか作ってみろ」系の言説にはまったく同意しません。

わたし自身会社に3ヶ月間みっちり導入教育をしてもらい(COBOL85とPL/I時代がわかる……)、基本的アルゴリズムコントロールブレークマッチング、マスタ-トランザクションソートマージetc.いよいよ時代がわかる……)の演習を(給料をもらいながら)やって、その後もプログラムとつかず離れずでフラフラと生きてきました。

こういう経験新卒カードがあるから有効もので、では1から始めるとしたら……、というときに、プログラミングスクール専門学校)というのは悪くない選択肢ではないかと思います。が、行ったことないので正直わかりません。

実際自分が1から始めるという立場になったら、まったくオロオロして元増田さんのように世のなか(の気にいらないヤツら)に呪詛を吐いて満足するだけだったと思います(当然ながらそれをいくらやってもプログラミングは上達しません)。

「なにか作ってみる」前に動機をはっきりさせる

話をプログラミングだけに限っていえば、一番大事なのはやりかたじゃなくて動機だろうと思います

「なにか作ってみよう」というのは、なにか作ってみようと思ってない人にはまったく心に響かないでしょう。

動機リブンで「なにか作ってみた」人といえば思いだすのは、MikuMikuDance樋口優さん(ミクを簡単に踊らせたい!)とhinadanの若宮正子さん(高齢者にも遊べるゲームが欲しい!)でしょうか。

ただかれらはわたしから見れば(モチベーションを維持しそれを行動に移す)天才で、あんまり参考にならないのも確かです。

作ってみた」は就職に使える経験

あと、元増田さんの動機は「プログラミング生業にしたい」ということなので、野良プログラマでは履歴書上でのアピール力が弱いかも、と思います

ビジネスで使われるアルゴリズムにはそれなりのルールがあります安全な(バグの出にくい)コードの書きかた、「車輪の再発明」はぜず、枯れた(将棋で言えば定跡のような)アルゴリズムを使う、ほかの人に使ってもらえるための工夫(可読性の向上など)、etc.です。

「なにか作ってみよう」を繰りかえしても、そういった作法的なものが身につくかどうか、それは才能に関わってくる問題だと思います。才能だのみの手法を推奨するのは無責任だと思いますね。

また、たとえば「例をコピーして解析する」というのもある意味有効プログラミング学習法ですが、「下手に習うと下手が伝染る」ともいいます。どれがお手本として優れているか、それを見る目はある程度ビジネス用途プログラムに関わっていないと持てないというジレンマがあります

野生のプログラマ就職有効なくらいの力を見せるとしたら、なにかのコミッター(なにする人かよく知りませんが)とかになって「××ならこの人」となったり、プログラミングコンテストで上位の成績を残したりしなければいけないのかもしれません。

どうしたものでしょうね。ブクマカのみなさんの反応を見ると、専門学校でもあまり就職に有利にならない(ホントか?専門学校意味あるのか?)という話ですが、目的就職ならば、一番の近道のような気がします。

じゃあどうすべきか?は他人にはわからない

そこらへんからは、元増田さんがなにをしたいか、あるいは聞いてみたいだけだったのかによります仕事には適性とやる気が大事です。あとは年齢と必要性かな。進路はオーダーメイド以外にはありえないので、提示された案を自分で選んでそれに賭けるしかないのかな、と思います

「なにか作ってみました」の記録

自分がまず作ったもの晒してみろよ

さて、この文章は実はこの一文に反応してのものです。(↑のは前書き)

GWあたりからトシも考えずにRubyの再入門をしていまして、手始めに「首相動静」の整形ツールを作ってみました。

初心者で(Rubyに関しては仕事で使ったことないので)なにか作ってみよう、というとこの程度ですね。

これで就職に有利になるかというと、あんまりそうは思えないなあ。Excelマクロが組めるとかのほうがどこかの事務所に潜りこめそうですよ(でもそれも最近インフレ気味かもしれませんね)。

なにをするツール

朝日新聞首相動静は詳細ですが、改行が入っておらず、大変読みにくいものです。こんな感じです。

首相動静の例(2018年12月11日……話題になったものです)

 【午前】9時31分、自民党本部。33分、同党役員会。10時2分、官邸。5分、閣議。21分、宇宙開発戦略本部。34分、柴山昌彦文部科学相。38分、岩屋毅防衛相。41分、山下貴司法相。11時3分安全保障と防衛力に関する懇談会

 【午後】0時11分、政府与党連絡会議。44分、山口那津男公明党代表。1時27分、日韓議員連盟額賀福志郎会長河村建夫幹事長。2時20分、行政改革推進会議。52分、兼原信官房副長官補、秋葉剛男外務事務次官。3時36分、麻生太郎財務相財務省岡本薫明事務次官太田主計局長。4時7分、太田氏出る。可部生理局長加わる。15分、全員出る。25分、黒川弘務法務事務次官。34分、谷内正太郎国家安全保障局長、北村内閣情報官宮川内閣衛星情報センター所長。41分、谷内、宮川両氏出る。5時3分北村氏出る。10分、東京永田町ザ・キャピトルホテル東急宴会場「鳳凰」で中曽根康弘世界平和研究所設立30周年記念式典に出席し、あいさつ。20分、官邸。6時18分、ガーナのアクフォアド大統領を出迎え。記念撮影。19分、儀仗(ぎじょう)隊による栄誉礼、儀仗。27分、アクフォアド大統領会談。7時12分、署名式、共同記者発表。32分、公邸首相主催の夕食会。8時43分、アクフォアド大統領見送り。9時、ヨルダンのアブドラ国王電話協議

首相動静フォーマット

ただ、これはフォーマットがはっきりしており、

  • 午前と午後はそれぞれ1行になっていて、行頭には【午前】/【午後】という文字列が付いている。
  • 午前と午後の間には空行がある。
  • ひとつひとつイベント時刻表示で始まり句点「。」で終わっている。
  • 時刻は「h時m分」型で、前ゼロはつかない。後にかならず読点「、」が付く。「h時」の部分が前の項目と同じ場合には省略する。
  • 午前いっぱい、午後いっぱいの予定の場合には時刻をつけない(他の首相動静から)。

と、例を見るかぎりキッチリとしたルールに則っているようです。

動機

なので、「これだったら整形できるかも」と思い、再び学びはじめたRubyで整形ツールを作ってみることにしました。

整形ツール
ツール仕様
整形後の例(上記動静を整形)

【午前】

09時31分、自民党本部

09時33分、同党役員会。

10時02分、官邸

10時05分、閣議

10時21分、宇宙開発戦略本部

10時34分、柴山昌彦文部科学相

10時38分、岩屋毅防衛相

10時41分、山下貴司法相

11時03分安全保障と防衛力に関する懇談会

【午後】

00時11分、政府与党連絡会議

00時44分、山口那津男公明党代表

01時27分、日韓議員連盟額賀福志郎会長河村建夫幹事長

02時20分、行政改革推進会議

02時52分、兼原信官房副長官補、秋葉剛男外務事務次官

03時36分、麻生太郎財務相財務省岡本薫明事務次官太田主計局長。

04時07分、太田氏出る。可部生理局長加わる。

04時15分、全員出る。

04時25分、黒川弘務法務事務次官

04時34分、谷内正太郎国家安全保障局長、北村内閣情報官宮川内閣衛星情報センター所長。

04時41分、谷内、宮川両氏出る。

05時03分北村氏出る。

05時10分、東京永田町ザ・キャピトルホテル東急宴会場「鳳凰」で中曽根康弘世界平和研究所設立30周年記念式典に出席し、あいさつ。

05時20分、官邸

06時18分、ガーナのアクフォアド大統領を出迎え。記念撮影

06時19分、儀仗(ぎじょう)隊による栄誉礼、儀仗。

06時27分、アクフォアド大統領会談

07時12分、署名式、共同記者発表。

07時32分、公邸首相主催の夕食会。

08時43分、アクフォアド大統領見送り

09時00分、ヨルダンのアブドラ国王電話協議

う~ん、見やすい!ことないですか?

あと、午後の時刻を24時間制にしたいな、とも思いますが、それは今後の課題(つぎに首相動静話題になったとき)とします。全角数字計算ってどうやるんだろう?

ソース

たぶんRubyistにいろいろ突っこまれると思うけど、こんな感じです。

プログラマ玉石混淆ですが、これは石のほうの例だと思っていただければさいわいです。

はてな記法にはシンタックスハイライトあるけど、増田だとInternal Server Errorになるのではずしました。見にくくてスマソ。

# encoding: utf-8
# 漢字コンバータライブラリを取りこむ(String漢字変換メソッドを付けてくれる。神)
require 'kconv'

# 正規表現パターン
# 時刻をh時m分形式からhh時mm分形式にする
# 否定後読みを使用する
# 時は行頭にある
OneDigitHour = /^((?<![0-1])[0-9]時)/
# 分は時のあとにある。このパターンマッチすると、\1が時、\2が分になる。
OneDigitMinute = /^([0-9]{1,2}時)(?<![1-5])([0-9]分)/
# 分のない、時だけの行のパターン否定先読み使用
HourWithoutMinute = /^([0-9]{1,2}時)(?![0-5]?[0-9]分)/

# 行頭のh時m分をhh時mm分にするサブ処理(これは関数といっていいの?)
def convTopHourMinute2TwoDigits(oneLine)
    # 時を変換
    oneLine.sub!(OneDigitHour, "0\\1")
    # 分を変換
    oneLine.sub!(OneDigitMinute, "\\10\\2")
    # 分がない場合"00分"を追加
    oneLine.sub!(HourWithoutMinute, "\\100分")
    # 戻り値
    oneLine
end

# 入力ファイル名前
InputFilename = "首相動静2018年12月11日.txt"
# 出力ファイル名前
OutputFilename = "首相動静2018年12月11日_編集済.txt"

# 入力ファイルオープン
inFile = File.open(InputFilename, "r")
# 出力ファイルオープン
outFile = File.open(OutputFilename, "w")

# 時刻パターンシンプルに、h時、m分、h時m分、という3パターンを結合する
# 1つのパターンで全部カバーするよりこちらのほうが見やすい。というか、脳の容量の問題で1文に書ききれなかった
jikokuPattern = /[0-9]{1,2}時[0-9]{1,2}分、|[0-9]{1,2}時、|[0-9]{1,2}分、/
# 午前/午後
ampm = /(【午前】|【午後】)/

# 午前/午後、あるいは時刻の前で改行するためのパターン
kaigyouSign = Regexp.union(ampm, jikokuPattern)

# ファイル一括読み込み
# 昔は1行ずつ読みこんでました。メインメモリが3MByteとかだったので
contents = inFile.read.toutf8

# 入力終了。閉じておきます
inFile.close

# スコープ関係から、ここでローカル変数に代入
# ※ Rubyスコープと暗黙の型には泣かされました。これに慣れるのがRubyのコツかしら
#  明示的な型宣言はあったほうがいいと思うなあ。エラー出力の理由がわからなかったりするので。
hour = ""

# デバッグ行はコメント化しています
# 時刻パターンチェックのため、コンテンツを出力してみる
# p jikokuPattern.match(contents)

# エントリを改行サインで行に分ける
contents.gsub!(kaigyouSign, "\n\\&") # "\\&"はマッチした文字列のもの。2重のエスケープ"\\"が必要

# 改行チェックのため出力
# p contents

# 入力を行で分割して各行ごとに処理
contents.split("\n") do |oneLine|
    # 午前/午後を示す開きカッコ"【"があるか
    if (oneLine =~ /^【/) then
        # そのまま出力
        outFile.write(oneLine + "\n")
        # p "午前午後:" + oneLine
        next
    # 空白行は無視スキップする)
    elsif (oneLine =~ /^[\s ]*$/) then
        # 出力しない
        # p " 空白行:<skip>"
        next
    # 行頭に「時」があるか
    elsif (oneLine =~ /^[0-9]{1,2}時/) then
        # あったら時間表示を抜きだしておく
        hour = oneLine.match(/^([0-9]{1,2}時)/)[0]
        # p "   時:" + oneLine
        outFile.write(convTopHourMinute2TwoDigits(oneLine) + "\n")
        next
    else
        # 「時」がなければつけて出力
        oneLine = hour + oneLine
        # p "普通の行:" + oneLine
        outFile.write(convTopHourMinute2TwoDigits(oneLine) + "\n")
    end
end
感想

手でやったほうが早いね

以上

2020-05-22

webエンジニアキャリア相談

盛り上がってるので相談させて。

現職はlinux,nginx,phpフレームワーク,+α。

なし崩し的に数年前にwebエンジニアになった。

技術は嫌いではない、程度の熱量

ただ現職ではこれ以上のスキルアップ昇給が難しそう。

からこの機に上京して転職してやろうと思ってさ。

ただ俺は上にリストアップしたものしか現状できん。

転職検討してんだけどphp案件絞ると地雷臭い企業多い。

webフレームワーク経験あり歓迎の企業

潜り込んでruby on railsでも身につけた方がええのかね。

ただruby斜陽とも聞く。かといってjavaは敷居高そう。

ならpython + django or flaskか?

はたまた○○.js系とか狙い目?

やっぱりphp一本槍は将来的に考えると怖い。

php、とかく馬鹿にされがちだしな。

戦略の取り方が分からんくなってきた。

anond:20200522134813

専門外の他人ニーズを請け負ってコードを書いたりはしないが、自分研究のためなら普通にコード書くよ。

スクールでおなじみのJSとかrubyとかphpとかじゃなくて、pythonとかRとかcとかfortran(さすがにもうないかも)だが。

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言語問答 ポインタ編に出会ったのがこの業界に入るきっかけだったのかもしれない。ほかの言語でいろいろ楽に書けるからカーネルをいじるか、システムコールをたたくかするときくらいしか自分の中では出番がなくなってしまった。

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

新卒研修プログラミングスクールやってるけど

内容的にここで言われるほど、プログラミングスクールカリキュラム講師が悪いとは思えない

あくま20新卒まとめサイト運営とかAtCoderちょっと触ってた程度の初学者視点で見て)

劣化メルカリを作るみたいな、新卒プログラミング研修あるある課題だし

講師総合職と一緒にやった研修会社IT研修ITパスポートくらいの知識)よりはかなりいい気がする

講座の内容についてRuby on RailsなんかはRailsチュートリアルとそこまで大きな差があるとは思えないし

かいミスだったりは他人に見てもらったほうがすぐ直せたりするし、つまづいた部分を質問できるのはいいのでは・・・

問題入社してからほとんどPerlらしいのに、Rubyをやることくらいだと思う(人事の人に聞くとPerlを扱ってる研修会社ほとんど無いらしい)

自腹でやるならudemyとかだろうけど、新卒でこういう研修を受ける機会がなかった人がやる分にはいいと思うし

採用側が入社後に研修やらせ体制が無いから、スクール研修っぽいことやった人を

経験枠で採用するか・・・みたいなパターンはあると思うので、

自分で金払ってやるかはともかく、まあ実際ここまで槍玉に挙がってるのよくわからん・・・という感じがする

(どっちかというとステマ騒動だったり昔からある嫌儲的な方?)

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) の現代版かつより初心者向けなものを書いてみたいと思ってこの記事を書きなぐった次第である。あまり真に受けないよーに。

そういえば5年前プログラミングスクールに行ってた

ツイッター、なんだか一部でプログラミングスクールについて盛り上がってるみたいですね

プログラミング...スクール...?あっ5年前通ってたんだ...」みたいな感じで忘れてた記憶が蘇ったので振り返ってみます

当時高卒上京してきた直後で、「とりあえずなんかプログラム書いてお金もらう感じになりたい」程度のテンションでした

それまでプログラミングしたことないし、いわゆるIT知識も持ってるようでいて持ってないというバックグランドです

そんな中でプログラミングスクール存在を知りました

正直「ここに通えばなんとかなるんじゃないか」くらいの気持ちだったと思います

しか期間は1か月で、割引制度を使って料金は10万円だったかな...(ヒーヒーいいながらなんとか支払った)

5年前の話なのできっと今ではそのスクールシステムもいろいろ変わっていることでしょう

内容は、用意されたHTMLCSSRuby教材の課題をこなしていって、最後Ruby on Railsで簡単Webサービスをつくり、時間が余ったら自分の好きなWebサービスをつくるといったものでした

作業別に家でやってもよいし、スクール物理教室にいけばメンターがいて質問もできます

いよいよスクールが始まりましたが教材の課題をこなすのが難しかった...

きっと一般的にみて特別難しい内容ではないのでしょう、メンターというサポート体制もあります

が、ダメだった...

しかRuby四則演算から先の課題がこなせなかったような...

ほんとに教材に書いてあることが理解できなかった

メンター質問しようにも「分からないことが分からない」みたいな状態で、なかなか前に進みません

最終的に教材の修了度は60%くらいだったかな...

なんとなくHTMLタグの種類が分かったくらいで、プログラミングする上でのメンタルモデル形成されるわけでもなく「あぁ僕にはプログラミングは向いてないんだなあ」という感想を得て1か月が終わりました

一応継続してスクールに通えるプランはあったようでしたが、金銭的に余裕がなく1か月で綺麗そのスクールから離脱しています

スクールに行った前後特に状況変わってないぞどうしよう...という状況で、コンビニバイトしつつ知人にベンチャー企業を紹介してもらって「何かつくったらまたおいで」と言われてさよならされる日々を送っていました(そりゃそうなる...)

数か月後、Unityというゲームエンジン初心者向けハンズオンが開催されることを知ります

もともとVRには興味があり、Unityを使うとVRアプリがつくれる程度の知識はあったので軽い気持ちで参加しました

そのハンズオンが楽しかったので以降Unityにハマっていきます

後日Webの教材で改めて一番基本的操作を覚え、「まだ手を出したことのない機能ひとつ盛り込む」というテーマを持って週にひとつゲームをつくって投稿サイトに上げていました

そんなことをしているうちに、縁があって会社に入ったりニートしたりアプリリリースしたり転職したりしました

結局いまプログラミングスクールでやっていたことがそれほど関係しないポジションでふんわりC#を書いてご飯を食べていて、「プログラミングスクールのおかげでどうのこうの!」というパターンにはならなかった人です

いまも「あぁ僕にはプログラミングは向いてないんだなあ」という気持ちだし、Rubyはなんとなくトラウマで...

職場自分以外のプログラマーがみんな修士卒以上で超こわい、行ったことないから分かりませんがプログラミングスクールよりちゃん大学行ったほうがいいんじゃないのみたいな気持ちです

せっかくお金出して行ったのにまともに血肉にできず、自分のだめさを思い知っただけという意味で人に話してこなかった黒歴史なんですが、いろいろ書き連ねてみました

anond:20200520204737

自分はとんでもないバカからプログラミングスクールに何十万も払わないといけないという自覚があるならやればいい。

でも、その前に技術書買ったり、progate(両方、無料で試せる)をやってみてからにしたら?

技術書30冊くらい読んでたんだけど、体系的な知識ってのが手に入らなくて、progateでrubyrails学んでインタラクティブツイッターライクなアプリ組み立てて

ついでにすべての基礎となるコマンドラインPythonとかGoとかReactや、Node.JS(もうあん必要ないけど)とか、学ばせてもらって、一気にレベル上がっちゃったか

自分としては独学してる人にはぜひともProgateおすすめしたい。

Codecademyほどハイレベルじゃないし、一通り触れたあとに技術書に戻る必要はあるけど、やるとやらないでは全体の理解度全然違うよ。

2020-05-20

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

本当に何も知らない未経験者が現状維持人生を打破するためにできる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パスポートというノリ。

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