衝撃のラスト系の映画に思うこと
Life Is Strange にはまっているからというわけでもないのですが、昔から時間軸が戻ったり*1ごちゃごちゃしている*2映画が好きで、このたび、「メメント」という映画(DVD)を観ました。
とても面白かったです。
まあ、いわゆる「衝撃のラスト」とか「どんでん返し」的な映画です。
そういうのが好きなんです。
ただ、それ系の映画を見つける時に「驚愕のラスト」とか「どんでん返し」とかいう枕詞がどうしても目に入ってしまい、観ている時も「どうせ驚愕のラストなんだろ」とか「どんでん返しとすると、ラストはどうなるのかな」とか考えてしまう。
ユージュアル・サスペクツみたいな映画を観たいと思って同じような衝撃が得られないかなと映画を調べると、どうしても「どうせあれだろ?」みたいな感じになってしまうというジレンマ。
で、「驚愕のラスト」というのを意識して観ていたとしたら、「何も起こらない」というのが本当の驚愕のラストなのではないかと思ったりもするわけです。
ただ、想像したところ、それってやっぱり消化不良感があるんですよね。
どんでん返ししても「あ、なるほどね」みたいな感じになってしまい、その裏をかくと「そうじゃねえんだよ」と言われてしまうという、とても苦しい状況。
みんなが納得する「どんでん返し」というのを見せるというのはなかなか大変だろうな、と思います。
まあ、そんなわけで、メメントは、おすすめです。
何の先入観もなく観るのがいいと思います。
思いつき連載 VBA王子 ニューヨークへ行く #12
前回
#12
赤羽が通常業務の合間を縫って地下の資料管理室に通うようになってから、一週間が経とうとしていた。
長机の上が少し整理され、二人いても息苦しさをそれほど感じなくなった室内に、カタカタとキーボード音が響いている。
「ワックスかける、ハッ!」
「ふきとる、ハッ!」
「ワックスかける、ハッ!」
「ふきとる、ハッ!」
背後の声を無視して、赤羽は目の前の画面と指先に神経を集中していた。
kiokunigozaimasenn・・・「どうだ?」
しばらくして、結果が画面に表示される。
赤羽は、安堵のため息をついた。横で北浦は目を閉じ、腕を組んでうなずいている。
「よくやった、若者よ。しかしこれで終わりではないぞ。タイピングの道に終わりは―」
「そのキャラなんなんですか。てゆうかさっきのかけ声もなんですか」
「まあ、修業っぽいかなと思いまして」
「・・・そうですか」
「とりあえず最低限打てるようになったみたいだけど、これからも練習しろよ。ほんと最低限だから。マジで」
「わかりましたから、そんなに言わないでください」
北浦は細かくうなずいた後、大きくあくびをした。赤羽はつられないようにこらえた。
「タイピングの練習くらい大学でやってこいよな、まったく。パソコン使う職場でブラインドタッチできないなんて、あれだぞ? あれみたいなもんだぞ?」
「どれですか?」
「・・・なんかない?」
「ないです」
「じゃ、そういうことで、次はVBAの成果を見せてもらおう。見せてもらおうか、VBAの成果とやらの性能とやらを」
「今日、テンションおかしいですね」
疲れてんだよ、と北浦は力無く笑った。
「おお、ちゃんと動いてるな。どれどれ、コードを見せていただけますかな? ふむふむなるほどね」
何度もテストして、何度も見直したから、おそらく問題ない、はず。
赤羽はドキドキしながら、北浦が操作するのを見守る。
「なるほどなるほど」北浦はにこやかに、発表した。「50点」
赤羽が首をひねりながら一階に上がると、玄関に王子の姿が見えた。外回りから戻ったのだろう。
王子は赤羽に気づくと、喫茶室の方向を指さした。赤羽はうなずいて返事をする。
いくつかの自販機の近くに机、椅子が置かれただけのスペース。それが一階喫茶室だ。
室ではないのではないか、という意見もありつつ人気スポットであり、社内で赤羽が落ち着ける数少ない場所の一つでもある。難点は、いつ行っても大体誰かしら知らない人がいて緊張する、ということだ。
幸い、今は誰もいなかった。
「いやあ、暑かった」
王子はスポーツドリンクをごきゅごきゅやった後、言った。
「大変だね」赤羽は無料の薄いウーロン茶が入った紙コップを傾ける。「今日は新規?」
「まあ、いろいろかな」
「そっか」
赤羽は王子が、というより営業がどんな仕事をしているのか、あまりよく知らない。二人で酒を飲むときも、王子は自分の仕事について積極的には話さず、赤羽の話を聞きたがる。
「どうなんだ? VBAのほうは」
「うん、まあ、結構難しい、かな」
「そうか、順調か」王子はにやりと笑う。
「言ってないけど」赤羽は頬を膨らます。「あ、そういえば、王子はブラインドタッチできるんだっけ?」
「ま、人並みには」
「あ、そうすか」
「報告書とか、打つなら早いほうがいいしな。どうせどんな職場でもパソコン使うんだから、作業効率を上げるためには必要だと思った」
「で、大学時代に練習した?」
「ゾンビを倒すやつでな」
「意外だ」
「時々俺は思うんだ。何体ものゾンビの屍の上に、今の俺がある。なんて罪深い男だろう、ってな」
「ゾンビって、もともと屍じゃないすか?」
- つづく -
Excelで画像をドット絵にしてみる
作ってみる
こんな感じにして、矢印の右下をクリックした時にそこから右下の範囲を1ピクセルずつ、色を取得して別シートに転記するようにしてみました。
コード
Option Explicit #If VBA7 Then Private Declare PtrSafe Function GetPixel Lib "gdi32" (ByVal hdc As LongPtr, ByVal x As Long, ByVal y As Long) As Long Private Declare PtrSafe Function GetCursorPos Lib "user32" (ByRef lpPoint As POINT) As LongPtr Private Declare PtrSafe Function GetWindowDC Lib "user32" (ByVal hwnd As LongPtr) As LongPtr #Else Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long Private Declare Function GetCursorPos Lib "user32" (ByRef lpPoint As POINT) As Long Private Declare Function GetWindowDC Lib "user32" (ByVal hwnd As Long) As Long #End If Private Type POINT x As Long y As Long End Type Sub drawPic() Dim pLocation As POINT Dim lColour As Long Dim i As Long, j As Long Dim lDC As Variant Dim tate As Long, yoko As Long Dim tateGeta As Long, yokoGeta As Long Application.ScreenUpdating = False tate = Range("B1") yoko = Range("B2") lDC = GetWindowDC(0) Call GetCursorPos(pLocation) tateGeta = pLocation.y yokoGeta = pLocation.x With Sheets("ドット絵") .Cells.Clear For i = 1 To tate For j = 1 To yoko lColour = GetPixel(lDC, j + yokoGeta, i + tateGeta) .Cells(i, j).Interior.Color = lColour Next Next End With Application.ScreenUpdating = True End Sub
こんな感じです。
課題
- 遅い
- 画像の範囲をぴったり指定できない
どっちも、わりと痛いです。
*1:謎のキャラクターは、Life Is Strange のある場所の落書きからご登場いただきました
VBAは初心者におすすめのプログラミング言語なのか
こちらの記事に、初心者におすすめのプログラミング言語10選として、我らがVBAが仲間入りしていました。
錚々たるメンバーの中にラインナップされたのは喜ばしいことだと思います。*1
VBAのメリットとして
- 実務で使える
- 環境構築が簡単
- 情報の充実
あたりが挙げられていて、そのとおりだと思いますが、他の言語と比べた時に自分がいいところだと思うのは
作ったものがすぐに見える
というところです。
Web系の言語の勉強をしていた時*2に、DBとのデータやりとり、データの処理とは別に「表示させる部品を作る」ということで苦労した思い出があります。
そして、初心者だから、表示できなくてもどこが悪いのかわからない。*3
それに比べると「ここのセルの値をこれにする」とか、「ここの範囲をこの色に塗る」とか、「シート」や「セル」という馴染みのある部品を操作することができるのはかなりお得な感じです。
で、VBAがプログラミング初心者におすすめといえるかというと、まあ、人によるかなと。
VBAのレッスンをしている自分からすればもちろん、「え? プログラミングをやってみたい? VBAおすすめですよげっへっへ」と言いたいところなんですが、正直、Web系とかゲーム系をやりたいなら最初からそっちをやったほうがいいと思います。
VBAを先にやるメリットというのは特に思いつきません。
自分の感覚としてはあくまでも
「事務系の仕事でExcelを使ってるんだけど、同じ処理ばっかりでうんざりする。
VBAとかいうのがあるって聞いたけどそれを使えば楽にできるの?
あーでもプログラミングなんでしょ難しいんでしょ」
という人におすすめ、という感じです。*4
基本的にプログラミングの勉強というのは目的がないと続かないので、ExcelVBAは「Excelのこのめんどくさいこの作業を楽にしたい」という崇高な目的がある人にはとてもおすすめです。
*1:個人的にはHTMLとCSSはJavaScriptに編入されてもいいかなと思いますが
*2:そんなにしてないけど
*3:だからこそ、単純に「Hello World!」が表示されるだけでも嬉しいわけですが
*4:そんな人は是非ご連絡ください
Excelでドット絵作成ツールを作る v1.0.0 配布の巻
- ツールの説明
- 動作環境
- 操作方法
- 通常モード
- 元に戻す&やりなおす
- 手動モード
- 通常モード
- 設定
- 描画色、置換色
- キャンバスのサイズ
- 画像ファイル種別
- ファイルのダウンロード
- はじめの準備
- 編集を有効にする
- コンテンツの有効化
- 諸注意とか
- 参考ページ
- 質問、ご意見等
- コード
動作環境
Excel2016 で動作確認済です。
Excel2007以降であれば大丈夫なのではと思いますが、動作報告いただければ助かります。
操作方法
モード切替で、モードが切り替わります
通常モード
キャンバス内のセルをクリックやドラッグで選択すると、「描画色」に塗ることができます
元に戻す&やりなおす
通常モードでの描画操作は、それぞれのボタンで「元に戻す」「やりなおす」ことができます
(描画の履歴を残して再現しているだけなので、標準のものとは動きが異なります)
手動モード
選択しただけで色が変わったりしないので、標準のコピーやペースト機能が使えます
設定
キャンバスのサイズ
たて、よこのサイズを個別に指定できます。
あまり大きいと重くなるのと、操作画面が見にくくなるので、とりあえずたて、よこ共に上限を100としています。
(下にも記載しましたが、VBAの改変は自由なので、解除可能です)
はじめの準備
ファイルを開いたときになんだかメッセージが出てきたら、以下を実行してください
編集を有効にする
保護ビューで開いた場合、「編集を有効にする」をクリック
コンテンツの有効化
セキュリティの警告が出たら、「コンテンツの有効化」をクリック
諸注意とか
- ファイルの改変、再配布は自由です(特に断りもいりません)
- ファイルをダウンロード、開いたことによるいかなる損害も当サイトは責任は負えません
参考ページ
パレットウィンドウ(カラーピッカー)の実装に関して、下記のページを参考にさせていただきました。
(ほとんどそのままです)
Excel VBA 背景色をパレットウィンドウから指定する PCまなぶ
質問、ご意見等
コメントに残していただくか、ホームページの問い合わせからお願いします。