はてなキーワード: 操作とは
この日記の内容は、会社の後輩から「最近エクセルマクロを勉強し始めて(キラキラ)」という話を聞いて、先輩ムーブをかますために話した内容になります。
とにかくこれから説明する「計算用シート」が憎くて憎くてたまらず、ちょっと引かれるほど熱弁してしまいました。
ただ、他の方がどうされているのかや、逆に「計算用シート」を愛用する方の意見も聞きたくなり、増田に書いてみました。
エクセルマクロのお作法とか書きましたが、要するにエクセルマクロで「計算用シート」って色々な意味でよくないよね、という話をしたいです。
3行でまとめます。
〇 エクセルシートはユーザーインターフェース(インプット)か出力結果(アウトプット)のためのものとすべき
〇 データ加工をする場合には、原則配列や辞書型配列(連想配列)に格納して加工を行い、最後の結果だけシートに出力するべき
〇 何事にも例外はある。
エクセルマクロにも色々あると思いますが、今回は下記を想定します。
日付や人物名などを入力し、データベースや別のエクセルファイル、別のシートから取得したデータを入力された値を基に加工し、加工後のデータをシートに出力する
この場合、入力欄があり編集可能なシートがユーザーインターフェース、最終的に加工されたデータが出力されるシートが出力結果です。
(もちろん、ユーザーインターフェースの別の欄(セル)に出力する場合もあるし、その場合はユーザーインターフェースと出力結果が一体のものとみなします。)
また、データ用シートは同じエクセルファイル内に基となるデータが含まれる場合を想定します。
(これ自体が非推奨で、SQLデータベースかせめてAccessを使え、という意見はありますがそれは別にして…)
ではここで定義する計算用シートとはなにかというと、文字通り計算を行うためのシートです。
1.元となるcsvファイルをエクセルに読み出してシートに格納
2.そのデータは日付が数値型になっているので、日付(数値型)の入った列を文字列に変換した日付(文字列型)列を新たに作成
これは極端な例ですが、とにかく変数や配列を定義せず(あるいはエクセルのセルオブジェクトを変数のように扱い)、エクセルに値を入力し、それを直接加工することで目的となるデータ加工をしたり、様々な処理をします。
なんかこんな感じの処理をしているエクセルマクロ、どこの会社でも腐るほどあるんじゃないでしょうか。
ある程度マクロに慣れた気の利く人なら、このシートはロックや非表示にして、ユーザーから触れないようにするでしょう。
・・・これ、やめたほうが良くないですか?。
ある程度詳しい人なら同意してくれると思いますが、このやり方でダメな理由はいっぱいあります。
後で説明する配列や辞書型配列(連想配列)と比べると格段に処理が遅いです。
ちょっと詳しい人が知っている「画面更新の非表示」を駆使しても、配列を使った処理からみれば止まったハエです。
いったんエクセルシートにデータを格納して加工しているので、コードとエクセルシートを両方見る必要があり、とても読みにくいです。
変数として命名されていないのも致命的で、処理の意図が余計に分からなくなります。
計算用シートを事前に用意して、別のセルに関数を格納しておき、マクロと関数を使ってデータ加工をするものも見たことがあります。
あまり知られていませんが、セルの最大文字数は32,767 文字です。
セルの最大文字数を超えると自動的に隣のセルに値が入り、シートが滅茶苦茶になります。
他にもエクセルの数値を丸める自動変換の仕様とか文字列→日付の自動変換とか、いくつものバグに苦しめられます。
できる人だと、いちいち最大文字数が多い場合の処理を書いたり自動変換機能を殺したりしてくれますが、そんなことに手間をかけているから日本のGDPは上がらないんだと思います。
他にも、データが大きくなると処理が重くなり不安定になる、計算用シートを人が触ってしまうリスクがある、などいくらでも理由は上げられます。
(逆に利点は、目の前でガチャガチャ動いてスーパーハッカーになった気分になれるくらいしか思いつかない・・・)
配列を使いましょう。
配列とは何ぞや、という人はググってください。
配列にデータを入れて、データ加工は配列や変数に対して行い、一番最後の出力だけセルに値を格納する。
個人的にオススメしたいのは辞書型配列(連想配列)で、うまく使うとデータの管理が簡単になり、処理も爆速になります。
(参考)【VBA】大量データから高速で値を検索【Dictionaryを使う】
csvファイルもなまじエクセルで開けるだけに別のブックやシートで開きがちですが、これは悪魔のささやきです。
直接ファイルを読み出してLine InputやSplitで配列に格納しましょう。
エクセルとして開くやり方はコード書くのは簡単でも、実行時間に天と地ほどの差が出ます。エクセル開くと処理もめちゃ不安定です。
(参考)Excel VBAでCSVオープンするときのパフォーマンス比較
いや、冒頭のマクロを書く人の気持ちも分かるつもりです。自分もコードを書き始めたころは全部シート上で操作していました。
冒頭のマクロのほうが直感的なんですよね。自分が手で書くことをマクロにやらせる、というマクロ本来の趣旨にはあっていますし。
途中の計算過程もすべて目の前で展開されるから分かりやすいです。
ただ、それではダメなんです。。。処理は遅いし挙動は不安定だし後で改修・保守する人が死にます。
あと、エクセルシートやセルは当然エクセルにしかないので、エクセルマクロ(VBA)から他の言語に移れなくなります。
自分もエクセルマクロの里の出なので、計算用シート脱却には苦労しましたが、苦労して会得した配列や辞書型配列(連想配列)のスキルはそのまま他の言語に活かすことができました。
配列の中身を見る方法は別にある(ローカルウィンドウやDebug.printを使うなど)ので、リハビリに取り組んでほしいです。
(参考)VBA デバッグの仕方
計算用シートを許容できる、使うべきケースもあると思います。。
個人的には、
(最後のは、なんでも自分で確認しないと気が済まない上司の発注で、意味不明と思いましたしたがしぶしぶやりました。)
この場合、インプットのエクセルシートに直接加工するのは論外なので、計算用(加工用)のシートを用意してそこで操作を行うことは必要だと思います。
他にも、こういうときは「計算用シート」があったほうが良い、という状況があれば教えてもらえると嬉しいです。
そもそもツッコミとして、「データ加工するならエクセルマクロを使わずにpythonとかRとかもっとまともな言語使えよ」という言葉が来そうな気がします。
ただ、個人的にはエクセルマクロ(VBA)は大好きですし、初心者にもおすすめしたいです。
自分のような非エンジニアだと、セキュリティの関係などでPythonの開発環境とかすごく用意しにくいんですよね。
(あと、コマンドプロンプトの真っ黒な画面が怖かった)
その点エクセルマクロは、開発環境の用意はプロパティでチェック項目を一つオンにするだけだし、入門書がたくさんあるし、セルの挙動を追えば視覚的にプログラムを理解できるし、初心者に優しいです。
(そのやさしさが上述したとおり悪魔の罠なわけですが。)
最初は計算用シートに頼ってでもエクセルマクロからプログラミングを始めて、本格的なデータ加工をし始めたあたりで計算用シートという諸悪の根源から脱却する。
さらに本格的なデータ処理を行うために、PythonやRなど別の言語を習得したり、エクセルからSQLデータベースやACCESSなどに切り替えていく、というプロセスがいいのではと個人的に思います。
いつの間にか、別名保存がPSD他レイヤー構造を保持した形式でしか保存できず、pngで保存するにはコピーを保存で保存しなければいけなくなっていた。
ファイル名も毎回、新しいファイルのコピー.pngみたいな名前が標準で設定されるので余計な部分を手動で削除しないといけない。
こう言う細かいところの操作性をバージョンごとに変えるなよ。君何年この仕事やってるの?ショートカットに対する動作がバージョンごとに変わったらユーザー困惑するでしょ?
なんでそう言うこと言われないと分からないし、言っても治さないかな?そんなことやってたら、信用失って将来この業界でやっていけなくなるよ?
煽りじゃなくて聞きたい
まず、どう考えても芸術以外の対象で生成AIがなくなる未来はもう絶対にあり得ない。
コード自動生成は米国のIT界隈はおろか日本ですら一瞬で普及した。
自然言語処理や事務ソフトウェア自動操作も欧米では6割以上導入、日本も大企業はマイクロソフト経由で入り始めている。
普通に考えて、生産性が違いすぎるし、利益を得る欧米が著作権を根拠にこれ規制するとかありえないだろう。
プログラムのコードが特許じゃなく著作権で管理される流れとかを少しひも解いても、欧米が大企業に有利な方向にもってくに決まってる。
この状況でイラストだけ規制されますとかいう流れ、マジでありうると思ってる?
芸術は別枠だからEUとかの活動家が頑張ればワンチャンあると思う?
どういう展望を持ってるのか疑問なので聞きたい
冠婚葬祭以外でスーツもろくに着たことのない人間が、まともな職業に転職することは可能ですか?
一年間にこれを教えましょうとかこれをやらせましょうとか学習指導要領で決まってるわけ
国が、文部科学省が決めてんの
法的拘束力があるかどうかは微妙なラインだけど無視すれば訴訟のリスクもある
土曜授業がなくなって久しいのにそれを考慮せず
減らすどころか英語学習を小学生のうちからやれとかPCやタブレット操作を覚えさせろとかディベートやらせろとかあれこれ詰め込んで
国のせいで予定がギチギチになってる
アレルギー持ちや発達障害の子はどんどん増えていくし保護者も躾とかろくにしないから色んな「対応」でどんどん時間が過ぎていく
時間余ったから好きな本を読んでいいとか外で雪遊びするかとかなんかビデオ見るかなんて余裕はなくなって
削られるのはそういった遊びの時間
担任が個人の趣味で子どもに意地悪をして憂さ晴らしするために年間を通して給食の時間を勝手に短く設定している!!みたいな妄想に憑りつかれている奴が多すぎてマジかってなる
もしお望み通り給食の時間をなが~~く取ったら学習指導要領をこなすために授業がよりハイスピードになって落ちこぼれる子が増えるだろう
というかツルツルした食べ物が何かの拍子にスポッと喉に入り込んでしまうとか大人でも年間通したら数十人か数百人か知らんけど死因としては稀にとはいえ存在するものだろう
週末に居間でユリイカ1月号を読んでいたら、遊びに来ていた2歳の甥っ子に取り上げられた
硬い紙でできた厚い本をパラパラとめくっては楽しそうにしていた
私が絵のあるページの方がいいかと開くと、パラパラと風を起こすようにめくり繰り返す所作がただ気に入ったらしく絵を見たりはしていなかった
顔に近づけすぎたり、紙で手を切らないように眺めていたら、「読み聞かせ」と言ってきた
詩か追悼文かpanpanyaの評論しか載っていない雑誌を家族の前で甥っ子に音読する気はしなくて困っていると、
さきほどCMか何かを見て「どりゃぇもん」と彼がつぶやいたのを思い出した
棚から『のび太の宇宙開拓史』の漫画版を持ってきて、甥っ子に差しだした
今度は絵ばかりの漫画なので、甥っ子は指差しをして、「こえだえ?(これ誰)」と繰り返し聞いてくる
「ジャイアン、それはスネ夫。それもスネ夫だね。それはのび太。それは中学生」と答えた
なんか先ほど、「どりゃぇもん」と言っていた割には薄い反応で、カバーをめくりとって遊びだしていた
そのあとでPCを触っていたら、「ピぽピぽして」というので、キーボードを操作して、サブスクでドラえもんを検索して、ドラえもんを1話分見せた
適当に選んだ、ドラえもんが風邪を引いてドラミちゃんが看病しようとする回
彼は私の足の上に座っていたので表情は見えなかったけど、「こりゃがどりゃぇもん!」と楽しそうに言った
「これもドラえもんだよ」と先ほどの『のび太の宇宙開拓史』を指さすと、ぶるんぶるんと頭を振って否定をされた
甥っ子にはまだたいして言葉も通じないし、どこまでの思考能力があるのかは知らん
だから、彼の言葉と動作の意図が「アニメで動いているのが僕が見たかったドラえもん」という指摘なのか「この漫画のキャラはドラえもんではない」という直接の否定なのかはわからない
たしかに漫画版と今のアニメのドラえもんは、頭の形や色見が違うなと思いつつ、「F先生のドラえもんがドラえもんじゃないわけないけどな」という気持ちがムクムク浮かんできた
わさび声のドラえもんは原作に近い生意気さと友達感を増しているとどこかで読んだなと思いつつ、注射を嫌がり、ドラミちゃんから逃げ回るドラえもんを二人で眺めていた
これが彼の好きなドラえもんなんだなと思いつつ、私も大山のぶよ声の保護者っぽいドラえもんと、『のび太の創生日記』みたいな入り組んだ話が子供の頃から好きだったんだよなとか考えていた
あーでもないこーでもない…macだとこんなに便利とかWindowsだと標準装備だぞとかバカなのかなと思いながら。
■Alfred
Spotlightで十分では? appの起動もファイル検索も電卓()もできるじゃん。
一回入れてみたけどよくわからんかった。細々したコマンド入力するのもダルい。マウス操作で良い。
トラックパットでもちもち仕事してる人向け?マウス縛りしてるひとにはいいのかも。
キーボードに集中していて、マウスに持ち替えるたび意識が阻害されるタイプの職種のひとには合ってると思う。
■BetterTouchTool
わからない。いらない。
やっぱノート民が主語を拡張してmacで〜〜〜とか言ってるだけな気がする。
トラックパット上で3本指4本指で肩をすぼませてちまちま操作するならマウス使ってダイナミックに操作しようぜ。そっちの方がストレスフリーよ。
■Karabiner-Elements
イキってUSキーを買ったバカタレが英語/かなキーの割り当てのためだけに導入するアプリってイメージ
あのあの、最初からJISキーにすればいいですよね。え、JISキーは美しくない? シンプルじゃない?
見た目のためにわざわざ外部アプリを入れてごちゃごちゃ設定する方が美しくないしシンプルじゃないと思います。
ハード面で余計な選択をしてその解決のために余計なソフトを入れるってかなり美意識を疑う。クソみたいなマッチポンプ。
■Yoink
ちっちゃい画面で仕事してるひと向け?
■JeditΩ
■Clipy
まあそれとは別によく使う文章を登録できるので仕事上良く使う注釈などは登録している。
■JumpDesktop
出先でiPadから自宅のMacを操作できるので便利。ノート買っとけという話ではある。
クソデカファイルをDLしても実際にDLしているのは自宅のマシンなのでモバイル通信残量を使用しないというのはノートと比べた際の利点か。些細ではあるが。
■SPAi
神。イラレ上でスクリプトをショートカットで実行できる。クソ便利。戻れない。
■ParallelsDesktop
いちおうそれだけではなく、客からWMVで欲しいと言われた際にエンコードのためだけに使用します。
Mac版Adobe製品だとWMVにエンコできないんですよね。たまげたね。
エディタ。買い切りなのがいい。iCloudに保存してMacとiPadとの反復作業が可能。
■Lok Board
入れてみただけ。まるでデスクトップのようにiPadを操作できるが、あらかじめ定められたアプリしか使用できないので自分の用途には合わなかった。
増田が素晴らしいなんて思わないがヤフコメが素晴らしいとか民度高いとか正気を疑うかニワカを疑う
掲示板やSNSだと運営がコメントの削除や操作が行き届いてるとリベラルからの評価が高くなり(旧Twitterや現ヤフコメ)