プログラミングについて

翻訳アプリはよくできていますが生身の人間のおかしな日本語が面白かったりします

iOSアプリの申請でリジェクトされたので、Appleの指摘に回答する文章を英文を書いていました。

今は頭のいいインターネットの翻訳サイトがあるのでそんなに苦労はしませんが、それでも英文に変換する前にできるだけシンプルな日本語の文章を考え、変換結果に変なところがあれば修正しています。

英語に堪能な方ばかりではないと思うので、私と同じような方は多いと思います。

しかし、ネイティブじゃない人間が書く英文なので、Appleの担当者にとってはずいぶん妙な英文だろうなと想像しています。それはしょうがないですよね。

最近は来日される外国人の方も増えてきて、普通に日本語を喋る方が多くてびっくりしてしまいます。

とはいうものの、そこはネイティブの日本人ではないので、たまに違和感のある表現をされることもあります。

とても流暢に日本語を喋る方でもそうなので、私が書いた英文なんて、ほとんど意味が通じてないんじゃないかと不安になります。

実際は私ではなく、翻訳サイトがちゃんとした英文を作ってくれているので、そんなに心配する必要はないと思いますが。

そういう意味では英会話の方も、外国の方とスマホの翻訳アプリを介してできる時代になりつつあるのかもしれません。

Gmailのスレッド関連で調べたことを備忘録として書いておきます

先日、GmailからGoogle Apps Scriptを使ってGoogleスプレッドシートに書き込むスクリプトを書く仕事の話をしましたが、スレッド関連で調べたことを備忘録として書いておきます。

一つひとつはよく知られている情報だと思います。

取得するメールは、あるWebサイトのメールフォームからGmailに転送されて来ます。

例えば今日は2月2日でスレッドのスタートが2月1日のメール、そこに2月2日のメールがくっ付いているとします。

このスレッドのメールは、「昨日」を指定してもゴミ箱に移らず、「今日」を指定してもサーチできません。

なので、ゴミ箱に移すには「今日以前」を指定してスレッドを全部移すしかありません。一度に削除できるのは最大100件までらしいのでこんな感じ。

var myThreads = GmailApp.search('older_than:0d', 0, 99);
GmailApp.moveThreadsToTrash(myThreads);

実際にはトリガーを使って下の方法でGoogleスプレッドシートに書き込んで行くのですが、上記の削除は毎日深夜にトリガーで実行します。

今日もGmailの基本的なことを調べていたら時間が過ぎてしまいました

昨日はGmailからGoogle Apps Scriptを使ってGoogleスプレッドシートに書き込むスクリプトを書く仕事を請けたけれど、やり始めたらまた基本的なことを知らずに困ってしまったことを書きました。

シートに記入された最終タイムスタンプよりあとのメールを取得するために、GmailApp.search()メソッドの検索演算子after:にUNIX時間を設定したのにうまく行かなかったので、よく確認したらGmailのスレッド表示設定がOFFになっていたという落ちでした。

あるWebサイトのメールフォームのメールが同じ件名で転送されてくるので、果てしなく長いスレッドになりそうです。

スレッドのこと自体よく分かっていないので、スレッド化されないように違う件名でメールを送ってみて、GmailApp.search()の結果を比較していました。

同じスレッドに10時00分と10時20分のメールがあったとして、後者のメールを取得するためにafter:10時10分を指定しても両方拾ってしまいます。

スレッド表示OFFの状態で一方にラベルを付けて、検索演算子のlabel:ラベル名やhas:userlabelsを指定してみても結果は同じです。

また仕事を請けたあとに基本的な知識がなかったことに気付いてしまいました

あるWebサイトのメールフォームのメールがGmailに転送されてくるので、そのメールをGoogle Apps Scriptを使ってGoogleスプレッドシートに書き込むスクリプトを書くことになりました。

すでにシートに書き込まれたもの以降のメールを取得する方法を調べてみると、GmailApp.search()というメソッドのafter:という検索演算子を使うらしい。

Gmailを見てみるとスレッドになっていないので、単にシートに記入済みの最終タイムスタンプよりあとのメールを取得すればいいと思ったのですが、このafter:というのは「日」の指定までしかできないみたい。

何かいい方法はないか調べていたらありました。UNIX時間に変換したものを指定すればいいそう。
https://www.lifehacker.jp/2016/12/161221_gmail_timesearch.html

しかしやってみると、どうもうまくいきません。

もしかして、この転送されたメールってスレッドになってるんじゃない?

日頃からWordPressに触れていないので簡単にできると思って冷や汗をかいてしまいました

数日前、以前WordPressでホームページを作成したお客さんから追加ページを依頼されたけれど、やろうとしたら簡単ではなさそうで困ったというお話をしました。

そのあと他の業務が入っていたのであまり進まなかったのですが、今日何とかできたので記録しておきます。

やりたいことは、会社で今までやってきたイベントの記事、つまりイベントのカテゴリーを年別アーカイブウィジェットで表示させたい。

そして「過去のイベント」というようなメニューをクリックして、最新のイベント記事のある年別アーカイブページを表示させたい、ということです。

WordPressの月別アーカイブウィジェットはカテゴリー指定はできないのですが、プラグインを使えばできるだろうと簡単に考えていました。

プラグインはあるにはあるみたいですが、どうも更新されていないよう。使うのに躊躇します。

プログラマーさんが正確を期して見積もり作業をしているのを見るといつも感心します

数年前WordPressでホームページを作って納品したお客さんから、新しいページを追加して欲しいという依頼がありました。

打ち合わせをしているときはありがちなカスタマイズだと思ったので、簡単に請け負って帰ってきたのですが、実際にやろうとしたら簡単ではなさそう。

インターネットで調べてみてもあまり情報がありません。

プラグインはいくつかあるようですが、更新が止まっていて不具合も出ているようです。

このようなCMSのカスタマイズを含むホームページの制作は、時間があるときに私が請け負って、スマホアプリやPCソフトの開発はプログラマーさんに回します。

私の手には負えないカスタマイズであればプログラマーさんに回しますが、そういうのは最初から大手ホームページ制作会社さんが請け負うでしょうから、今までのところそのような依頼はありません。

ちょうど同じ時期にスマホアプリの案件があったので、プログラマーさんに見積もってもらっているのですが、私のようにいい加減ではなくてちゃんと時間をかけています。

いつも思うのですが、こういうところはスゴイなと思います。

考えてみれば当たり前で、見積もりが間違っていて納品できなかったら大問題ですもんね。

Kotlinの入門書を買ってちょっとワクワクしています

数日前に、プログラミング言語Kotlinのネイティブコードを生成するプロジェクト「Kotlin/Native」がベータに達したというニュースを知りました。

WindowsやWebAssemblyなどのバイナリコードを生成できるとか。

昨年GoogleがKotlinをAndroidアプリの開発言語に採用したことや、Javaが有料化になるなんて話題とあいまって、プログラミング言語の世界は結構動いてるなと感じていました。

そこで今回のニュース。

ついKotlinとはどのような言語か、大まかで構わないので一通り知りたくなりました。

私はプログラマーではありませんし、忙しいのにそんなことをしている場合かというのもあるのですが、プログラマーさんと会話をするためにも・・・というような理由をつけて入門書などを探し始めました。

知らない言語を試してみるのは妙にワクワクする性格なんですね。

長澤太郎著「Kotlinスタートブック」(リックテレコム)というのが定番みたいですが、対象読者がJavaを知っている人のようで、私には無理っぽい。

文系には数式のない量子コンピューター入門書はありがたいです

昨日は関数プログラミングにもモナドという考え方があること、そしてモナドに関連する話題から、最近よく聞くようになった量子コンピュータの話題に行き着いたことを書きました。

実用化はまだ先のようですが、大手IT企業は力を入れ始めているようですので、どういうものか俄然知りたくなりました。

とはいえ相手は「量子力学」です。

物理の数式が載っている本はスルーを決め込んで、Amazonで文庫か新書を探していたら、「量子コンピュータとは何か」(ハヤカワ文庫NF)という本があります。

「1点在庫あり」でしたのでポチッと押しました。しかしカートに入りません。

あれっ、と思って確認すると在庫なしに変わっています。

結局、新書で人気がありそうな竹内繁樹著「量子コンピュータ 超並列計算のからくり」(ブルーバックス)を注文しました。

こちらは数式が出てくるそうですので撃沈するでしょう・・・。

しかしどういう人が私より先に文庫を買ったのでしょう。

文系の人は間違いないでしょうが、数式が載っていないのでコンピュータとは無縁の業界の人の可能性もあります。

関数型プログラミングにも「モナド」があるようです

相変わらずライプニッツのモナドについて気になっていることを検索していたら、関数型プログラミングにもモナドという考え方があることを知りました。

私は関数型プログラミングのことは知らないのですが、つい気になってモナドの入門サイトを二、三覗き見してしまいました。

先日、ライプニッツについては自分なりに内容を消化してからブログに書こう、といっていたそばからまた書いてしまいました。

とはいえ、名前の由来はライプニッツのモナドから来ているのかもしれませんが、哲学のジャンルではないのでまあいいか・・・。

覗いたサイトは入門の入門のような内容なので、サンプルコードは解説を読めば分かるのですが、モナドとは何か、どういうときに使うのかはやっぱり何かを作ってみないと実感できません。

ついAmazonでHaskellの解説本を探して、分かりやすそうな本を注文しそうになってしまいました。

危ない危ない。買っても仕事に使うあてもありませんし、読んで理解する時間もありません。

そう思って他を検索していると、量子コンピューターはモナドで表現できるという内容のサイトを見つけました。

日用品もプログラミングされて驚くような使われ方をするかもしれません

ホームページを使って自社の情報を発信したり、メールフォームで顧客アンケートなどを実施して顧客サービスを行うことも、事務作業でExcelを使うのと同じくらい重要な業務だとは思います。

プログラミングの授業を受けた子供たちが成人して、プログラムを組むことにそれほど抵抗感のない若手社員が増えたならば、ホームページの動きのある表現やメールフォームを使った自動化など、必要だと思ったときに実現できるんじゃないでしょうか。

彼らが社会人になる頃には、Excelのマクロと同じくらいのスキルになっているように思います。

最近体験したのは、ディープラーニングの本を読んでいるとき、見ているだけで頭が痛くなる数式も、Pythonで書いてあるものを見れば理解できたことです。

これはスクリプトをやっていた効用ですね。うれしい驚きでした。

これからは仕事だけでなく、プライベートでもちょっとしたスクリプトを組む機会があるのではないでしょうか。

子供向けのロボットを使ったプログラミング学習キットがあるようですね。

近年いろいろな場面で使われているドローンなども、プログラミングの学習教材になりそうです。

・・・と思い付いて調べてみたらもう商品がありました。