あなたの仕事を楽にする お手軽な初心者向けプログラミングとかやりませんか
あなたの仕事を楽にする、お手軽な初心者向けプログラミングとかやりませんか
(旧題)GoogleAppScriptは非エンジニアとつながるためのツールになるカモ
つながるツール(共通の視点)の必要性
やっぱり辛い「コミュニケーション」
とりあえずここでは、
コミュニケーションという言葉を
「相互理解の方法・情報共有行為・文明的な交流」という意味で使います。
とりあえず「お互いにストレスの少ない報連相の基礎」でもいいです。
非エンジニアとエンジニアにとっての「コミュニケーション」
両者の間には
「地球上だけで育った人」
「宇宙船内だけで育った人」
この二つの間に生じるくらい大きな、
「感じているものや表現方法の違い」があるように感じます。
ナンセンスな比喩の話なので読み飛ばしてくれていいですが、
先人に習ってジョークを元に表現しましょう。
地球人 = 非エンジニア
もしもあなたが地球で生まれて、
今まで一度も宇宙に行った事がないとしましょう。
そんなあなたに、重力がない場所でトイレをするための、
正しい知識や経験があることはきっと極めて稀でしょう。
恥じらいなんて捨てて、失敗する前に聞いておかないと、
命に係わる危険な事態に陥ります。
宇宙の旅人 = エンジニア
あなたが宇宙船で生まれて、
船内から出たことが一度もない人だとしましょう。
地上に着いたからと扉を開こうとする周囲に対し、
なんて危険な行為を行おうとするのかと、
心臓が止まりかねない恐怖を感じるかもしれません。
たとえそれが、自分の祖先たちにとって
「極めて常識的な行為」だったと知識にあったとしても、です。
この記事で扱う「エンジニア」という人種
コミュニケーションに困る頃
そもそも「エンジニアリング」とは
語源を辿れば「創意工夫」「解決を考案すること」という意味で、
人生に創意工夫を持ち込もうとする人は、
誰しもエンジニアを名乗ることは可能です。
しかし、その中でも特に、
「工学や数学などのツールを使って問題解決をする人」が、
今回のターゲットであり、想定される読者です。
「うーん、自分はどっちかな」なんて悩むようなら、
ちょっと下のリストを見てください。
自分がプログラマーの後輩を育てる時には、
以下のリストにあるようなステップで
「問題解決に際してそれぞれのツールを活用できる」ように、
こんなパラダイムシフトを得られるように研修の段取りをしています。
- この仕事を自動化させよう・機械に任せようという発想が出てくる。
- 順次と分岐と反復、例外によって、目的の実現と簡易的な実用に必要な処理を実装できる。
(↑ 専門学校なら一年生レベル) - 関数によって挙動を抽象化・限定・命名して記述し、成果物にできる。
- 関数によって挙動の副作用と影響範囲を管理して記述し、成果物にできる。
(↑ 専門学校なら二年生レベル) - 厳密に状態を管理して、特に数値・数式・論理・集合として適切に表現できる。
- インタフェースとメッセージングで、ポリモーフィズムによる租結合な設計ができる。
- 高等数学的な処理と機械的手続きの相互変換ができる。
(↑ 卒業までに頑張ろう) - テスト設計とデバッグ工数計算と品質管理について、実務を任せられる。
- 物理的な実働実務からシステム設計へ、合理的に落とし込み周囲と協調・導入できる
- ゼロトラスト・ベースの処理体制を構築できる。
- 仮想化環境や諸ツールなどを原理的に理解し、活用や採択ができるようになる。
極めて個人的な感想ですが、
このステップに従って訓練を重ねていくと、
それなりに安定してプログラミングなどの能力は伸びますし、
インクリメンタルに成功経験を重ねてもらえる感じです。
こうしてプログラマーとして求められる変化を段階化して見えてきたのですが、
「関数によって挙動の副作用と影響範囲を管理して記述」できるようになる頃には、
訓練を受けていない人と会話する時に、考え方や仕事の段取りについて、
コミュニケーションで生じるすれ違いも大きくなってくるように見えました。
手を取り合ってやってみよう
ぶっちゃけ「理解の放棄から始めよう」
こちらの記事の目的は「とっても楽しいGAS使おうね」ではなく、
「非エンジニアとエンジニアのコミュニケーションを改善しよう」です。
(旧題)GoogleAppScriptは非エンジニアとつながるためのツールになるカモ
この解決方法として全員をエンジニアにするなんて事ができれば便利ですが、
いろんな意味で無理・無駄・無意味なので、
「エンジニアって脳みそ普通じゃないんだな」ってことを、
そうじゃない人に体感してもらうのが現実的だと思うわけです。
(注:極めて偏見に満ちた意見)
そのためにどんな事をしたらいいか
どうしたら仕事が楽になるか一緒に考えたり(要求分析・問題の分解を体験)して、
こういう道具を使いますよっていう認識を共有(文化交流)したり、
一緒に何かを作ってもらおうとする(共通体験)とか、
可能であればプレゼン以外の成果物に貢献してもらう(完成貢献体験)こと。
とりあえず、交換留学するようなイメージで、異文化に触れてもらいたいわけです。
持ち帰ってもらうもの
こうしたステップを踏んだ上で
「明らかに違う文化の住人だった」
「同じような人生を共有するのは難しい」という感想を持ち帰ってもらう。
これに尽きると思います。
同じ環境で育った双子だって、互いに別の自意識をもつものです。
まして、思考回路の文化や積み重ねてきた知識や努力が違えば、
それぞれについて完全な相互理解なんて望むだけムダってものです。
それでも「同じ部署だから」「年齢も近いから」「デスクが隣だから」なんて、
スカンクの●●●より香ばしい理由で「俺の常識はお前の常識」を求められそうなら、
この記事の存在を思い出して、
ちょっとだけ悪戯を仕掛けてみましょう。
「あなたの仕事を楽にして、生産性も一気にあがる、
お手軽で無料な初心者向けプログラミングとかやりませんか」と。
なぜGASなのか
本当は他の環境や言語でも別にいいんです。GAS記事書きたいだけなので。
でも、なんでGASでやるのか、という部分について、
最低限のエスケープくらいはしようと思います。
初心者向けの「推しポイント」
- とりあえず無料で始められる
- とりあえずブラウザで動く
- とりあえず動くまでが早い
- とりあえず業務とかにも即応しやすい(はず)
- とりあえずサンプルさえ見つければ案外イロイロできる
中級者向けの「推しポイント」
- ワードとかエクセルの非同期資料を減らす理由になる
- 権限管理などがわりとシンプル
- だいぶ枯れてきてる
- 入力保管とかフォーマットとかも対応
- デバッグもブラウザで最低限の機能がある。
- 実行失敗もちゃんとログから分かる。
- 定期的な実行が簡単。
- けっこうトリガーで走るので直感的にもなる。
- いざとなったらGCPに移行できる
- ライブラリとして公開もできるので、省力化にもまあ貢献。
- 日本語資料と英語資料が混在しているので、自然と両方読むようになる。
おわりに
最近は入院したりラジバンダリして、
インプットもアウトプットもできない生活をしていました。
ぶっちゃけ既にエンジニア的な仕事はできない状態です。
というわけで、
お炊き上げ的な意味でもって、
誰の役に立つのかも分からないような記事を書いてみました。
あと「知見の公開とその有用性が評価される事で、感謝型経済から資本主義への流れを作る」という姿勢を推したくてQiitaではなくZennにしてみました。
技術記事ではないですしね。
そんな感じの雑文でした。
書いている人
自分の事を少し書かせてもらうと、
少なくても、現在ではアラフォーが見え始める頃で、
ハードからソフトまで「やって」と言われればとりあえず触り、
アッチコッチの会社に呼ばれたり飛び込んだり、
時には「孫請け」ならぬ「玄孫受け」あたりの仕事もしてきました。
とはいえ肝心の技術力は底辺な人だったりします。
「一緒に製作できて心地よかったです」
みたいに暖かいお言葉を頂いた事もありますが、
「二度と来るな」「賠償請求待ってろよ」
こういうお言葉を頂いた回数の方が、圧倒的に多いです。
そういう事なので、うのみはなさらず、
恐らく「こんな駄文でも読まないと死んでしまう!」という、
そんな余裕を十分に活かして、
行間なり反面教師てきな意味なりお好きなニュアンスでもって、
必要な内容を拾っていってください。
書いてある内容の正しさは一切保証しません。
Discussion