崖っぷちの男

たぶん技術っぽいネタ。ブログ名が決められない

プログラミングが初めての人に教えるときに問題になりそうなところ

 前回のブログで新人の方にJSとPHPを教えるかも、と書いたのですが、元々ほとんど未経験者の方なので、色々やるのはきついだろうということで私が教える話はなくなってしまいました。

 ほぼ未経験者なので進みがゆっくりなのは仕方ないのですが、担当の人の話を聞いていてこういうところが問題なのかも、と思ったのでメモっておきます。

 ちなみに担当の人が教えている内容は Excel VBA です。

VBA はブロックが分かりづらい?

VBA は {} でブロックを表していないので、どこからどこまでがブロックになっているのか分かりづらく、プログラムの構造がつかみにくいのかなと思いました。まあ、インデントで分かるんですが…

結果をいきなりシートに出力させていた

担当の人が作られた課題は、何か計算処理をさせそれをシートに出力する、というものでした。

出力処理はこんな感じだと思いますが、

Cells(1,1).Value = "hogehoge"

そもそもオブジェクトとかプロパティもさらっと勉強した程度では、この文でセルに値が表示される理由が分かりづらいんじゃないかなと思います。

でこの辺はややこしく見えるので最初は Debug.Print でイミディエイトウインドウに出力から始めればいいんじゃないかと思います。

sum = sum + 1

この文も最初意味が分からなかったようですが、言われてみれば確かに初めての人には分かりづらいなと思います。イコールが代入演算子であるとか、右の sum は実行されるときは評価されてその時点で sum に入っている値になりますよ、みたいな話を分かりやすい言葉で説明する必要があるなと思います。

質問しづらい環境

担当の方が仕事しつつ教える感じだと、どうしても質問がしにくくなると思います。忙しそうにしている人に「こんな些細なこと聞いていいのかな…」と思って質問できなくなっているところがあるような気がします。担当の人は極力仕事をしないで「まじで暇すぎだからどんどん聞け」みたいな空気を出した方がいいと思います。

新人研修のネタを考えていた

 先週からうちの会社でも新人さん (うちのグループは一人だけ) のプログラミング言語学習が始まりました。自分も予定では10日程度ですが JavaScriptPHP を教えることになっています。ちなみに教えるのは今回で 2 回目で、正直俺が教えていいの? って感じですが、JS と PHP あわせて 10 日で教えられる範囲のことだけ教えることになるので、そのレベルなら俺でも多分なんとかなると思っています。

 もっといえば新人さんがプログラミング経験者なら正直、本渡して「やっといて」でおおかた何とかなる気がします。ただ今回の方はあまり経験がないということでどうしようかなーと色々考えていました。で今日は恥ずかしげもなく考えたネタを書いてみます。

 とりあえずは初心者向けの本を買ってそれをやってもらうことにしようと思ってるんですが、新人さんには章単位で読んでもらって、章を読み終わるごとに自分と読書会的な感じでその章について話をする、みたいにしたらどうかと思ってます。これは最近、読書会に初めて行ったのでそれを強引に活かそうという浅知恵です。

 前回は一人でひたすら本を読んでもらって、用意した課題を勝手にすすめてもらい、質問があれば都度聞いてもらう、みたいにしてましたが、代わりに話をしてみるってところが違いです。

 次に前はやらなかった、誰かの書いたコードを読む、ってのをやってみたいなと思っています。普通にやると渡した本に書いてあるコードしか読まないことになるので…

 JavaScriptなら、「jsdo.it - Share JavaScript, HTML5 and CSS」が長すぎず短かずぎないやつがあって良さそうな気がします。どこかのWebサイトの JS ファイルを読むってのも考えましたが、jQuery とかライブラリが色々使われていたり、ミニファイされていたりして勉強には向いてなさそうです。

 もう1つ、 Mac や Win 7 の ウィジェットやガジェットのコードを読んだらどうかと思っています。コードの長さも長すぎないし、元は html + css + js なので独自の仕様の部分に目をつぶればなんとかなるんじゃないかと。まだ読んでませんが OS 標準のウィジェットならコードも綺麗なはず…と信じてます。

 PHP は『パーフェクトPHP』のミニブログのコードを読んだらいいんじゃないかと思っています。って自分も読んでないんですが…。何か本自体人気あるしきっといいコードなんでしょうと。ついでにフレームワークとかの考え方も知れて勉強になる気がします。各ユーザにプロフィール画像を設定できるようにする、みたいな改造をしてもらうのも良さげ。

 あとはコードをできるだけ書いてもらえばいいと思ってるんですが、新人さんと交互にコードを書きながら何か1つのものを作る、みたいなんできないかなーと思っています。ペアプログラミングをやったことがないのでいっそ新人さんとそんな感じのができたらなーという妄想です。

 新人教育を実験に使うなよと怒られそうですが前回と同じではおもしろくないので…まあなんだかんだで仕事をふられるとここに書いたことは全然できなくなってしまいますが、どうなるかな…

TED Talks 日本語字幕付き動画のフィード

 色んなプレゼン動画が見られる TED ですが、日本語字幕付きのものの RSS フィードを配信してくれるサイトがあって、自分はそこを RSS リーダに登録していました。ですが最近どうもそのサイトのフィードが更新されてないっぽい? 感じなのでとりあえず Yahoo! Pipes で作ってみました。

 いつの間にか「Fetch Page」が deprecated になっていたので「XPath Fetch Page」の方を使いました。URLは

http://www.ted.com/talks?lang=ja&event=&duration=&sort=newest&tag=

XPath は次のようにしています。

//div[@id='content']/div/ul/li

RSS のリンクを貼ってみますが使えるかはまたもや試してないので分かりません。。
Ted Talks Japanese

スタイラス初めて買った (Touch Wand D-type)

 本当は給料日までがまんするつもりだったのですが… iPad 用にスタイラスを買ってしまいました。前から気になっていた筆っぽいやつにしました。ちなみに自分にとってのスタイラスの用途は絵を描くことではなく、先日書いた Fast Finga とかでのメモ用途です。


静電容量式タッチパネル専用タッチペン Touch Wand(タッチワンド)D-type TWD-002BK

静電容量式タッチパネル専用タッチペン Touch Wand(タッチワンド)D-type TWD-002BK

 新宿のヨドバシ本店で買ったら1700円代で、他のスタイラスと比べるとお手頃な方に入ると思います。

 ただ買ったあとに気付いたんですが、この「Touch Wand」って2種類あるんですね。買ったのは D-type ですが キャップのある M-Type が良かったかも…


静電容量式タッチパネル専用タッチペン Touch Wand(タッチワンド)M-type TWM-002BK

静電容量式タッチパネル専用タッチペン Touch Wand(タッチワンド)M-type TWM-002BK

 ちなみにヨドバシ本店の Mac 売り場で買ったんですが、試し書き用のスタイラスはあんまりない、というか売ってるものの中で 3 種類くらいしか試し書きできないようになっててちょっと残念。秋葉原ならもっとあるんでしょうねー。Touch Wand は試し書きできるものの中では一番書くのに力がいらない感じがした (よくあるゴムのはちょっとひっかかる気がする) ので選んでみましたが、まだ使ってみないと分かりません。

 少なくとも、キャップがないと持ち運びが気になります。一応公式カバーだとヒンジの磁石にペンのクリップの金属がくっつきはするけど、そのための形状になってる訳でもないので iPad を振り回すとすぐに落ちます。いやふつう振り回さないけど。結局 iPad ケースを持ってるので常にそれに入れて持ち歩くしかないかなーという感じです。

 本当は Jot も気になってたんですが、そもそも自分がそんなにスタイラスを使うか? という疑問もあるので、とりあえず今回買ったやつを使ってみることにします。

Evernote PeekでVimのショートカットを覚える

 以前、iPadのアプリでそのカバーを使ったアプリが話題になったことがあったと思います。自分はその頃 iPad を持っていなかったので「そんなのがあるんやー」としか思わなかったのですが、最近それを思い出したので使ってみました。

Evernote Peek 2.2.1(無料)App
カテゴリ: 教育, 辞書/辞典/その他
販売元: Evernote - Evernote(サイズ: 67.4 MB)
全てのバージョンの評価: (73件の評価)


下の画像のように、1段階目をめくると問題が出て、2段階目までめくると回答が出ます。完全に閉じてからまためくると次の問題、という感じで暗記に使えそうなアプリです。
ss1 ss2


 自分は Vim をもっと使いこなせたらなあ、と思っていたので、今回は Vim のショートカットについての問題を作ってみました。

 ただ Vim のショートカット一覧がどこにあるのかよく分からないので検索して見つけた以下のサイトの表をデータとして使うことにしました。

 問題の作り方ですが、Evernote の1つのメモが1つの問題になります。タイトルが問題文、ノート自体の内容が回答になります。

 それを手っ取り早く作るには以下を使いました。CSVを読み込んで、1行ずつ Evernote のメモにしてくれるスクリプトです。AppleScript で書かれていて、残念ながら Mac でないと使えないのですが…

 このスクリプトを実行すると、ダイアログが順に出てきます。ここで読み込むCSVファイル、ノートを作成するノートブック、行の区切り、列の区切り、各列のデータの種類 (タイトルや本文、日付等) を選択するとCSVファイルを元にノートが作られます。

 注意点としては、行の区切りなどで選択できる「Return」は改行コードの「CR」を想定したもののため、「LF」で保存されているとうまく読み込まれないことです。CSVファイルの改行コードをCRにするか、「set line_Delimiter to return」を探して以下のように変更するといいです。

set line_Delimiter to ASCII character 10

 そんな訳で作ってみたものを共有してみました。ただし意味もなく英語です。先に Evernote アプリの方でこのノートの共有設定をしておけば、Peek の「SHARED NOTEBOOKS」から追加できると思うんですが試してないので実は分からない。。

FastFinga 3 で iPad をメモ帳がわりにできそう

 ふだん考え事をしていると、ちょっと図を描いて考えたいなというときがあります。そういうときは今までは紙に描いていたんですが、せっかく iPad を買ったので 、iPad でデジタルにそれをやってみようと思いアプリを探してみました。ただ無料のアプリしか試していません。ケチなので…

 それで「SketchBookX」とか「Bamboo Paper」とか有名っぽいやつをいくつか使ってみたんですが、自分の用途に合っていそうだと思ったのは、それらではなく元から自分の iPad に入っていた「FastFinga 3」でした。もともと iPhone で以前のバージョンを買っていたのですが、それを買っていたおかげで無料で最新バージョンの「FastFinga 3」にアップデートできました。

FastFinga 3 3.3.8(¥250)App
カテゴリ: 仕事効率化, 教育
販売元: Catalystwo Limited - Catalystwo Limited(サイズ: 18.4 MB)
全てのバージョンの評価: (28件の評価)
+ iPhone/iPadの両方に対応

 でまあこのアプリは色んなところで紹介されているので機能の説明なんかはせずに、自分にとって使う決め手になったところと、ここがこうなってたらもっといいのになあというところを書いておきます:
 

ここがいい!

1. テキストボックスの挿入

 図を描くときにそのなかに文字を書きたいこともよくあるんですが、字を書く方法としては、やっぱり手書きよりキーボード入力の方が楽です。なので手書きの図の中にテキストボックスを入れられる機能はありがたいです。挿入したあとでもテキストの内容を自由に変更できたり、大きさや傾きもドラッグで変えられます。

2. 描いたものの編集

 いったん描いた線を選択して削除したり、移動したりできます。それ以上に書くことないんですが、すごく便利です。これってデジタルならではですね〜

3. グリッドの表示

 グリッド吸着する訳ではなくあくまでも背景としてですが、グリッドが表示できます。四角とか書くとき、やっぱりグリッドがあった方が描きやすいです。グリッドの間隔が自由にカスタマイズできるところもいい感じです。

※ちなみに下の画像、この拡大率のままマスに字を書いた訳ではないです。いったんズームして書いてから拡大率を戻しただけですので、「超器用じゃね?」とか思わなくて大丈夫です

4. フォルダによる管理

 1つ1つのメモをフォルダを作って整理できるので、メモをたくさん作ってもなんとかなりそうです。

5. 共有機能

 これは今のところ必要とはしてないんですが、いざとなったら Evernote にすぐ送れるのはありがたいし、最初から iCloud にメモを作れたり、Dropbox と同期できたりします。

ここはちょっと…

テキストボックスをロックできない

 不満なところを列挙しようと思ったんですが、結局はこの1つの問題に行き着く気がしました。まずそもそも上でテキストボックスと書きましたが、挙動的にはテキストボックスというよりはサイズの決まった付箋みたいなイメージで、その辺がまず問題だったりします。

 どういうことかというと、サイズが決まっているため何文字書こうがテキストボックスのクリックエリアが同じ幅になります。クリックエリアが広いために、間違ってテキストボックスを選択してしまうことがあります。その上拡大や回転も簡単にできすぎるので間違えて拡大してしまったりします。便利さが裏目に出ている感じ…

 なのでテキストボックスだけでも一括ロック/解除をできるようにするか、あるいはレイヤを作れるようにしてレイヤ毎にロックできるようにするとかしてくれるといいなと思います。逆にいうとそこまで細かい作業が必要なメモは書くんじゃねえ、ということなのかもしれませんが。


 使って数日しか経ってないので本当に使えるかはまだこれからですし、スタイラスを持ってないので使ってみるとまた違うかもなーと思っています。とりあえずしばらく使ってみます。本当は会社で使いたいんだけどなあああ
 

タスクで1時間毎になにか実行する

 あるダイアログを表示するVBスクリプトを作ったのですが、これを一定時間毎に実行したくなりました。そこで以前から使っているCronNTというcronっぽいソフトで設定してみたのですが、どうもCronNTはあえて実行時に画面に何も表示しないようにしているようで、ダイアログ表示という用途には使えないようでした (勘違いしてたらごめんなさい作者樣)。

 で自分は (会社で) Windows XPを使っているので、そういえばあまり使ってなかった「コントロールパネル」の「タスク」を使ってみることにしました。

 cronと似たような感じで設定すればいいのかと思ったのですが、結構違うもんですね。何が違うかって、○○時間毎に実行というのが単純には設定できませんでした (勘違いしてたらごめんなさいマイクロソフト樣)。

 で結論を言えば、○○時間毎に実行するためには、まず日単位で実行するようにします。その詳細設定で1時間毎に実行するようにして、かつそれを23時間繰り返すようにします。こうすると1時間毎に実行できるみたいです。

 要は毎日繰り返して、かつその1日の中では23回繰り返すって感じです。以下実際にした設定のスクリーンショットです。

ここで詳細設定を押すと下のダイアログが出ます。

設定タブではタスクの継続時間を55分にしています。1時間毎に実行したいので、前に実行したものが次の実行のときに残らないように1時間より短くしてみましたが、これでいいのか確認してません。。

Windowsで使いこなしてない機能が他にも色々ある気がします。しょうがないじゃないマカーだもの