EdTech」タグアーカイブ

paizaスキルチェックでAランクを取るまでにやったこと

50半ばのおっさんですが、ようやくpaizaスキルチェックでAランクをクリアできた。
そのために、やったこととちゃんとやらなかったことを整理しておきたい。

長らくコンピュータを仕事にしてますが、たいしたプログラミング能力があるわけでなく、5年前にやったときはランクBだった。これがずっと心の片隅にひっかかっていたので、本腰を入れて再勉強してみた。

やったこと1. 解説動画をみる

まずは、どんなふうに問題を解けばいいのか、paizaラーニングの解説動画をチェック。
このあたりは、ほぼ無料プランで見ることができる。
特に「日別訪問者数の最大平均区間」は、Aランクでの解き方も解説しているのでおすすめ。
うなぎ屋の解説動画は、PHP版だけだし後半が有料だけど、最初だけでも見ておくと問題のとらえ方がよくわかって良いと思う。

やったこと2. スキルチェック過去問題をやる

次に、解答コード付きの問題を実際に解いてみる。制限時間がなく、何度でもチャレンジできて、paizaランクにも影響しないので、じっくり問題に取り組める。中に「長テーブルのうなぎ屋」もあって、解答チェックもしてくれるので、欠かさずやる。

やったこと3. スキルチェック見本問題をやる

さらに、見本問題も実際に解いてみる。
こちらは、スキルチェック入門編2の「日別訪問者数の最大平均区間」がある。

やったこと4. レベルアップ問題集をやる

そして、これもやる。とくに「Bランクレベルアップセット」は、DランクやCランクの関連問題を解いていくので、レベルアップに最適です。

あんまりやらなかったこと. ネットに解説文があれば読む

追記:自力で解くことを重視していたので、実際にはあまりできなかったんだけど、レベルアップ問題集は、ネット上にいくつか解説があるので、それもよく読んでみると役立つと思う。

Aランクを取ったあと、再度自分でも解いてみた。

 ふりかえり その1

ここまでは、ほとんどBランクのおさらい。
やってみて、自分なりに不得意なところを振り返ってみた。
ひと通りできたけど、頭に入る複雑さの度合いが低いなぁと感じた。
ロジックを追いかける能力が、まだまだ低いのか。
これは、paizaスキルチェックだけでは解消できそうもないので、
一般的なプログラミングのテクニックをもう少し勉強してみることにした。

(ただし、後からふりかえってみると、Aランクのために以下を勉強したのは、ちょっとやりすぎだったかも。いろいろな問題を解いたり、その解説を読むのは役に立ったけど。難しく考えないと解けないとしたら、じつは問題を勘違いしているかも)

やったこと5. 定番のプログラミング

そこで、ソートや再帰呼び出しなど、よくあるプログラミングの課題にチャレンジしてみた。定番アルゴリズムみたいなものを調べて、自分なりに実装してみる。

このとき心がけたことは、こんな感じ。

  • コメントで手順を整理してからプログラミングする
  • 小さな実験的なプログラムを作って、すこしずつ複雑にしていく
  • 他の人が書いたコードや解説を探して、じっくり読む

やったこと6. 数学パズルの第1章入門編

それから、こんな本を買ってみた。

「シンプルで高速なコードが書けるようになる70問」というサブタイトルがついているので、その第1章だけやってみた。
入門編でレベルは高くないらしいんだけど、案外できない問題、わからない問題がある。
ネットで解説を見つけたら、そこでも分からないことが見つかるので、またいろいろ調べてみた。

やったこと7. 再帰検索

特に、再帰呼び出しを使ったツリー探索について、ちゃんと分かってないことに気が付いた。名前は知っているつもりでも、自分では実装できないので、これもコードを書いてみた。

やったこと8. 順列・組み合わせ

そうこう調べていくうちに、最短経路問題というのが出てきた。これも、プログラミングの定番問題らしいんだけど、意味がよく分からなかった。調べてみたら、高校受験や高校数学あたりで登場する、順列・組み合わせのバリエーションらしい。
高校生向け数学解説サイトみたいなところに、解説文がたくさんあった。
paizaスキルチェックに登場するような、問題の立て方がたくさん登場していた。
どうやら、オレは、このあたりの知識がスッポリ抜け落ちているぞ!
そこで、練習がてら、こんなコードを全部実装してみた。

頭に入る複雑さも、こういうパターンを知っていると、かなり改善される感じがした。

やったこと9. 基本的な文法の再確認

その過程で、プログラミング言語の文法ついて再確認してみた。
なかには、ちょっと引っ掛かりやすい使い方もあるので、基本的な使い方のコードを書いてみた。

  • 配列から、特定範囲の要素を切り出す
  • 2次元配列のソート

やったこと10. Aランク問題に挑戦

というわけでして、再チャレンジ。
簡単そうな問題を探してやってみたら、
制限時間6時間のところ、1時間くらいで解けてしまった。
積年の課題が解消できて、いやぁ、よかったよかった。

ふりかえり その2

  1. まずは、Aランクの問題が解けてよかった。
  2. 頭が悪いのではなく、プログラミングの定番パターンを知らないだけ。そこがとりあえず分かってよかった。場数重要。
  3. あるいは、問題を読み間違えている。特定の答えを求めるためには、愚直にやらなくていいことも多い。難しいことを知っているから書けるプログラムもあるけれど、難しくしか書けないとしたら、じつは問題を勘違いしているかも。
  4. スキルチェックの見本問題なんかはいいんだけど、本問題で一部のテストパターンがエラーになった場合、どこでひっかかっているか分かりにくいので困った。自分なりにテストパターンを作ればいいし、問題を起こすパターンを絞り込むこと自体がデバックのかなりの占めていることもあるんだけれど。
    テストパターン10個をちゃんと作るのは、対象ランクよりも難易度が高い場合もある。
    どこかで一度、見本問題で10パタ―ン全部がどうなっているか調べてみるといいのかも。
  5. 個々のテクニックを知っていれば、ランクが上がるわけではない。
    だけど、プログラミングの場数を踏んでいく中で、このあたりに出会う場面は多そうなので、おのずと把握しているのかも。場数重要。
  6. 今まで自分で作ってきたいろいろな物が、ちょっと単純すぎたのかなと感じた。
    解決策が単純なのは、良いところのひとつなんだけど。
    もう何段階か複雑で、高い精度の解決策を目指してもいいのかも。

というわけで、次のレベルを目指す方々の参考になれば幸いです。


Processingでタートル言語を作ってみた

screenshot_s

Scratchみたいなツールから、ビスケット塾みたいな勉強会まで、子供向けのプログラミング教育が、一種のブームになっていますが、その源流にあるのが、シーモア・パパートLOGOだったりします。

LOGOで特徴てきなのが、タートルグラフィックスと呼ばれる機能ですね。亀ロボットを操作することで、子供でも手軽にコンピュータでグラフィックを描いてみることができます。Scratchにも、同じような機能が搭載されています。

そんなタートルグラフィックスを実現するタートル言語「p5_turtle.js」を、Processingで作ってみました。ProcessingのJavascript実装である、p5.jsで作ってあるので、ブラウザだけでそのまま動作します。

これまでもProcessingに、タートル言語ライブラリはあったのですが、ライセンスが厳しかったりして、個人的にはイマイチ使いづらいと感じていました。そこで、そのあたりをゆるくして。さらに、がんばって、カメが絵を描く軌跡をアニメーションで表示する機能も盛り込みました。

ただし、まだエディタ機能を持たせていないので、jsファイルを直接編集する必要がありますし、コマンドもまだ4つくらいしかありません。

とはいえ、p5.jsとスプライトなどをサポートするp5.play.jsライブラリのおかげで、わりと簡単に機能拡張できそうなので、もう少し遊べるオモチャにしてみたいと思います。


CoffeeScriptをブロック型エディタで学習できる「Pencil Code」

pencil-code.net

Pencil Code」(ペンシルコード)は、ScratchやBlocklyのようなブロック型エディタを使って、プロフェッショナル向けの本格的なプログラミング言語を学習できるサイトです。ブラウザだけで、ブロック型エディタとテキストエディタを交互に切り換えて、気軽にプログラミングを体験したり、結果を共有することができます。

Pencil Codeは、GoogleのパートタイムプログラマーであるDavid Bauと、その息子のAnthony Bau、Code.orgのスタッフらによって提供されています。
かなり完成度が高いです。
また、サイトのリソースは、ほとんど全てがオープンソースで公開されているようです。
今回は、このPencil Codeについて簡単に紹介します。
続きを読む


Make Japanで紹介されました

make_0827

突然ですが、先日公開したMameBlock.jsによる「p5.js 用 ビジュアルプログラミングエディタ」が、テクノロジー系DIY工作専門「Make:Japan」の簡単なレビュー記事として紹介されました。

ご紹介いただき、ありがとうございました。
いつかは、載ったらいいなと思っていましたが、いきなりで、むちゃくちゃ驚きました。
これも、Porcessing(p5.js)のサンプルを作ったおかげですね。

記事の中身は、簡単なProcessingとp5.jsの紹介に続いて、ビジュアルプログラミングエディタをどんなふうに使うのか解説いただいています。
そして、そのベースになっているMameBlock.jsは、ビジュアルプログラミングエディタを実装するためのJavascriptライブラリです。MameBlock.jsを使うと、p5.jsビジュアルプログラミングエディタみたいなものが簡単に実装できます!

このあとは、もう一段インパクトのあるデモを作りたいと思っています。


paizaで、自分のコーディング能力を調べてみた

Fall 2010 hackNY Student Hackathon

この春から自営業になり、空き時間にビジュアルプログラム編集ライブラリ「mameblock.js」なんてものを作っている訳ですが、それなりに形になってきたので、今度は自分の実力がどの程度のものなのか試してみたくなりました。

私の場合、今さらプログラマーにジョブ・チェンジするわけではありませんが、実力が分かれば、次にどんなランクのことを学習すれば良いか把握できますし、もしものときにバイトでもできるなら、セーフティネットとしてもありがたいし。

そんな訳で、「自分のプログラミング力が、他社で通用するか“こっそり”腕試しができる」という、IT/Webエンジニアのための転職サービスpaizaに挑戦してみました。

これは、ステルス・マーケティングではありません。本当に個人的な興味でチャレンジしています。

さて、その顛末や如何に。
続きを読む


プログラミング教育サービスの4つのパターンと、まだどこもやってないこと

18288598@N00_2870711774_39a33ef880_s

ここ数年、EdTechというキーワードがちょっとした注目を集めています。「江戸テック」でも「エロティック」でもありません。Education(教育)をTechnology(技術)で進化させようと、次々と立ち上がっている教育系オンラインサービスのことです。

大学の講義をオンライン動画で配信する「Coursera」とか、社会人教育の「N-Academy(Nアカ)」、リクルートの「受験サプリ」とか、いろいろある中で、以前から多くの人が利用してきた教育サービス企業も次々と参入しています(参考1参考2)。
英語のように、多くの人が学びたいと思っていて、これまでなかなか成果の出なかったジャンルも人気があります(英語学習まとめ)。

そんな中で、特に注目を集めているのが、子供から大人まで、プログラミングそのものを学習できるサービスです。
続きを読む