Perlテックブログ

Perlテックブログでは、Perlに関する新しい話題・ニュースを発信していきます。

TeraTermマクロで作るGUIインターフェースの手引き

TeraTermマクロで作るGUIインターフェースの手引きです。

Perlの最も苦手な分野は、GUIです。Perlのプログラムを、GUIにしてみようと思ったら、思いつくのはPerl TK/Perl Tkx。でも、まぁ、モジュールが必要だったり、特別な記述を覚えなくっちゃいけなかったり大変です。

Perlでプログラムを作りながら、エンドユーザーには、GUIを見せる、そんなことが簡単にできるのでしょうか?

はい、TeraTermマクロを使えばできます。なぜなら、TeraTermマクロは、GUIインターフェースの機能を持っているからです。

サーバーサイドLinux/Unixで、Perlを使ってコマンドを作る。そしてWindows上で、TeraTermマクロを作成して、それをクリックする。GUIで、はい、いいえや、リストボックスで選択、そして、それを条件にして、実行。

このようにすると、PerlTeraTermを使って、簡易的なGUIインターフェースをかぶせることができます。

PerlだけでガッツリGUIを作らないで、簡易的にGUIを作れるTeraTermに、ゆだねる。ねっ、Perlらしいでしょ。

AI値付けは本当にAIですか?

AI値付けという言葉をメディアが使っているけれど「AI値付けは本当にAIですか」という疑問にエンジニアの視点から答える。

日本のメディアはAIという言葉を「人工知能」の意味以外で使いたがる

新聞・雑誌・Webメディア通じて、日本のメディアはAIという言葉を「人工知能」の意味以外で、使いたがるという点で、国民に誤解を与え続けています。

メディアが使いたがるのは、大手のスポンサーが、そのように国民に誤解を与えたいからというのがあります。

つまり、AIブームを使って、誤解させたまま市場を拡大したいという動機です。先に、大きな市場をとれば、勝ちだから、手段は、問わない。

AIと呼ばれている物の、2/3は、AIではないという感覚を、僕は持っています。

AI/人工知能は「ニューラルネットワークを使っている機械学習

AI/人工知能という言葉は「ニューラルネットワークを使っている機械学習」について、使わないと非常に誤解を与えます。

「深層学習/ディープラーニング」は「ニューラルネットワークを使っている機械学習」のひとつです。

AI値付けといったときに、実際は20年前からある、需要と供給から価格を計算するアルゴリムである可能性があります。

これは、google広告で、広告の価格を決定するようなアルゴリズムです。

それに、AIという言葉をくっつけて、まるで、最新の技術であるかのように語られています。

本当に、「ニューラルネットワークを使っている機械学習」が使われているAI値付けの可能性もありますが、その精度やパフォーマンスやコストは、古典的なアルゴリズムより優れているのでしょうか? 実際は、トラブルを起こしていませんか?

JSON CGIという概念を提唱する

JSON CGIという概念を提唱したい。

JSON CGIとは

JSON CGIとは、JSONを出力するCGIのことです。

入力パラメーターは、JSONでなくてもかまいません。

Getならクエリ文字列、POSTならurlencodedかmultipartで受け取ります。ファイルアップロードが簡単ですね。

なぜJSON CGIを提唱するの?

定義を見ると、いたって単純です。定義は「JSONを出力するCGI」です。

なぜわざわざ、組み合わせて言葉にする必要があるのでしょうか?

静的HTML + JSON CGI

一つ目は、静的HTML + JSON CGIという組み合わせが、意外と便利だからです。

たとえば、ページ全体を静的HTMLにして、メールフォームの部分だけを動的にプログラムで実行したい。

こういう場合に、静的HTML + JSON CGIという組み合わせは、2020年現在においても、十分に簡単で、パフォーマンスがよく、必要な要件を満たすことができます。

「完全にすべてを動的に描画するPHP」に対して「静的HTML + JSON CGI」を対置できます。ユーザーの選択肢の幅が広がるのです。

JavaScriptコミュニティに好まれる

AJAXを使って、動的な部分はJSONで返してもらって、それを静的なHTMLの中に表示するという考え方を、JavaScriptコミュニティは、好んでいます。

CGIが、小さな部分で、活用されれば、Perlユーザー・Perlコミュニティにとってもプラス、JavaScriptコミュニティにとってもプラスの、Win-Winの関係を築くことができます。

JSONはWebにおけるグローバルスタンダードなデータ交換フォーマット

JSONはWebにおけるグローバルスタンダードなデータ交換フォーマットです。Web業界に、知らない人はおらず、JSONを出力できることは、Webエンジニアにとって、必須の能力といえるでしょう。

一方で、CGIは、開発効率・実行時パフォーマンス・HTMLの描画、たくさんの面で、デメリットをかかえていますし、技術の最先端・人気があってトレンドのある技術ではありません。

Perl/CGIの唯一の残っている強みは、レンタルサーバーで、デフォルトで使える、ということだけでしょう。メールフォームをJSON CGIを使って作っておけば、使いまわしができます。

僕たちは、Perl/CGIが、どれほど、保守性を下げて、開発者を困らせていたかを知っています。

中を見てみると、一枚のCGIファイルに2万行以上のCGIプログラムと、ヒアドキュメントのHTMLが、べた書きになっていたのです!!! ひー。

CGIはトラウマでもあります。

でも「JSON CGI」は JSONを返すだけ。Webにおけるグローバルスタンダードなデータ交換フォーマットである、JSONを返却するだけに、使用をとどめます。

gitの登場で、保存されたパーミッションと改行コードが確実に配置されるようになった

CGIを配置するには、実行権限と改行コードを常に意識しなければなりませんでした。これが、めんどくせー。PHP最高ー。でした。

2020年現代では、gitが登場し、パーミッションと改行コードを、開発環境のものを保存してくれるので、gitで、静的HTMLとCGIを配置すれば、この悩みは、なくなりました。

サーバーレスアーキテクチャ

JSON CGI」は、サーバレスアーキテクチャーの定義に基づくと、まさにサーバレスアーキテクチャーです(笑)。

信頼できないと安易にいわないで!

信頼できないと安易にいわないで! 心に思い浮かべないで!

オープンソースの信頼性は、利用されることによって、上がっていきます。バグが発見されると、作者は、報告を元に、それを修正します。

「信頼できない」という不信感を、周囲にまき散らすのではなくって

試してみた

実用上問題なかった

信頼できる

というプロセスをとってくださるとありがたいですね。

不正な方法で増やされた数を恐れないこと

数の多さというのは、恐怖や不安をあたえますが

不正な方法で増やされた数を恐れないこと。

検索エンジンスポイル攻撃
・海外への安い外注による偽のいいね
ステルスマーケティング
・互助会

倫理観や良心を持っていない人は、簡単に数を増やせます。

正確な事実に基づくことから、推論しましょ。

RPAによるGUI自動化とPerlによるテキストCUI自動化の違い

RPAによるGUI自動化とPerlによるテキストCUI自動化の違い。

RPAは、すでにGUIになっている画面を自動化します。GUIは、本来、人が扱いやすいように、作られたものですから、この上にさらに、自動化を組み込むことになります。

一方、PerlによるテキストCUIを使った自動化は、プログラムによる自動化です。すべての処理をテキストにすることにより、バッチ処理に組み込むことができます。

二つの自動化の方向性が、今後でてくるでしょう。

皆さんは、どちらを選択しますか?