最近、インフラいじり、プログラミングの両方に有効な自分なりの Tips を発見したので、シェアしておきたい。 ブログは技術イケメンになる最強の武器私にはプログラミングのメンターが3人いる。特にかずきさんには大変お世話になっている。彼と一緒に仕事をしたときにあまりの強烈な技術力に衝撃を受けた。どうやったら彼みたいになれるのか聞いたところ 何かを学んだらブログを書く。そのまま書くのではなく、自分なりにプログラムを書くようにする。それだけ。というお話をいただいて、それ以来私はずっと学んだら誰にも読まれなくても、参考にならなくてもブログを書くようにしている。 何かが違うところが、一定の効果があるものの、これを続けてもとてもかずきさんになれるような気がしない。一体何が違うんだろうと長年考えていた。かずきさんのように強力なスピードでコード書けないし、楽しそうじゃないし、ブログもかずきさんのものに比べて
私はエンジニアをやっているが、長年の悩みの一つに「ハマりやすい」というのがある。1つの問題解決にあーでもない、こーでもない、と試行錯誤した挙句長い時間を使った結果、くっそしょうもないことが原因であるみたいなやつだ。あほな原因であるにしろ、そうでないにしろいつも時間がかかってしまう。何とかしたい。 うまい開発者はハマらない 一方、ソフトウェア開発が上手い人を見ているとおもろいほどハマらない。本人は「ハマったわー」とか言ってるけど1時間だったりする。だから私は、ソフトウェア開発の優れた人の観察をよくする。特に「しばやん」さんは、ご一緒させていただいたときに、あまりにもできるので衝撃的で、アメリカに移った今でも、彼のインパクトを超える人はいのところいない。だから過去にもいろいろ観察してブログを書いてきた。
私 is 誰 今年の7月にドワンゴの教育事業部に異動し、N予備校でプログラミング講師をやることになりました。 現在は週2回ニコ生やN予備校上にてプログラミング入門コースの授業放送をしています。 ドワンゴ自体は7年目となり、ニコニコ動画の開発を4年、エンジニア教育やエンジニア採用を2年ほどやってきました。 この記事で書きたいこと 現部署に異動後、教材のインプットを兼ねて『N予備校プログラミング入門コース』を履修したのですが、明らかに難易度が僕の想像した "入門コース" から外れたガチ編成になっていて衝撃を受けたことが記事を書こうと思ったきっかけです。 中身としてはとても良い教材になっているので、僕のような勿体無い誤解が少しでも減れば幸いです。 入門コースはいわゆる入門コースではない 『プログラミング入門コース』のゴールは ドワンゴがエンジニアとして採用したいレベル や IT企業のエンジニアイ
RedMonkは過去7年間のランキングの推移グラフも出していて、これを見てもTypeScriptの飛躍は目覚ましいものがある。何しろランキング20位以内に初めて登場したのが2017年1月の調査で、それから3年足らずで10位に食い込んだ。 TypeScriptに限らず順位の変動は大きい。2013年以降ではClojure、Go、Swift、TypeScript、Kotlinが新たにトップ20位にランクインした。トップ20入りはしていないけれどRust、Julia、Elixirなどが控えている。逆にCoffeeScriptやGroovyのように、2013年ごろは20位内にランクインして勢いがあったが最近はパッとしない言語もある。 RedMonkの調査結果を見ると、2015年から新しい言語が登場したり順位が入れ替わったりする頻度が激しくなっている。2015年はGoが初めてトップ20位のランキング入
2015年現在、関数型言語が勃興しつつあります。エンタープライズ分野で関数型言語が次世代のプログラミング言語マーケットの覇権を握ることとなるのだとしたら、いつどのように握るのか、それはどの関数型言語なのか、その動向が大いに気になるところです。 ・ 関数型言語の行く末を見定めるにおいて、過去のプログラミング言語興隆の歴史はどうだったのか、エンタープライズにおける主たるプラットフォーム・アーキテクチャーの変遷に絡めつつ振り返ってみます。 今から40〜50年程前のメインフレームの時代、そのメインフレームをターゲットとしたプログラミング言語、COBOLが覇権を握っていました。 時代を下って20数年前程になるとWindowsを始めとするGUIそしてクライアント/サーバー・システム開発用として、次にはC++が覇権を握ることとなります。そしてJavaが登場しました。Javaは当初Microsoft社のW
「プログラマーのスキルはある一定のラインを超えたところで急激に伸びるんです。そのラインは早く超えるには、OSSの開発に参加していろんな人が書いたソースコードをたくさん読むというのは有効な手段の一つだと思います」――こう語るのはLinuxカーネルおよびRubyの現役コミッターである小崎資広氏だ。 小崎氏には前回、LinuxカーネルやRubyの開発に関わった経緯や、コミュニティ活動を円滑にするポイントをうかがった。今回は、これからOSSコミュニティに参加しようと考えている若手エンジニアに向けたアドバイスをお願いしよう。 関連インタビュー 【インタビュー】コミュニケーション力向上に役立ったOSS活動 - Linux/Ruby 小崎資広氏 【インタビュー】言語は思考にも影響を及ぼす、だからRuby開発を選んだ--まつもとゆきひろ氏 【インタビュー】Rubyが大きくなれたのは、私に隙があるからかな
どうもTypeScriptおにいさんです。 こちらはLOB Advent Calendar 2018年の記事です。 前回はmojibakeo氏による TypeScript + React で i18n (国際化/多言語) 対応を楽して続けるためのアレコレ でした。 i18nには多くの苦しみがありますが、ECMAScriptはASTの規格がしっかり決まっているおかげでパースしやすくてよいですね。 そして今回ですが、またフワッとした話をします。 コードをパッケージに切り出して公開するメリット はい。 業務でコードを書いていて「あれ、もしかしてこの処理って汎用性あるんじゃない?」っておもうこと、あるんじゃないかとおもいます。 この記事では、そういう処理はちっさくてもいいからパッケージに切り出して公開しちゃおうぜ! と、そういう感じで推奨しちゃう内容になります。 なお、実際にTypeScriptを
なぜGo言語はコンパクションを採用していないのか GoogleのRick Hudson氏によるISMM 2018 Keynote “Getting To Go”を参照すると、以下のことがわかります。 2014年の時点では”Read barrier free concurrent copying GC”を計画していた しかし期間的な制約から断念し、CMSに舵を切った(この時期に彼らは、ランタイムをCからGoに書き換える作業も行う必要がありました。Changes to the runtime) TCMallocをベースとしたメモリアロケーターを採用することで、断片化およびアロケーションの速度の問題を解決した Go言語のメモリアロケーションについては、ランタイムのコードのコメントにも詳しく記載されています。 malloc.go This was originally based on tcmal
(Last Updated On: 2018年10月12日)入力の種類には3種類以上の種類、名前、電話番号、住所など沢山の種類があります。しかし、見方によってはたった3種類しかありません。この区別ができる/できない、で大きな違いができてしまいます。 入力の種類 セキュリティ対策上、最も重要な区別は以下の区別です。 正しい入力値 入力ミスの入力値 不正な入力値 これらの入力値は”独立”しています。この三種類以外の入力値はありません。従って 全ての入力 = 正しい入力値 + 入力ミスの入力値 + 不正な入力値 になります。 不正な入力値はプログラムにとって、全く意味がなく120%有害なデータです。 意味がなく害しかない不正な入力値は拒否します。不正な入力の拒否はセキュリティ上、重要な意味を持ちます。ソフトウェアは非常に複雑であり、正しい入力だけであっても、正しく処理することは困難です。不正な
プログラミング言語というのは、その作者が理想とする世界に合うようにデザインされているものだから(みんな信じないかもだけど、Javaですらそうなのですよ)、Clojureのことを理解するには、作者であるRich Hickeyのプログラミング観を知るのが手っ取り早いでしょう。 Rich Hickeyはさまざまなプレゼンテーションを発表していて、多くはネットで見られます。示唆に富んで皮肉も効いてておもしろいので、ファンも多くて、彼の独特の髪型(往年のロック歌手風)からか、「Rich Hickey’s Greatest Hits」というブログ記事もあったりします(プレゼンテーション動画へのリンク集です)。 ただ、彼のプレゼンテーションは難解な英語も出てきて、私のようなリスニング苦手人間には音声だけで聴くのは難しいです。そういう人は国外でも多いからか、有志が書きおこし(transcript)を公開し
今日は雨が降っているせいか、ぼーとします・・・仕事がはかどらない。困ったものです。自営業だから納期さえ間に合えば文句を言われません。ただ、自分の性格的にちゃっちゃとしないと気が済まないので気分が悪いです。子供の頃は夏休みの宿題先に全て終わらしていました。でもこの業界では不思議な事に、仕事が早いせいで人月/単価に拘るお客様からの収入が逆に減ります。我ながら損な性格です。それにしても、この業界にしつこく存在する人月/単価はとは不思議な料金体系ですね。能力が低ければ低いほど儲かる。まぁ、完成できないほど能力が低ければ怒られるでしょうけどね(笑)とはいえ、ビジネスパートナーから「仕事が早すぎる」とか「仕事が完璧過ぎる。後で保守料金などが取れない。」と怒られた事が何度もあります。それでも妥協できないのが私なので何時も損しています。まったく理不尽な業界です。偽装会社や奴隷商人がが多い理由が分かるという
私は技術コンサルタントみたいな事もしていますので、よくプログラミングが上達する方法について聞かれます。また、プログラミングが出来ないという悩みを持った人を時々ネット上で見かけますので、今回はプログラミングが上手くなる方法を語ります。 巷ではよく見受けられる誤解はプログラミングという行為が異質なものであるというものです。私はこれを間違いだと考えております。というのも、私のシステム構築屋としてのお仕事は大半が日本語でなされるからです。お客様と日本語で話せば、脳内で自然と実装が出来ます。それはどのような状態なのかといいますと、ネタつつき29ー私の頭の中の小人さんたちを読めば分かると思います。すなわち、私の感覚では自然言語とプログラミング言語の境目が曖昧なのです。より正確に言うと、プログラミング言語は自然言語のサブセットに過ぎないという事です。 そんな私が思うに、プログラミングという行為に対して多
前回は初心者から卒業する方法について書きました。なので今回は中級者(プロ)になる為の方法を教えます♪先に断っておきますが、これはあくまでも私の主観であって、国際標準規格ではないので注意してください。 私は自分を客観的に評価すると平均レベルです。この業界に大体10年ぐらい居ますのでこんなものでしょう。たかだか10年相当の腕ではどの業界でも普通レベルといえるでしょう。私の父はもともと職人でしたのでよくこういっていました。「人は10年その道で生きたら漸くプロとしてのスタートラインに立ったといえる。」と・・・ それで中級者になったらどのような事が出来るのかと申しますと、職種にもよりますがだいたいこんな事が出来ます。初心者の方は驚かれるかもしれませんが、人間は10年真面目にその職業をすれば、誰でもこれぐらいのレベルには達します。まだまだ真のプロとは呼べませんのでかなり不服ですが、これぐらい出来ればま
どうやら私はかなり特異な存在らしく、私が普通だと考えている事でも世間ではありえないという事が多いらしいです。それで私の事を書いたら面白いと思いましたのでこの記事を書きます。 ネタつつき26-システム構築屋のお仕事で書いたとおり私は変ったお仕事をしております。多分そのせいなのでしょうが、私の開発技法も変っているとよく言われ、理解されない事がよくあります。その原因はおそらく私の思考法だと思います。 私はシステム構築屋という仕事柄、頭の中に小人を沢山住まわせて居ます。その小人たちはそれぞれ何らかの専門家です。小人達はそれぞれ、システムエンジニア、ネットワークエンジニア、データベースエンジニア、セキュリティエンジニア、各種言語のプログラマ、プロジェクトリーダー、OS研究家、コンパイラ研究家、発明家、テスト屋です。お客様と会話する(もしくは仕様書を読む)のとほぼ同じスピードで、それぞれの小人さん達は
まえがき 会社の若い子に「情報系出身でもないのに一体どうやって勉強してきたんですか?」と聞かれたのでランチを食べながら「こんな本読んだ。これもタメになった。あ、これもタメになった」とKindleを広げながらリストアップした。思い返せばたくさん本を読んだ。その中には役に立ったものもあれば時間の無駄だったものもある。すると「あ、役に立った本だけ抽出したら有益かもしれないな」と思ったのでエントリにする。 僕は文章を簡潔に分かりやすくまとめる才能が致命的にないのでこのエントリもげっそりするほど長い*1が、2017年も暮れなのでここはひとつ日本酒でもかっ喰らいながら自分の人生を振り返ってみようと思う。 無理やり要点をまとめるならば、 TCP/IPの知識 Linuxの知識 なにかひとつプログラミング言語 なにかひとつGUIシステムの理解 アルゴリズムとデータ構造 強運*2 を身につけたらどんなに低く見
プログラミングでよく使う英単語のまとめ【随時更新】 随時追加、整理していきます。 名前をつけるときには、名詞、動詞の違い、複数形、過去形などに注意しましょう。 オブジェクト指向では、クラス名は名詞、メソッドは動詞とします。 使ってはいけない言葉 get / set アクセサ (getter / setter) やプロパティによく使われている。 それ以外に使うと混乱を招くのでよくない。 get は軽量な処理と考えるので、中に重い処理は書いてはいけない。 単純な取得/設定以外で使いたくなったら他の言葉を考える。 load, save, commit, store, enable, disable, fetch, register, configure, add, etc... check 意味が広すぎて何をしているかわからない。 できるだけ別の言葉を使う。 具体的に何をしているかに分解して考え
2016.06.06|最終更新:2017.11.17 ダサい名付けから卒業!プログラミングでイケてる関数名・変数名をつけるためのルール+ツール8選 プログラミングをする時に避けては通れないのが関数や変数の名付けです。 複数人で作業する場合は自分が付けた関数名・変数名が他のエンジニアに見られるわけで、分かりにくいものや変な名前を付けるのははばかられます。 本記事ではプログラミングの関数名・変数名の名付け問題を解決してくれるツールや情報をまとめました! 1. 正しいコーディングが身につくエンジニア英語の手引き ?文法とクラス/メソッド、命名規則? 正しいコーディングが身につくエンジニア英語の手引き ?文法とクラス/メソッド、命名規則? 英語でプログラミングに最適な名付けをする方法について解説した記事です。複数人で行うプロジェクトでは、「何のためのコードなのか?」が瞬時に連想できるような単語のチ
私は時折、コーディングに対する考え方を変えさせられるような、従来と非常に異なるプログラミング言語に出会います。本記事では、その中でも特に気に入っている発見をいくつかご紹介したいと思います。 これは、先賢による「関数型プログラミングは世界を変える!」的な投稿ではありません。本記事で挙げるのは、もっと「知る人ぞ知る」的なリストです。多くの読者の方にとって、以下の言語やパラダイムは聞いたことのないものが大半だと思いますので、私が経験したように、これらの新しい概念を学ぶ楽しさを感じていただければ幸いです。 注:私は以下の言語の多くに関して最低限の経験しかありません。その発想に引き込まれたのであって、専門的知識は持ち合わせていないため、訂正すべき点や誤りがあればどうぞご指摘ください。また、本記事で取り上げていない新しいパラダイムや概念に出会った方は、ぜひお知らせください。 最新情報:本記事が r/p
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く