ブログ内検索
京都環境フェスティバル2020「冬でも楽しめる自然探究」のワークショップで話をしました。

カテゴリー : プログラミング

SOY CMSマニュアルページ作成中

SOY CMSの開発秘話を投稿しました。→SOY CMSの開発秘話
 

PHP8でMacabを使い、任意の文字列の読み方を取得する

例えば、初心者用シューズという文字列の読み方を取得したいとする。読み方を取得する時は、Mecabというものを利用すれば良くて、以前、PHPで形態素解析エンジンのMaCabを使用する為の手順のメモで使ったphp-mecabを利用しようとしたが、PHP8ではマクロの箇所でエラーになり使用できない。Mecab - Wikipediaそこで力技で読み方を取得するコードを書いてみた。環境OS:Ubuntu 20.04PHP:8.0.10Mecabのインストールは下記...

 

SOY ShopのSign In With Googleプラグインでボタンをカスタマイズする

前回のSOY ShopのGoogle Sign-In for WebsitesプラグインをSign In With Googleに変更しましたの記事で、Sign In With Googleに対応した旨を記載した。Sign In With Googleでは、Googleがボタンを自由にカスタマイズ出来るGenerate HTML code  |  Sign In With Google  |  Google Developersというページを用意しているので、今回はジェネレータの使い方を見る...

 

SOY ShopのGoogle Sign-In for WebsitesプラグインをSign In With Googleに変更しました

GoogleからGoogle Sign-In for Websitesを利用していたサイト宛にSign In With Googleへの変更の連絡があったので対応しました。SOY ShopのGoogle Sign-In for Websitesプラグインでボタンの拡張設定を追加しましたGoogle Identity Platform  |  Google Developersページのテンプレートに挿入するタグやスクリプトに大きな変更がありますので、当プラグインを使用している方はS...

 

Raspberry Pi 4 Model Bを購入した

Raspberry Piを購入した。先に購入の目的を挙げておくと、子供にはじめて与えるパソコンはChromebookにすべきか、それ以外の選択肢はないか?を検討するため。Chromebookはプログラミングの教育の端末として向いているか?を調査するプログラミング教室で、一日Chromebook縛りで過ごしてみたところ、Micro:bit関連(シリアル通信周り)でChromebookでは辛いなと思うところがあったため、Raspberry Piに触れたくなった。R...

 

Google Maps APIのジオコーディングのコードをOpenStreetMapのNominatimで書き換えてみた

郵便番号を入力したら半径3km内のすべての町名を取得するの記事で、Google Maps APIのジオコーディング(住所から緯度経度を検索する)と逆ジオコーディング(緯度経度から住所を検索する)を紹介したが、諸事情によりGoogle Maps APIからOpenStreetMapに書き換える必要が生じたので、OpenStreetMapのNominatimを利用してみた。JA:Nominatim - OpenStreetMap Wiki書き換えてみたと言っても、ほとんど同じだっ...

 

Micro:bitで二種類のサーボモータの動作を比較してみる

Micro:bitでサーボモータの止め方を試すの記事の続き。サーボモータの動きがいまいち分からなかったので、他のサーボモータを購入してみた。色違いのように見えて、全然違う動きをする。先に今まで使っていた緑の方に仕様を確認してみると、Geekservo 9g 360°サーボ起動電圧:2.5 V動作電圧:3.3 - 6 V公称電圧:4.8 V公称電流:100 mA拘束電流:550 mA最大トルク:500 g.cm※参考:Geek...

 

Micro:bitでサーボモータの止め方を試す

環境制御を学ぶ為にMicro:bitでサーボモータを学ぶの記事で、Micro:bitでサーボモータを動かすことは出来たけれども、回転しっぱなしで止められなかった。というわけで、今回はサーボモータを止める方法を模索してみる。今回はブレットボードマニアックのケーキボードが届いたので、ケーキボードとジャンパー線で組んでみる。※ケーキボードはブレットボードの一種ブレットボード - WikipediaMicro:bitとケーキボードを繋ぐために、Vilrosの拡張ボード...

 

環境制御を学ぶ為にMicro:bitでサーボモータを学ぶ

トマト栽培で老化苗を定植したら微量要素の課題が付き纏うまでの記事で触れている植物学の観点から見たトマトの栽培と平行して、施設栽培の環境制御の方も見ていくことにする。とは書いたものの、環境制御についてハウス内の温度を測って、温度によって天窓を自動開閉したり、ファンを回したりといった漠然としたものしかわからなくて、実際にはどのように作成しているのか?は知らない。というわけで、電子工作を一から勉強してみることにした。最初の教材として選んだのがMi...

 

ChromebookでPythonのmatplotlibを試してみた

Chromebookはプログラミングの教育の端末として向いているか?の記事からはじまったChromebookはプログラミング教育の端末として向いているか?というお題に対して、数学に強いPythonが向いているという話題が挙がった。Python - Wikipedia手軽に始められるJavaScriptもあるけれども、計算をするとなると、Pythonの方が手軽に始められる。教育にPythonが向いているとして、ある程度基礎を学んだ後にしてほしいことは何か?を問いてみると...

 

ARM版ChromebookにDropboxをインストールする

Chromebookはプログラミングの教育の端末として向いているか?を調査するの記事から半月ほど経過した。Chromebookを利用するにあたって、乱暴な表現にはなるかもしれないが、Chrome OSとAndroidの仮想環境とDebian系のLinuxの仮想環境が同居しているとイメージすると良いかもしれない。Google Chrome OS - WikipediaAndroid (オペレーティングシステム) - WikipediaLXC - WikipediaDebian ...

 

ChromebookのLinuxアプリで日本語入力をできるようにする

ChromebookでJava製のアプリを実行するの続き。ChromebookでJava製のアプリを立ち上げた時、日本語入力ができなかったので、手順は端折るけれども、Ubuntuのマシンで行った操作の後にJava製アプリを立ち上げたら、今の時点では日本語の対応はされていないという旨のメッセージが表示された。調べていくと、Google製の日本語入力のMozcとFcitxを利用すればいけるらしい。Google 日本語入力 - WikipediaFcitx - Wiki...

 

ChromebookでJava製のアプリを実行する

Chromebookはプログラミングの教育の端末として向いているか?を調査するの記事の続きで、今回はChromebookでJava製のアプリが使えるか?を調査する。なぜ、Java製のアプリを気にするか?というと、大阪市立大学の方が開発された初学者向けプログラミング学習環境 PENというScratch等のビジュアルプログラミング言語とGolang等の実務や研究で使える本格的な言語の間の学習に向いている言語があって、この言語がJavaのVM上で動く。※ビジュアルプログラミ...

 

Chromebookはプログラミングの教育の端末として向いているか?を調査する

表題の通り、Chromebookがプログラミングの教育の端末として向いているか?を調査してみるためにChromebookを購入してみた。実はChromebook自体は中学生にプログラミングを教えてみて。その1で話題に挙げているプログラミング教室で試しに購入していて、Chromebook発売当初から触れてはいたが、JavaとIDEの面であまり使用していなかった。※採用していたプログラミング教育のアプリがJava製だった。2019年に発売されたChromebookでLinuxが動...

 

Android版のChromeでアクセスした時にPHPのセッションが突然切れる症状で苦戦した

SOY Shopのカートではセッションを利用しているわけだけれども、CSRF攻撃対策として、セッションを読み込む度にsession_regenerate_id()を実行して、PHPSESSIDの値を更新している。先に結論を記載すると、スマホからアクセスがある場合はsession_regenerate_id()の使用を気を付けるべきらしい。先日、AndroidのChromeでカート内で遷移すると、突然カートの中身が消えるという症状の連絡があった。調査をしてみると、カートの中身が...

 

php-webdriverでAceのコードエディタに文字を入力する

Ace - The High Performance Code Editor for the WebWebアプリ内でAceというJavaScript製のコードエディタを設置した箇所があって、Selenium + php-webdriverでテストコードを作成することになった。Aceエディタを設置した箇所は単純なHTMLのtextareaタグではなかったのでコードの作成は工夫がいる。なんとか対応できたので、対応方法を記載する。今回の内容は下記のページを参考にした。 ...

 

Golangでbyte型の値をint型に変換してみた

Golangでbyte型の値をint型に変換する際に苦戦したのでメモしておく。検索をすると、[]byte型からint64型に変換するといった内容は引っかかるけれども、冒頭のbyte型からint型は見当たらなかった。冒頭の課題を解決するために書いたコードは下記になる。package mainimport ("fmt""strconv")func main() {var b byteb = '9' // int型の1をシングルクオートで囲み...

 

QRCode.jsを試してみた

様々な依頼からこれからの働き方を見たの記事で紹介したようなブラウザでボードゲームをするための開発を行っている。スマホで気軽に参加できるように、BootstrapのModal内にQRコードを設置して、スマホのカメラでQRコードで撮影することで参加できるようにしたかったけれども、キャプチャのような画面を作るのに苦戦したので、対応した内容をメモとして残す。Bootstrap · 世界で最も人気のあるフロントエンドフレームワークはじめにQRコードの生成だけれども、...

 

OpenStreetMap + Leafletでカスタムアイコンを使ってみる

昨年の11月からつい先日まで下記のようなイベントをした。子どもたちに自分の好きな場所を取材してもらって記事を作成する。その記事を集めて壁新聞にするというもの。壁新聞にはWeb版があって、Web版ではOpenStreetMap + leafletで作成している。この地図をざっと見てもらうと、OpenStreetMap + Leafletで二つのマーカーを設置するマーカーが今まで見てきた青いピンではなく、何を紹介しているのか?がひと目で...

 

SOY CMSのブログとOpenStreetMapで地図アプリを作ろう

OpenStreetMap + Leafletで二つのマーカーを設置するまでの記事で、OpenStreetMap + Leafletで複数マーカーを設置する地図を出力できたので、SOY CMSのブログで地図アプリを作ろう1の記事から始まるSOY CMSでGoogle Mapsの出力をOpenStreetMapでリプレイスしてみることにする。はじめにSOY CMSの記事で緯度経度情報を持てるように、カスタムフィールドアドバンスドかカスタムサーチフィールドで緯度経度のフィール...

 

OpenStreetMap + Leafletで二つのマーカーを設置する

OpenStreetMap + Leafletで設置したマーカーにクリックのイベントを追加したの記事で、地図上に配置したマーカーにクリックイベントを設けた。今回は地図上にもう一つマーカーを設置してみることにする。前回の記事のマーカーの設置に関する箇所のコードをピックアップしてみる。var feature = {"type" : "Feature","properties" : {"name" : "摂津峡","url" : "h...

 

OpenStreetMap + Leafletで設置したマーカーにクリックのイベントを追加した

前回のOpenStreetMap + Leafletを試してみたの記事に引き続き、OpenStreetMapについてを書く。前回の記事では、自身のサイトにOpenStreetMapの地図を出力し、任意の箇所にマーカーを設置した。今回は、マーカーをクリックしたら、任意のページ、例えば、該当する箇所のGoogle Mapsの詳細ページ等に遷移する動作を追加してみる。最初に前回作成したコードを記載しておく。!DOCTYPE htmlhtmlheadmeta ...

 

OpenStreetMap + Leafletを試してみた

当サイトのりょうことつよしの食べ歩きマップというページをGoogleのMaps JavaScript APIからOpenStreetMapを利用するように作り替えてみた。Overview  |  Maps JavaScript API  |  Google DevelopersOpenStreetMapOpenStreetMapは自由に利用でき、なおかつ編集機能のある世界地図を作る共同作業プロジェクトで、自身のサイトに出力する際に、GoogleのMaps JavaScript...

 

クロスサイトリクエストフォージェリを回避する方法を探る

SQLインジェクションに対してプリペアードステートメントが有効であるかを試してみるに引き続き、Webアプリの脆弱性を見る。今回はタイトルにあるクロスサイトリクエストフォージェリ(CSRF)について見るけれども、とりあえず最初にこの用語を日本語訳してみる。クロスサイトというのがどういう風に訳せば良いのかわからないが、リクエストはサーバに送るデータで、フォージェリは偽造という意味なので、サーバに送る何らかのデータを偽装するという意味になる。実際にどういうことなのか?をサンプルコードを...

 

SQLインジェクションに対してプリペアードステートメントが有効であるかを試してみる

クロスサイトスクリプティングを回避する方法を探るの記事に引き続き、Webアプリの脆弱性を見る。今回見るのはSQLインジェクション(SQLi)にする。SQLiが何なのか?の説明に入る前にサンプルコードで挙動を確認してみる。SQLiを試す為のファイルの構成は下記の通り。.├── confirm.php├── db│   └── sample.db└── index.phpSQLiはデータベースにアクセスする攻撃なので、SQLiteでデータベ...

 

クロスサイトスクリプティングを回避する方法を探る

SOY Board on SOY Shopの記事で、SOY Shop上で掲示板アプリを展開出来る機能を追加したことを紹介した。このサイトに設置する為の機能が大体揃ったので、そろそろ設置しようと思ったが、入力フォームの記述の制約が少ないフォームを設置するするのはサイバー攻撃の視点でかなり怖い。掲示板を設置する前に、巷にあるWebサイト関連のサイバー攻撃を整理することにしよう。脆弱性について理解するために、Ohmshaから出版されている齋藤孝道著 マスタリングTCP/IP...

 

php-webdriverでcontent-visibility:auto;を利用しているページのリンクをクリックする

本題に入る前に先にやりたいことを整理しておくと、ブログを投稿した後に任意の記事ページを開き、次の記事へのリンクを押して、ブログ内の全記事を巡回するという事を自動化したかった。巡回したい理由は、アクセスが少ない時間帯に記事投稿後に巡回することで、全記事のHTMLキャッシュを生成して、その後のアクセスの負荷を減らしておきたかった。【SEO対策】最終産物のHTMLのキャッシュで高速化この対応はSelenium + php-webdriverを組み合わせれ...

 

データ構造のキューとリングバッファを見る

字句解析器を作る為にデータ構造のスタックを見るの記事で、データ構造のスタックを見た。オリジナルのアップロード者は英語版ウィキペディアのR. Kootさん - en.wikipedia からコモンズに移動されました。, CC 表示-継承 3.0, リンクによるスタックはデータの後入れ先出しで配列に値を入れた際、一番最後の値を取り出すというものだった。今回はデータ構造でスタックと合わせて紹介されるキューについて見てみる。This Image was created...

 

字句解析器を作る為にデータ構造のスタックを見る

PHPのハッシュテーブルを見るの記事で表題通り、PHPのハッシュテーブルを見て、ハッシュテーブルに関数を登録するところを見ようとしたが、共同体の記述の解釈で断念でした。一旦、ハッシュテーブル周りを見るのは保留にして、バーチャルマシン(VM)を含む機械がコードを解釈して実行する箇所を見ることにする。上記のコードを解釈して実行する過程はコンパイラもしくはインタプリタによって、人が書いたコードを機械が解釈できる形式に翻訳して実行する。コンパイラ - Wikipediaインタプリタ ...

 

PHPのハッシュテーブルを見る

ハッシュテーブルのチェイン法を見るまでの記事でデータ構造のハッシュテーブルを見た。ハッシュテーブルはPHPの変数や関数の登録の際にも利用されているので、PHPのハッシュテーブルを見る。ソースコードは今日現在のGitHub - php/php-src: The PHP Interpreterのソースコードとする。早速、HashTableで検索をしたら、php-src/Zend/zend_types.htypedef struct _zend_array HashTable;...

 

ハッシュテーブルのチェイン法を見る

データ構造のハッシュテーブルを見るの記事でデータ構想のハッシュテーブルに触れ、データ構造の単方向連結リストを見るの記事でデータ構造の連結リストを見た。これらを踏まえた上で、PHPで採用されているハッシュテーブルのチェイン法を見る事にする。技術評論社から発売されているPHPはどのように動くのか~PHPコアから読み解く仕組みと定石よるとPHPのハッシュテーブルのチェイン法では双方向連結リストを用いているが、前回触れた単方向連結リストでもニュアンスは伝わるはず。というわけで、今回もPH...

 

データ構造の単方向連結リストを見る

前回のデータ構造のハッシュテーブルを見るの記事でハッシュテーブルに触れたが、ハッシュテーブルの衝突の問題が残っている。PHPではハッシュテーブルの回避の手段としてチェイン法を採用しているが、チェイン法を見るためにはデータ構造の連結リストを把握する必要があるので、今回は連結リストを見ることにする。といっても、ここではPHPでシンプルな単方向連結リストのみ触れる事にする。連結リスト - Wikipedia今回も細かい説明は後回しにして、単方向連結リストに必要な関数を挙げる。※...

 

データ構造のハッシュテーブルを見る

PHPの関数の登録2の記事でPHPの実行中に関数が登録される過程を見た。PHPの深いところ(C言語レベル)で見ると、関数の登録にはデータ構造のハッシュテーブルというものが重要になってくる。ハッシュテーブルといえば、PHPのzvalと変数の作成を見るの記事で変数の登録時のシンボルテーブルでも登場した。PHPの深いところに向かう前にハッシュテーブルについて触れておく事にする。例えば、array(16) {[0] =string(6) "オヒシバ"[1]...

 

PHPの関数の登録2

PHPの関数の登録の記事で?php$funcs = get_defined_functions();var_dump($funcs);$a = myFunc();function myFunc(){return null;}このようにmyFunc関数の記述の前に、get_defined_functions関数を実行したらどうなるのか?を試してみたら、エラーなく実行された内容を記載した。この試みの後、2つほど疑問が生じた。・includeの...

 

PHPの関数の登録

PHPのオブジェクトの継承の負荷を見るの記事でオブジェクトの継承においてメモリの使用量で予想とは異なる結果になった。予想を外した要因は関数とメソッドを含むクラスの読み込み周りの知識不足であるので、関数やメソッドの登録周りを知りたくなった。例えば、下記のようなコードがあったとする。?phpfunction myFunc(){return null;}$a = myFunc();最後の行でmyFunc関数を実行する際、予めメモリにmyFuncの番地を登録...

 

PHPのオブジェクトの継承の負荷を見る

PHPでクラスのインスタンスを作成する際、他のクラスを親に持つクラスであった場合、メモリの使用量はどうなるのか?を見ることにする。実行せずともなんとなく結果は予想できるけれども、PHPのVLDでfor文を見る2のようなことがあるので、一応確認しておく。obj.php?phpclass Animal {function bark(){return "ばう";}}class Cat {}echo memory_get_usage...

 

PHPで関数内の変数のメモリ領域はいつ解放されるか?

前回のPHPのガベージコレクションを見るの記事で、PHPのガベージコレクションの基礎になる参照カウント法を見た。?php$a = new stdClass();$c = $b = $a;xdebug_debug_zval('c');というコードだと、各変数はこの図のような形になる。このコードを見て、コンストラクトしたオブジェクトをすぐに他の変数に入れる事なんてあるのか?という疑問が速攻で湧いた。色々と考えてみたら関数が当てはまるということで下記のような...

 

PHPのガベージコレクションを見る

PHPのzvalと変数の作成を見るの記事で、PHPの変数周りの内容を見た。前回の内容を踏まえて、PHPのガベージコレクション(以後、GCと略す)を学ぶための準備をしていく。PHPのガベージコレクションを学ぶにXdebugを入れるの記事でPHPの変数の詳細を確認できるxdebug_debug_zval関数を使用できるようにして、/path/to/dir/xdebug.php?php$a = new stdClass();xdebug_debug_zval('a');...

 

PHPのzvalと変数の作成を見る

PHPのガベージコレクションを理解する為のメモPHPは動的に変数を扱う事ができる言語で、この動的に変数を操作するためにzvalというものがある。動的に変数を扱う例として、/path/to/dir/var.php?php//変数aに数字の1を挿入する$a = 1;var_dump($a);//変数aに文字列のhogeを挿入する$a = "hoge";var_dump($a);//変数aに配列の値を挿入する$a = array(1, 2, ...

 

PHPのガベージコレクションを学ぶにXdebugを入れる

VLDでPHPのオペコードを確認するの記事でも記載した通り、SOY Shopの改修でメモリを意識する必要が生じたので、PHPの仕様を見始めた。現時点での一番の疑問は関数内で使用した変数はどのタイミングでメモリを解放するのか?もしくはPHPの関数内の変数の解放は手動で行わなければならないのか?PHPのCGI版やモジュール版はブラウザからリクエストを送信して、サーバでHTMLを組み立ててレスポンスを返した時点でプロセスを終了し、処理に関するメモリを解放するという仕様上、メモリにあまり...

 

PHPのOPCacheで生成されるキャッシュを見る

【SEO対策】PHPのOPCacheの更新チェックの頻度を下げるでサイトの表示速度の向上の為に、OPCacheの更新チェックの頻度を2秒から1日に変更してみた。そもそもの話でOPCacheはどんな感じでキャッシュしているのだろう?という事が気になった。OPCacheの説明文を改めて読むと、コンパイル済みのバイトコードを共有メモリに保持と記載されている。メモリ上だとキャッシュを確認することは難しいなと思うが、デバック用にファイルに変更する事ができるらしい。というわけで早速変...

 

PHPでforeach文の抜け方を見る

PHPで数字の配列の中に偶数があるか?という判定用の関数を作成したいとする。配列の中に偶数が一つでもあればtrue(真)を返すわけだから、?phpfunction isEven($arr){foreach($arr as $int){if($int % 2 === 0) return true;}return false;}このように偶数があった場合にreturn true;で終わ...

 

PHPで変数に割り当てた無名関数を解除できるか?

PHPのVLDで無名関数を見るの記事の続きで、?php$isEven = function($n){return ($n % 2 === 0);};if($isEven(2)){echo "even";}else{echo "odd";}$isEven変数に割り当てた無名関数の処理を解除できるか?が気になった。今回の内容に触れる前に割当の解除であるunsetについて触れておく。PHP: unset...

 

PHPのVLDで無名関数を見る

PHPのVLDで関数を見るの記事で、PHPの関数の処理をVLDで見てみた。C言語やGoのようなmain関数から始まる言語とは異なり、PHPはいきなり書き始められる言語では、他言語のmain関数の箇所でfunction nameがnullとして処理が開始していた。VLDで関数のオペコードを見た時、無名関数だとどうなるのだろう?と気になったので、今回は無名関数で試してみる。無名関数に関しては、オライリーから出版されているアンダースタンディングコンピューティション 単純...

 

PHPのVLDで関数を見る

PHPで関数がどのように実行されているか気になるので、下記のコードをVLDで確認してみることにした。even.php?phpfunction isEven($n){return ($n % 2 === 0);}if(isEven(2)){echo "even";}else{echo "odd";}偶数であればtrue(真)を返す簡単な関数だ。このコードのオペコードを確認してみると、$ ph...

 

PHPのVLDでforとforeachを比較する

$arr = range(1, 100000);のような配列があった場合の繰り返しで、$cnt = count($arr);for($i = 0; $i $cnt; ++$i){//処理を書く}foreach($arr as $i = $v){//}上記のようなfor文かforeach文のどちらを使えば良いか迷う。そんな時はVLDでオペコードを確認してみたり、実行速度を確認してみると迷いがなくなる。先に...

 

PHPのVLDでfor文を見る2

PHPのVLDでfor文を見るの記事の続きPHPのfor文の書き方で、//$arrには配列型のデータが格納されているfor($i = 0; $i count($arr); ++$i){//処理を書く}上記のコードのようなforの二番目の式でcount(配列)を書くのはよろしくないと記載されていることが多い。理由はfor文による繰り返しの際に都度、count関数を実行する事になり、関数の実行は処理が重いからすべきではないという。実際にどれ程...

 

PHPのVLDでfor文を見る

PHPのfor文の高速化の話題で、教科書等によく記載されているfor($i = 0; $i 10 $i++){//処理を書く}ではなく、for($i = 0; $i 10 ++$i){//処理を書く}にした方が良いということを時々見かける。実際のところはどうなのか?を処理速度の測定とVLDで確認してみる。VLDでPHPのオペコードを確認するちなみに$i++と++$iの違いは、if文等で、式を実行してから$iに1を加える(インクリメント)か、...

 

WSL2でSOY CMSの開発環境を作ってみた

CORE i5 iiyamaのパソコンを購入した。WSL2(Windows Subsystem for Linux:以下wslと表記)が入っており、WindowsでLinuxが使える点が購入に決めてだった。Windows Subsystem for Linux - Wikipediawslを使う利点は、プログラミングの実行環境を準備するのがWindowsの標準を使うよりはるかに簡単である。私の開発環境は、wslでLinuxのUbuntuを使えるようにした。その手順は、下記...

 

VLDでPHPのオペコードを確認する

SOY Shopの開発でPHPの深い箇所を意識してコードを書く必要が出てきた。PHPをより深く理解する為には何から手を付けていけば良いのだろう?ということで、PHP: Hypertext Preprocessor技術評論社から発売されているPHPはどのように動くのか~PHPコアから読み解く仕組みと定石を読むことから始めてみた。この本はPHPの本なのにC言語が頻繁にあり、メモリの確保やインタプリタの説明が少ない状態で話が始まるので、もしこの本を読むのであれば、事前に...

 

郵便番号を入力したら半径3km内のすべての町名を取得する

郵便番号を入力したら半径3km内のすべての町名を取得したいという要望がありました。この要望を聞いた時に頭に浮かんだのがGoogleのGeocoding APIだったので、このAPIで指定の場所の周辺の町名を取得してみる。Overview  |  Geocoding API  |  Google DevelopersGeocoding APIはGoogle Maps Platformで支払い方法の設定をしていないと使用できない。これから記載する内容はGoogle Maps Pl...


Powered by SOY CMS  ↑トップへ