inosyanのブログスマートフォン用の表示で見るinosyanのブログプログラム関連の話題を中心に掲載しますこの広告は、90日以上更新していないブログに表示しています。いうサービスを知り、そこで毎日英語を勉強しています。英語は僕にとっては長年克服できないでいる壁で、通勤電車の中で英単語を勉強しているのですが、それだけだと足りない気がしていた中、良いものを見つけました。Duolingoとはサイトには、Duolingoは、世界で最も利用者数の多い無料オンライン語学学習プラットフォームとあります。このサービスは基本無料で、PCでもスマホでも受けられるサービスなので気軽にはじめられます。英語に限らずいろんな言語を習得できるDuolongoのユーザーは、英語を勉強したい日本人だけではありません。Duolingoには、いろんな母国語の人が様々な言語を習得するためのコースが用意されています。英語が母国語の人なら、スペイン語、フランス語、ドイツ語、日本語などの中から学習したい言語を選ぶことができます。残念ながら、日本語が母国語の人は英語しか選択肢がありません。このサービスが他の言語にも対応してくれると嬉しいのですが、英語をマスターすれば英語話者用のコースから他の言語を勉強すれば良いので問題ありませんw目標がわかりやすいホーム画面は学習項目のアイコンが並んでいるだけのシンプルなものです。下にスクロールしていくと、フクロウ(名前はDuo)のトロフィーがあるので、ひとつずつクリアしていって最後までたどりつくのが目標なんだということがわかります。アイコンの上に数字が書いてありますが、これは学習レベルで、はじめは1からスタートし、規定量のレッスンを終えると次のレベルに上がります。はじめは飛び級テストをうけてガンガンに進もう下にスクロールするほど難しくなるようで、学習項目がチェックポイントで区切られています。レベル1の時は順番に項目をクリアしていかないと、次のチェックポイントより先の項目が選べないようになっています。チェックポイントは「飛び級テスト」をうけることでクリアできます。簡単すぎるようなら飛び級してどんどん先に進みましょう。学習をはじめたばかりの頃、項目を全部クリアして最後のフクロウのところまでたどり着けば終わりだと思っていました。おわりではなく次のレベルがありました。すごい量のコンテンツが用意されているようですね。上から順に下までいくのを繰り返して、いまは3周目(レベル3)にチャレンジ中です。正誤判定がすばらしいこのサービスで僕が一番すごいと思ったのは、判定能力のすごいところです。bread.の日本語訳に対し、僕はその緑色の動物は白いパンを食べますと書いて正解しましたが、別の正解例としてその緑色の動物はその白いパンを食べます。僕の回答には「白いパン」の前に「その」がないけど正解だと判定してくれています。翻訳の正解はひとつではないので、ユーザーが自由に入力する文章は様々なパターンがありますが、それらを正誤判定するには、文字列の完全一致ではなく文章として解析しなければなりません。プログラムでそれを行うのは大変ですが、それができているところがすごいです。(もしかしたら、ものすごい数の正解文例をデータベースに持っている可能性もあり、システム的にもそっちのほうが作りやすい気もしますが、それはそれですごいです)また、別の問題で彼女は自分は元気だと書きます。fine.が提示されました。なかったけど正解にしてくれました。彼女が眠るといつでも私は遊ぶ。sleeps.と書いて正解しました。play.が提示されました。僕が入力した文章とは全く異なりますし、しかも「スペースを入れ忘れています」と指摘されています。time」が正解です。スペルミスは1箇所だけなら正解にしてくれるようで、しかも正解例と全く異なる言い回しでも正しければ正解としてくれるところが素晴らしいです。いつも正しく判定してくれるわけではない正誤判定は素晴らしいのですが、それでもたまに納得のいかない判定のときもあります。you?の日本語訳に対し、僕はあなたはどこですか?と書いて不正解になり、正しい訳としてどこいるの?が提示されました。自分の回答も間違ってないと思うのですが、そんなときは「会話する」を見てみましょう。そこはユーザー同士が意見を言い合う場所で、他のユーザーから参考になる意見が聞けます。僕以外にもこの正解例に不満を持っている人がいるようです。サービスの向上のため、レポートすることもできます。自分の回答が正しいと思うなら「私の答えは正しいはずです」にチェックを入れて送信しましょう。スマホ版もあるけどPC版がおすすめDuolingoはPCのブラウザでも、スマホのアプリでもでき、学習の進捗は同期されるので両方を使うこともできます。UIもほぼ同じですが、すこしだけ違いがあります。回答の入力方法ですが、PC版はキーボードを使って入力する方法と、単語帳から選択する方法のどちらかを選ぶことができますが、スマホ版は単語帳から選択する方法しか選べません。単語帳から選択スマホはPCより文字を入力しづらいので仕方ないのかもしれません。単語帳から選ぶ方式では、単語がヒントになってしまうので、ゼロから文章を考えるより簡単になってしまいます。それに、タイピングが早ければキーボードで入力したほうが早く、学習中はキーボードだけですべての操作ができるので、スピーディーに進めることができます。スマホ版には発音をチェックしてくれる機能があります。この機能はPC版にはありません。理由はわかりませんが、PCにはマイクがついてないものや、周りに人がいる場合があるので、そのことを配慮しているからしょうか。人前でのスピーキングするのを恥ずかしがる日本人は多いと思います。スマホなら一人になれる場所にいけるけど、PCだと必ずしもそれが可能ではないですからね。PC版でもこの機能をつけてもらいたいです。マイクがない人や、スピーキングをしたくない人のためにOn/Offを切り替えれるようにしてあれば問題ないと思います。継続させる仕組みそもそも僕は好きで英語を勉強しているので、動機づけをしてもらわなくても続けることはできると思います。連続して学習した日数が増えていくのは楽しみです。炎のアイコンがそれで、いま29日間継続中です。学習を開始して以来、まだ一度も学習を休んだ日は無いのですが、もし一日あけてしまうと0になってしまうのだろうと思います。0に戻ってしまうのはもったいない気がするので、毎日やるようにしてます。ひとつの動機づけとして、リンゴットというDuolingo内の通貨があり、学習によってそれが増えていきます。これは僕にとってはそんなにモチベーションにはなっていません。いうのも、リンゴットでできることがあまりないからです。PC版では、リンゴットを賭けて7日間連続学習できたら倍にする「ダブル・オア・ナッシング」や、制限時間付きで学習できるようになる「タイマー付き練習」などが買えるようです。スマホ版ではそれ以外に、フクロウのキャラクター「Duo」のきせかえアイテムを買えるようです。PC版にないのかは不思議ですが、スマホ版のほうが若い人を意識した作りになっている気がします。英語はコツコツ毎日やる事が大事なので、連続日数が途絶えないように、あるかどうかわからない全クリアめざして頑張りたいと思います。前回の記事「指輪型ガジェット「ORII」のBackerになった」で書いたように、音声アシスタントに興味がでてきたので、Googleアシスタント用のアプリを作ってみました。inosyan.hateblo.jpこちらが実際に動いている様子です。Googleアシスタント用アプリ「バトルゲーム」を公開しました。Homeで「バトルゲームにつないで」と言うと起動します。興味を持ってからアプリを作ってリリースするまで、そんなに大変ではありませんでしたが、いくつか注意すべき点もあるので開発に興味を持った方のためにメモを残します。作り方の手順についてはいろんな方が説明されていますのでそちらをご覧ください。Googleで新規にプロジェクトを作り、Actionsでアクションを作るとDialogflowにエージェントが作られます。DialogflowにはFulfillmentという画面があり、そこがプログラムを書く場所です。EditorをEnableにすると、サンプルのプログラムを見ることができます。サンプルコードはこのようになっています。agent.handleRequest(intentMap);});コメントアウトしてある関数が2箇所あります。コメントアウトを解除してintentMapに紐づけている箇所のコメントも外します。ところはあらかじめ作っておいたインテントの名前を書きます。ほうは問題ないのですが、googleAssistantHandlerのほうを有効にして、シミュレーターで実行しようとするとエラーが出ます。response.これだけだと原因がわからないので、プログラムで何が起きてるのかログを見てみます。画面下のリンクからFirebaseのログが開きます。ログにはこのようにありました。(internal/process/next_tick.js:73:7)agentの内部で起きている問題のようです。バージョンを変えます。"2.4.0",に変更すると直ります。サンプルとバージョンの不一致の問題なので、近い将来には解決すると思います。デプロイまでに時間がかかるのでその対策プログラムを修正してDeployボタンを押すとデプロイを開始します。するとデプロイが終わったと表示されます。この時にはまだシミュレーターで見ても修正が反映されていません。反映までにはここから1〜2分ほどかかるようです。Intent」の最初のセリフにバージョンを喋らせています。作ったアプリをリリースするにはプライバシーポリシーを用意しなければなりません。ほとんどの人は作ったことはないと思います。Googleもそこはわかっているようで、テンプレートを用意してくれています。選ぶと、このようなダイアログが開きます。リンクを開くと、テンプレートのドキュメントが開くのですが、テンプレートの説明は書いてあるのに肝心のテンプレートがありません。テンプレート内容が書かれていないサンプルドキュメント運良く僕は、テンプレートが書かれているバージョンのリンクを知っていました。リンクには、別のドキュメントへのリンクが設定されていて、そちらのドキュメントにはテンプレートの文章が書かれていました。テンプレート内容が書かれているサンプルドキュメントこのテンプレートの指示どおり、${APPNAME}と${DEVELOPER}の箇所を自分のアプリ名と開発者名に置き換えて、手順の箇所を削除して共有設定を誰でも見れるようにしたものをプライバシーポリシーとして申請しました。翌日、審査に落ちたとのメールが来ました。理由はプライバシーポリシーが日本語では無かったからです。僕が作ったアプリは日本語用だったので、その場合は日本語のプライバシーポリシーが必要とのことでした。日本語に訳して再提出したら審査に通りました。ご参考までにそのドキュメントのリンクを載せておきます。これを元に作成する場合は、アプリ名「バトルゲーム」と、開発者名「イノシャン」は、ご自身の情報で置き換えてください。プライバシーポリシーアプリは「終了」で終わらせる必要があるはじめの審査で落ちた理由はもう一つあり、それは「終了」の言葉でアプリが終わらなかったことです。アプリが終了したときに連勝記録を喋らせたかったので、デフォルトのインテントは使わずFulfillmentに処理を書いて起き、「中断」という言葉でその処理を行うようにしていました。「終了」という言葉でも終わらせないといけないようです。「中断」を「終了」に変え、念のため似たような言葉に反応するようにしました。呼ぶと終了させることができるようです。agent.add(conv);会話ごとに保持する変数の扱い作り方のサンプルを見ると、例えばホテルの予約システムの場合、システムが提示した選択肢の中からユーザーが選んだものを会話中システムが保持することは出来るようです。「連勝記録」のような、ユーザが選択肢から選ぶようなものではなく、システムが増減させることのできる変数をどうやって作るのか、はじめは分かりませんでした。いう変数に連勝記録を保持するとします。外側に置いておけば、連勝記録は保持されます。うまくいったように見えますが、これがうまくいくのは同時にプレイしているユーザーが一人の時だけです。2台の端末から同時にアクセスするとどちらも同じ連勝回数になってしまい、混乱してしまいます。このことから、どうやらこのプログラムは、会話ごとに別のインスタンスが作られるわけではなく、1つのインスタンスがすべての会話を処理していることがわかります。変数はテーブルにして、会話ごとにデータを分けるようにしました。会話のセッションごとに違う値が入っているので、キーとして使えそうです。data;ただ、このままでは会話ごとにデータが増えるのでメモリが心配です。終了コマンドが呼ばれたらdeleteするようにはしていますが、途中で会話をやめるかもしれず、そうなるとデータが残り続けてしまいます。会話ごとのデータの更新日も記録し、1日以上経った古いデータを消す処理を会話の開始時に行うようにしています。});}もし1日に何百万人もアクセスするようなコンテンツなら、全件ループするこのような方法は良くないですが、GoogleアシスタントやDialogflowはアクセス数の上限があるのでその心配はありません。DBを使う手もありますが、今回のゲームはシンプルに作りたかったので使いませんでした。スマートなやり方があるのかもしれませんが、今回はこうしました。いくつか注意が必要な箇所はありましたが、それでもリリースまでわりと簡単に出来て面白いと思いました。審査も1回落ちましたが申請して翌日には結果が返ってくるので合計2日しかかかりませんでした。開発は絵を書くこと以外はすべてWebブラウザ上で出来ました。Editorで書きましたが、行数が多くなるとブラウザでは狭いので、ローカルで書いたものをデプロイするほうが良いかもしれません。Editorで充分です。気軽にできるので趣味でプログラムを書く人にもおすすめです。23:37Googleアシスタント用アプリ「バトルゲーム」をリリースしてわかった開発の注意点Tweet広告を非表示にするもっと読むコメントを書く2018-11-06指輪型ガジェット「ORII」のBackerになった僕はガジェット好きなので、たまにKickstarterのようなクラウドファンディングを利用するのですが、久々にグッとくる指輪型のガジェット「ORII(オリー)」を見つけました。【プロジェクトサイト】指がスマホになる!多機能をスマートにこなす、ウェアラブル革命「ORII」このガジェットの最大の特徴は「指を耳に当てて音を聞ける」です。骨伝導なので音は周りに漏れず自分だけに聞こえます。指がイヤホンがわりになるので、イヤホンを持ち歩いたり装着する手間がありません。指一本で電話がかけられる点が、おそらく多くの人の目を引くセールスポイントだと思いますが、僕は普段あまり電話をしないので関係ありません。それより期待しているのは音声アシスタントとの連携です。音声アシスタントは面白いのでたまに使いますが、普段スマホのスピーカーはオフにしてあるので、音量をあげるかイヤホンを繋げなければなりません。周りに人がいると音量を上げれないし、イヤホンを挿すのも面倒なので、結局音声無しでスクリーン表示だけで利用します。それだと面白さが半減してしまいます。人としゃべっている感覚で、音声で返事が返ってくるほうが断然面白いです。これがORIIなら、でいつでもどこでも音声アシスタントを使えます。指を耳に当てるだけなので気軽です。ORIIでやりたいことを挙げてみました。ニュース記事の中の動画などの音声をイヤホン無しでも聞きたい手元にスマホやパソコンがない時でもネットで調べ物がしたい自分で音声アシスタントのアプリを作りORIIから呼び出したい特に3番目をやってみたいです。音声アシスタントについて知らないのでこれから調べますが、場所やシチュエーションに関係なくいつでもこれが利用できれば、やれることは無限です。事前に音声アシスタントについて調べてみたくなりました。ORIIの情報を見ると、音声アシスタントとして「Siri」と「Googleアシスタント」の2つが挙げられていました。Alexaについては書かれていませんでしたが、もしかしたら動くかもしれません。僕のスマホはAndroidなので、素直にGoogleアシスタントをターゲットとして考えてみます。開発の仕方のちょっと調べればすぐに見つかる良い時代です。DialogflowでGoogleアシスタント対応アプリを作成しようしかし、気になることもあります。それは......周りに人の居る静かな場所では音声コマンドを使いづらい人がいても居酒屋のようなガヤガヤしたところだったら平気ですが、電車の中ではちょっと難しそうです。解決策がないか調べたところ、面白い記事を見つけました。これで恥ずかしくない!?声を出さずに「音声入力」できるシステムをMicrosoftの研究者が開発まだ研究段階ですが、この「SilentVoice」がデモンストレーション動画の中に出て来た指輪型のデバイスに応用できれば、人目を気にせずに音声コマンドを使えそうです。発送は12月末予定とのこと。プロジェクトの成功を期待します。~フォルダの見た目~前回は、カスタムブロック1のコードのうち、namespace(名前空間)2がカスタムブロックのフォルダの名前になることについて説明しました。今回はフォルダの見た目を変える方法ついて説明します。始まる箇所がありますね。これらはプログラムとしては認識されない「コメント」と呼ばれる部分で、実際のプログラムの動きには影響を与えません。コメントはそのコードがどんなものなのか、他の人や自分があとで見てわかるように説明を書いておくためのものです。*/で囲まれたコメントには、そのすぐ下にあるコードの説明を書きます。部分にマウスオーバーすると、その文章がポップアップされます。これは、他のコードから参照するときに説明が見れるので便利ですが、別に書かなくても構いません。ついているところに注意してください。//%で始まるコメントが名前空間の上に書いてあると、その名前空間がカスタムブロックのフォルダであることを表します。名前空間の上に書いてるこの部分に注目してください。icon=""の3つが書かれていますね。これらのそれぞれの役割について説明します。フォルダの順番フォルダはこのように並んでいますね。「INOSYAN_TESTAPP」が一番上に来ています。数字が高ければ高いほど上に表示されます。いうファイルを見てみてください。そこに、そのほかのフォルダのweightが書かれています。部分を変えることで別の色にすることができます。#(シャープ)」とそれに続く16進数3で表します。強さで表し、2桁の16進数にしたものを3つつなげて書いたのです。(10進法で17)で、緑の成分が多いので緑色をしています。icon=""色を表すもう一つの方法に、色名で表す方法があります。(purple)にしてみましょう。icon=""他にもいろんな色があります。フォルダのアイコンカスタムブロックのフォルダに使われているアイコンは、実は文字と同じ方法で表示されています。値を変えることで、他のアイコンに変えることができます。エディタ上のアイコンの値はただの四角形にしか見えません。表示されるアイコンは、三角フラスコの形をしているのに不思議ですね。この四角形にしか見えないところには、Unicode(ユニコード)4がはいります。四角にしか見えないかと言うと、エディタが使用しているフォント5がそのアイコンのコードに対応してないからです。Unicodeは世界中の文字(図形を含む)を扱うためのものですが、フォントデータはUnicodeの文字すべてに対応しているわけではありません。表示できない文字コードは四角で表示されます。カスタムブロックのフォルダを表示するのに使われているフォントは、アイコンのUnicodeも表示できるものが使われているので、ちゃんとアイコンとして表示されます。アイコンの値は、他の方法を使って指定することができます。icon="\uf118"に置き換えてみましょう。Homeに戻って再びプロジェクトを開くと、アイコンがフラスコからスマイルに変わっていますね。f118のように、Unicodeの文字にはアルファベットと数字を組み合わせた記号が割り当てられています。検索すると、スマイルのアイコンが出てきますね。詳細ページをみると、Unicodeの記号f118がわかるので、カスタムブロックに使うアイコンには、それを指定しましょう。プログラムで指定する際には、ほかの文字と区別するために記号の前に\nをつけます。アイコンは他にもたくさんあります。かっこいいアイコンを見つけたら、そのUnicodeの記号を設定してフォルダのアイコンとして表示されるか見て見ましょう。表示できない場合もありますが、多くのアイコンに対応しているようです。作るカスタムブロックですので、かっこいいアイコンを設定しましょう!カスタムブロックとは、ユーザーが定義したプログラムブロックのこと。JavaScript(TypeScript)で書くことができ、他のプログラムブロックと同じようにならべて使うことも、JavaScriptから呼び出すこともできる。↩namespace(名前空間)とは、変数名や関数名などが重複しないようにするための仕組み。関数名などの名前はコンピューターがそれを特定できるようにするため、それぞれ違った名前にしなければならないが、他の人が作ったライブラリを使ったりプログラムが大きくなると、偶然同じ名前になってしまうことがある。namespaceでプログラムを囲むことにより、他のプログラムとの重複を避けることができる。↩16進数とは、数字の表し方の一つで、16で1つ桁が繰り上がる。ように表すことが多い。↩Unicode(ユニコード)とは、文字コードの一つ。コンピューターでは文字を表現するのに文字コードと呼ばれる符号(記号)を用いるが、Unicodeは世界中の文字を扱えることを目指す。↩フォントとは、文字の形状のデザインのことだが、コンピュータにおいてのフォントは、文字コードを画面に表示するのに使う、文字の形状を集めたデータファイルのことである。1.7.1がリリースされて、この件は修正されたようです。Connectionに無事繋ぐことができました!以下は、2018.10.23当時の状況を記した記事です。Connectionに繋がらなくなった!いつものようにマインクラフトを立ち上げると、バージョンアップのお知らせが表示されました。アプリの自動更新をONにしているので、最新版の1.7.0がインストールされたようです。1.7.0と書いてあります。Connectionの画面が一瞬白くなったのに、プログラム選択画面にならず、IPアドレスの画面に戻ってしまいます。Connectionに繋ぐことができなくなってしまいました...おそらくマインクラフトが最新版になったことが原因なんじゃないかと思い、同じ状況のユーザーも他にいるのではと思いWebで検索たところ、似たような現象の書き込みを見つけました。僕だけではなかったようです。マインクラフトを前のバージョンに戻すマインクラフトを古いバージョンに戻す方法がないか調べてみました。10版にはそのような仕組みは無いし、過去のバージョンも配布されてないようです。いいことを思い出しました。過去のスナップショットに戻せばバージョンアップ前の状態になるはずです。10月19日のスナップショットはすでに1.7.0になっていました。10月16日のスナップショットはまだ1.6.1でした。Connectionに繋ぐことができました。良かった良かった!またバージョンアップしないように、アプリの自動更新をOFFにしました。これで知らない間にバージョンアップしてしまうことは無いでしょう。Connectionの問い合わせ先が見つからず、MakeCodeのフィードバックから問い合わせてみました。今のところ返事がありません。この件は複数の製品が絡むので、どの製品のバグなのか迷いますが、マインクラフトのバグとして報告してみることにしました。1.50ちなみにバグはJIRAで管理されているようでした。バグフィックスされるかもしれないので、新しいバージョンが出てないかしばらく毎日チェックしようと思います。10進展があったらご報告します。~名前空間~マイクラMakeCode前回は、カスタムブロック1のファイルをプロジェクトに追加するところまでやりました。今回は、その中身を見ていきます。ファイルには、あらかじめカスタムブロックのサンプルコードが書いてあります。namespace(名前空間)は、変数名や関数名などが他のプログラムと重複しないようにするための仕組みですが、MakeCode(メイクコード)3では、名前空間がカスタムブロックを入れておくフォルダの名前にもなります。行のcustomの文字が、フォルダの名前のCUSTOMになっていますね。このように、名前空間を大文字にしたものが、カスタムブロックのフォルダ名になります。この「custom」という名前は良くありません。良くないかというと、ありきたりすぎて他の人も同じ名前を使うかもしれないからです。いう名前のカスタムブロックを作って公開したとします。いう名前のカスタムブロックを作っていたとしたら、名前が重複しているのでエラーが起きてしまいます。他の人と名前が重複しないように、名前空間は世界中で自分しかつけそうもない名前にしておきましょう。別のプログラム言語では、ドメイン名4を逆にしたものにアプリ名を付けることが推奨されているものもあります。ような、ドメイン名を逆にする書き方はやめたほうが良さそうです。.(ドット)」より前の文字しか認識しないからです。フォルダを開くと両方のカスタムブロックが混じって入ってしまいます。.comで終わるドメイン名は、世界中にものすごく沢山いるので、ドメイン名を逆さにして名前空間にする方法はやらないほうが良さそうです。_(アンダースコア)」と作品名を組み合わせることにしています。「inosyan」という名前は、世界には他にもいるかもしれませんが、かなり少ないと思うので重複する可能性は低いでしょう。名前空間に使える文字はアルファベットの小文字のみです。大文字を使うとフォルダが表示されなくなります。それに、使える記号はアンダースコアのみです。このように、アルファベットとアンダースコアを組み合わせる書き方を「スネークケース5」と呼びます。文字列が蛇に見えることからそう呼ばれるようです。自分だけのかっこいい名前空間を作ってみてください。カスタムブロックとは、ユーザーが定義したプログラムブロックのこと。JavaScript(TypeScript)で書くことができ、他のプログラムブロックと同じようにならべて使うことも、JavaScriptから呼び出すこともできる。↩namespace(名前空間)とは、変数名や関数名などが重複しないようにするための仕組み。関数名などの名前はコンピューターがそれを特定できるようにするため、それぞれ違った名前にしなければならないが、他の人が作ったライブラリを使ったりプログラムが大きくなると、偶然同じ名前になってしまうことがある。namespaceでプログラムを囲むことにより、他のプログラムとの重複を避けることができる。↩MakeCode(メイクコード)とは、子供向けに開発されたプログラミング学習用のアプリ。パズルのピースのようなブロックをならべてプログラミングできるビジュアルプログラミングと、JavaScript(TypeScript)でのコーディングを両方サポートしているのが特等。マインクラフトと接続し、ゲーム内の操作をプログラミングできる。↩ドメイン名とは、インターネット上でWebページを特定するための住所のようなもの。イノシャンのWebページのドメイン名は「www.inosyan.com」↩スネークケースとは、小文字とアンダースコアを組み合わせた記述方法のこと。文字列が蛇のように見えることからそう呼ばれる。~カスタムファイルを作る~マイクラMakeCode前回、「JavaScriptからプログラムブロック1の切り替えを行うと、コードが崩れてしまうことがあるので、その解決策としてカスタムブロック2を作ると良い」という話を書きました。今回は、そのカスタムブロックの書き方について説明したいと思います。inosyan.hateblo.jpエクスプローラーを開くまず、JavaScriptに切り替えておきます。画面の左下の「>」のボタンを押します。すると、画面左に「エクスプローラー」が出てきます。画面が小さいとエクスプローラーは表示されません。エクスプローラーが見えない時は、画面の端をドラッグして画面を大きくしてください。エクスプローラーの中を見てみるエクスプローラーでは、プロジェクトを構成しているファイルの一覧を見ることができます。はじめは折り畳まれているので、右の「>」のボタンを押して広げましょう。エクスプローラーの中は次のようなファイル構成になっています。main.blocksプログラムブロックのファイル。このファイルを選ぶと、切り替えボタンを押さなくても自動的にプログラムブロックに切り替わる。main.tsJavaScriptのコードを書くためのファイル。エクスプローラーを開いたときは、このファイルが選ばれている。pxt.jsonプロジェクトの設定。タイトルを編集できる。テキスト形式に切り替えると説明文も編集できる。プロジェクトを共有する時に参照される。README.mdプロジェクトの説明を書くためのファイル。マークダウン3という記述方法で書く。整形されて表示される。それ以外の、名前の横に「>」がついているものは、プロジェクトが参照するライブラリのコードです。鍵アイコンがついていて編集できませんが、見ることは可能です。仕組みを知るために見ておくと良いでしょう。名前の横にゴミ箱のアイコンがついているものは捨てることができます。プログラムブロックを使わないのであれば捨てて構いません。これを消すとプログラムブロックに切り替えができなくなります。main.blocksは一度消すともとに戻せないので注意してください。建築を支援するためのライブラリですが、必要なければ捨てても良いでしょう。これは一度消しても、設定の「Extensions」から復活させることができます。これは、このファイルにかかれているプログラム言語が「TypeScript(タイプスクリプト)」という言語であることを示します。TypeScriptは簡単に言うと、JavaScriptに「データ型6」の概念を加えた言語です。JavaScriptと違い、データ型を指定する手間はありますが、数字が入るべきところに間違って文字を入れるといった間違いを、未然に防ぐことができます。カスタムブロック用のファイル「custom.ts」を作るエクスプローラーの横に「+」のボタンがありますね。これは、カスタムブロックを書くためのファイル「custom.ts」を作るためのボタンです。このボタンを押しましょう。Ahead」を押します。これがカスタムブロックを書くためのファイルです。戻り、再びプロジェクトを開くと、ブロックの選択エリアに「CUSTOM」が追加されています。次回はカスタムブロックの書き方について説明します。プログラムブロックとは、ビジュアルプログラムでつかうパズルのピースのような形のブロックのこと。一般的にはブロックと呼ぶが、マインクラフトのゲーム内のブロックと区別するため、ここではそう呼ぶ。↩カスタムブロックとは、ユーザーが定義したプログラムブロックのこと。JavaScript(TypeScript)で書くことができ、他のプログラムブロックと同じようにならべて使うことも、JavaScriptから呼び出すこともできる。↩マークダウンとは、テキスト入力の際に決められた記号を記述することで、HTMLのように見栄えよく表示させることのできる記述方法のこと。↩HTMLとは、ウェブページを作成にするのに用いられる言語。タグと呼ばれる「<」と「>」で囲まれた要素を組み合わせ、表示したいページを定義する。拡張子とは、ファイル名の最後につける、ピリオドに続くアルファベットの文字のことで、ファイルの種類を表す。「txt」はテキストファイル、「js」はJavaScript、「ts」はTypeScript。↩データ型とは、プログラムで使われる変数や引数などの正体がなんなのかを表すもの。「test」という変数があった場合、データ型が「number」なら数字で表すことがわかり、「string」なら文字列を表していることがわかる。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。