にたまごほうれん草ブログ

はてなダイアリーから移行したブログ。以前のはこちら→http://d.hatena.ne.jp/emergent/

こつこつとコードを書き続けるためのプログラミング問題集

はじめに

半年ほど前に転職してから、ソフトウェアエンジニアとしてコードも書く立場となったのですが、やはり、長年コードを書き続けていた人とブランクのある私では、コーディングスピードが圧倒的に違ってきます。

もちろん、業務のバックグラウンドの知識の差もありますが、「コードを書くスキル」に関しては、ある程度は「どれだけの量、書いて動かしたか」だと思っていますので、極力毎日少しでもコードを書くようにしています。(書かないと覚えられないタイプ)

ただ、毎日とれる時間のばらつきや、ネタ切れなどありますので、手軽に書ける問題がたくさんあるサイトがあると重宝します。本記事では、私のよく使うサイトを紹介します。

Project Euler

projecteuler.net

コンピュータで解く数学の問題集サイト。アーカイブの最初は割と簡単なところから始まり、徐々に難易度が上がっていく。

私は50問を過ぎたぐらいから解くのに時間がかかるようになってしまい、別の言語で同じ問題を解く横展開ばかりしてしまって解答数の進捗が停滞気味…。

ただ、新しい言語を覚えるときは、ざっと言語仕様を眺めたあとは、実際に手を動かすために問題を解くというのが、最近の自分のお決まり手段になっているのでやってみるのがいいと思います。

上手くアルゴリズムを書ければ、1分以内には解けるように問題ができてる、と一応書いてある。

言語処理 100本ノック

www.cl.ecei.tohoku.ac.jp

言語処理、文字列処理に関する課題がステップ・バイ・ステップで列挙されています。私はまだ20問ほどしか解いていないですが、Project Eulerに疲れたら合間に言語処理100本ノックを、みたいな感じで少しずつ解いています。

AtCoder過去問

AtCoderの過去問を解くのもよいと思います。

非公式ですが、過去問をまとめているサイトや、最初に解くべき問題のリストをまとめてくれている人がいるので、参考にさせてもらっています。

ちなみに、筆者も何回かAtCoderに参戦したことはあるのですが、制限時間に追われて問題を解くのは苦手のようで、ズタボロでした。しかしそろそろ、半年ぶりぐらいにやってみてもいいかも。

qiita.com

今後やってみたいもの

画像処理100本ノック

GitHub - yoyoyo-yo/Gasyori100knock: 画像処理100本ノックして画像処理を画像処理して画像処理するためのもの For Japanese, English and Chinese

画像処理もあまりやったことがないので、体系的に経験できるといいなーと思っています。あと、音声処理もほしい(自分で作れ)。

Modern C++チャンレンジ

タイトルはC++ですが、Rustでもやってみたいと思います。

Modern C++チャレンジ ―C++17プログラミング力を鍛える100問

Modern C++チャレンジ ―C++17プログラミング力を鍛える100問

ディープラーニング∞本ノック!!(2019/05/12追記)

教えてもらいました。

github.com

おわりに

できる人はこういう問題集も一気にやっちゃうんだと思うのですが、最初はできなくても少し経ってから再度解くとわかるようになっていたり、てなことも多々ありますので、こつこつと忘れずに続けていくのが肝要です。

モチベーション維持のために私がやっているのは、進捗を見えるように、解いた分をスプレッドシートに記録していく、というものです。毎日一個ずつマルを付けていくと、だんだんマルの部分が増えていくのが楽しみになります。

さいごに、こういうのもあるよ、という問題集サイトの情報をお持ちの方がいらっしゃいましたら、情報いただければ小躍りします。

技術書典6へ参加してきました(「機械学習の炊いたん」寄稿と買い物)

参加したのは先週4/14。あっという間に1週間経っていましたね。

初出展

機械学習をテーマにした合同誌に寄稿させていただきました。

booth.pm

といっても、わたくし機械学習はとんと素人でして。

たまたま発起人の@tomo_makesが私の昔の同級生だったことから、声をかけてもらいまして、でもガチ勢の人たちに追いつく時間もないので、

  • 第1章:あやめ(猫)を画像認識してみるチャレンジ(そして失敗してあやめ画像でごまかす)
  • 第3章:機械学習を新たに学んで転職・採用のためのコラム

の2本を勢いでガーッと書ききって恥ずかしげもなく売りさばきました。

おかげさまで、紙の書籍は完売し、引き続き現場とBOOTHでの電子版の売れ行きもなかなか好調です。私以外の執筆者のみなさんのおかげというほかない、ほんとに。

よかったら上記のBOOTHへのリンクから、サンプルで目次を見ていただいて、興味がある方は購入いただけるとありがたいです!あやめのおやつ代になります。

本書内で散見されるあやめ見せびらかしの例

f:id:emergent:20190422024105p:plain f:id:emergent:20190422024304p:plain

その他の出展について

技術書典自体、前回以上に人がたくさん来ていたようです。13時までの入場が有料化したにもかかわらず、12時過ぎまで行列がはけなかったようですしね。

売り子の合間に見て回るのも一苦労でしたが、なんとか素敵な本の数々を入手することができました。少しずつ読んでいく楽しみ、積まれていくつらみを味わえるなんてなんという幸せでしょう。

次回、技術書典7に向けて、(今度こそ技術書にふさわしい内容を携えて)早速準備していきたいと思います。

Shunjuku.rs #2参加記

forcia.connpass.com

仕事を早めに切り上げてLTイベントに一般参加してきました。雰囲気は若い人が多いなーって感じ。(私がおっさんなだけだと思うのですが) しかし、LT登壇者はRust強者だらけで、でもRustという言語を楽しんでいることが伝わって自分も何か作って話してみたいと思った。ただ、LTってすべてを理解するには短いですね。なのでTwitter上で展開されている資料を見直して咀嚼するのです。

参考リンク(順不同、というか見つけた順)

Rust by Example をこつこつと写経した話

doc.rust-lang.org

毎日同じ時間にやるの大事。Exampleはコンパイルが通るからよい(いきなりオリジナルコード書いたらまず通らない)

場所と値を意識してRustの気持ちになる話

speakerdeck.com

RustでGPGPUな話

docs.google.com

WGができたんだって。発表者のtermoshttさんも入ってる。

github.com

RustでTDDする話

Liveコーディングしてた。

mockers とか mockito とか使ってた。

CLionでRust使えるんだー pleiades.io

Rustでターミナル上で動作するフレームバッファを作った話

フィンランド人のコンティオさん。懇親会で一番しゃべった。

speakerdeck.com

↓これのデモ。

gitlab.com

ターミナルは、(名前忘れた)

主催者プレゼン

www.forcia.com

のお話とデモ。

先読みしてんのかってぐらい高速な検索。

RustにVoidを導入してみる話

発散型っていうのね今日知った。

keens.github.io

そういえばHaskellにはVoid型あるよね。

Cでコード書いてたときは *void な型をよく使ってただめな子だった。

まとめ

みんなすごい。

cargo installのインストール先

Rustでコマンドラインツールを作ってインストールできるようにしたい。

qiita.com

では、 cargo install ですると記載があるが、実際に叩いてみると以下のような感じ。

$ cargo install
error: Using `cargo install` to install the binaries for the package in current working directory is no longer supported, use `cargo install --path .` instead. Use `cargo build` if you want to simply build the package.

つまり、 cargo install --path . を使え、と。

使いました。(atgetって名前にしてた。*周辺は適当に伏せ字)

$ cargo install --path .
  Installing atget v0.1.0 (/*path*/*to*/atget)
    Finished release [optimized] target(s) in 0.21s
  Installing /Users/*****/.cargo/bin/atget

できました。

ノーフリーランチ定理の紹介論文

を、読みました。

https://taroyabuki.github.io/works/no_free_lunch.pdf

千葉工大で教授やってる人に紹介してもらったのですが、その人はこの著者の矢吹先生が現在千葉工大にいることを知らなかったのが面白かった。

2019年あけましておめでとうございます

ついにあけてしまいました。

まずはリマインダー

はてなダイアリーが春に終了するので移行準備をしなくてはいけません。

d.hatena.ne.jp

抱負など

2018年9月から新しい会社で働いています。

前職ではプロジェクトリーダー・プロジェクトマネージャとして働いていましたが、コードを書く仕事がやっぱりやりたくて、ソフトウェアエンジニア職で転職しました。

Pythonメインで書く仕事なのですが、趣味としてのいろいろなプログラミング言語学習を、仕事にも活かしていければと思っています。活きなくてもどっちでもいいですが。

何はともあれ、年末、開発計画を立てましたので、それに沿って年明けから私のチームで本格的に開発をすることになります。ドキュメンテーション仕事はほどほどにして、コードをがっつり書いていきたいですね。

あとは、クラウドサーバ(GCPとか)にも詳しくなりたいです。まる。

退職エントリを読んで

某氏の某TT退職エントリが巷を賑わせていますが(私の観測範囲で)、だいたい書かれていることは概ねふむふむと思い読ませてもらいました。ハイレベルな次元にいるなぁ、とは思いつつ。

そういえば私は退職エントリを書いてはいませんが需要とかあるのかしら。一言で言うとプロマネ・プロジェクトリーダーをやってたけど、やっぱりエンジニアになりたいと思って40手前で今の会社にエンジニアとして転職した、って話。

飲み会のネタにはなるけど、世の中に大発信するようなネタでもないなー。寝よ寝よ。