ブログ内検索

micro:bitページ
とにかく速いブログサイトを目指す

カテゴリー : プログラミング/page-3

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

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

Go言語のGo MobileでAndroidアプリを開発してみる

Go言語ではAndroidやiOSのアプリの開発用でmobileパッケージが用意されている。Mobile · golang/go Wiki · GitHubAndroidアプリの開発することになったので、本家のJavaではなくGo言語で開発してみることにする。今回はサンプルコードをAndroid端末で動かすところまで。ということで早速開発環境を載せる。開発機Lenovo Ideapad 720S プラチナCPU : AMD

 

会議用の資料の作成時間を短縮したい

SOY CMS/Shopの開発元を辞め、自営になって非IT系の企業に出入りするようになって驚いたことがある。それは、弥生販売のような販売管理のソフトウェアを利用していて、前年度の売上や、前々年度の売上比較を会議で話題に挙げたいので、わかりやすい資料を事前に作成して会議に臨む。この資料は会議で話題を挙げるための本人が作成であったり、事務員が作成であったりする。(見本はないけれども、)既存のソフトウェアから出力されるエクセルは会議に使える要素だけをピックア

 

jQuery.uploadプラグインをjQuery3系でも動作するように修正してみた

jQuery.uploadプラグインというAjaxでファイルをアップロードする時に重宝するjQueryのプラグインがあります。このプラグインは2013年の最終更新以降開発が止まっているのですが、SOY Shopで利用していて、他のプラグインに置き換えるのが面倒だったため、現在のjQueryのバージョンでも動作するように修正してみた。下記が今回の修正の際のバージョンjQuery 3.3.1jQuery.upload 1.0.9jQuery.upload |

 

自作アプリを介してのGoogle検索でService Unavailableになった

Google検索の結果を集計したいという要望があり、こんな感じで検索フォームを設置し、集計結果をフォームの下に出力する簡易的なページをPHPで書いてみた。検索結果を取得するあたりのコードは下記の通り$word = "hoge"; //何らかの検索ワードを挿入する$url = "https://www.google.co.jp/search?q=" . str_replace(array(" ", " "), "+", $word);//cURLセッシ

 

Go言語 + kintone + チャットワークでタスクの自動登録アプリを作ってみる3

前回のGo言語 + kintone + チャットワークでタスクの自動登録アプリを作ってみる2でGo言語でkintone REST APIを利用して任意のアプリからJSON形式で登録データを取得してみた。今回は取得したデータをチャットワークにタスクとして登録してみる。今回の話に入る前にざっくりと説明するとkintoneで上のキャプチャのようなフィールドを設けたアプリを作成して、指定の月日になったら、チャットワークにラベルをタスク名にして投稿するというアプリを

 

Go言語 + kintone + チャットワークでタスクの自動登録アプリを作ってみる2

前回のGo言語 + kintone + チャットワークでタスクの自動登録アプリを作ってみる1の続きざっくりと説明すると、kintoneで上のキャプチャのようなフィールドを設けたアプリを作成して、指定の月日になったら、チャットワークにラベルをタスク名にして投稿するというアプリを作成している。指定の月日になったらというところだけれども、kintoneの仕様を調べてみると、Linuxでいうところのcronのような機能を見つけられなかった為、Go言語でkint

 

Go言語 + kintone + チャットワークでタスクの自動登録アプリを作ってみる1

毎年同じ時期にやらなければならない仕事があって、その仕事を忘れないようにしておきたい。できれば、チャットワーク(ChatWork) | ビジネスが加速するクラウド会議室チャットワークのタスクとして登録しておきたい。という相談があった。PHPでチャットワークAPIを介してメッセージを投稿してみるkintone - サイボウズのビジネスアプリ作成プラットフォーム相談者は既にcybozeのkintoneを利用していたので、タスクの登録はk

 

PHPでチャットワークAPIを介してタスクを登録してみる

チャットワーク(ChatWork) | ビジネスが加速するクラウド会議室以前、PHPからチャットワークを介してメッセージを投稿してみたことがある。PHPでチャットワークAPIを介してメッセージを投稿してみる今回はチャットワークAPIを介してタスクを登録してみることにする。先に前回の復習でメッセージの投稿周りのコードを確認しておく。<?php//取得したAPIトークンを入れる$apiKey = "**********************

 

Go言語 + Selenium + Agoutiでテスト自動化

Go言語 + Selenium + AgoutiでSOY CMSにログイン出来なかった時に適切にエラーを表示するかを確認してみる。package mainimport ("log""strings""github.com/sclevine/agouti")//SOY CMSにログインできなかた時に適切にエラーを表示するか?テストfunc main() {driver := agouti.ChromeDriver()err := driver.Start()if err

 

Go言語 + Selenium + Agoutiで自動でGoogle検索

前回の続きで、seleniumでグーグル検索した後、検索フォームにseleniumuと入力してボタンを押してみる。下記のコードを入力する。package mainimport ("log""github.com/sclevine/agouti")func main() {driver := agouti.ChromeDriver()err := driver.Start()if err != nil {log.Fatal(err)}page, err := dri

 

Go言語 + Selenium + Agoutiでブラウザ操作の自動化

Selenium - Web Browser Automationhttps://agouti.org/Go言語でSeleniumとAgoutiを介してChromeブラウザを自動で操作してみる。SeleniumはJava上でなければ動作しないため、はじめにJavaをインストールする。Javaは下記のページからダウンロードして、画面の指示に従ってインストールする。無料Javaソフトウェアをダウンロード続いて、seleniumu-serverをhttps://www.sele

 

SOY CMSを介さずにSOY2DAOを使ってみる2

前回のSOY CMSを介さずにSOY2DAOを使ってみる1では、SOY2DAOクラスを読み込んでみたけれども、SOY2DAOを介してDAOではなく自作したSQL構文を実行してみた。今回はDAOを実行するサンプルコードを作成してみる。SOY2DAOでデータベースから値を取り出すはじめにDAOを実行するためのクラスを用意する。DAO用のクラスは下記の個所に作成してみる。.├── index.php└── webapp├── cache

 

SOY CMSを介さずにSOY2DAOを使ってみる1

SOY2HTMLのIgnoreプラグインを使ってみるに引き続き、SOY CMS以外のアプリでSOY2DAOを使ってみる。SOY2DAOはその名の通りDAOのためのクラスですが、SQL構文をそのまま実行出来るという痒いところに手が届く的な側面もあるため、PDOよりも直感的にSQLを実行出来るといった機能もある。SOY2DAOに関する詳細は下記の記事をご覧ください。SOY CMS/Shopのモジュール内でSQLを実行するSOY2DAOでデータベースから値を取り出す

 

Go言語でスコープ

下記のようなコードを入力してみる。package mainimport "fmt"func main() {var str stringvar i int // if文を使うためのダミーの変数if i == 0 {var str stringstr = "hello"fmt.Println(str)}fmt.Println(str)}実行すると、helloと表示される。ここで、注目したいのは、func ma

 

SOY2HTMLのIgnoreプラグインを使ってみる

前回のSOY CMSを介さずにSOY2HTMLを使ってみるでSOY CMSに組み込まれているSOY2の機能をSOY CMSを介さずに利用できることを紹介しました。SOY2HTMLという言うのは<!-- soy:id="***" /-->のことで、このタグこそがSOY CMSの開発理念にあるデザイナとプログラマをつなぐ肝となる。SOY CMSの開発秘話前編SOY2HTMLを使用出来るようになったら、一緒に利用したいものとして<!-- cms:i

 

Go言語でクライアントのレスポンスを見る

workspace/go/web/clientでclient.goファイルを作成する。package mainimport ("fmt""log""net/http""net/http/httputil")func main() {resp, err := http.Get("http://localhost:8889")defer resp.Body.Close()if err != nil {log.Fatal(err

 

SOY CMSを介さずにSOY2HTMLを使ってみる

Webサイトなりアプリを開発する際、SOY CMSは入れたくはないけれども、SOY CMSの記法のsoy:idは使いたいという要望がちょくちょくある。SOY CMSはSOY2というライブラリを使用していて、SOY2の中のSOY2HTMLのみを使用することは可能です。※SOY2HTMLはテンプレートエンジン今回はSOY2HTMLのみを利用する方法を説明します。説明の前にSOY2HTMLについて興味がある方は下記の記事をご覧ください。SOY CMSの開発秘話前編

 

kintoneのカレンダーの日付カラムで4件以上表示したい

kintoneを利用している方から標準機能のカレンダーを印刷してスケジュールの確認用として社内の掲示板に張りたいということでkintone - サイボウズのビジネスアプリ作成プラットフォーム新しいアプリを作成して、カレンダーページを設けました。ここで一つ問題発生。同じ日にスケジュールが4件以上あると、3件目以降のスケジュールが折りたたまれて、印刷をしても表示されなくなる。これだと冒頭の要件を満たさないということで、JavaScrip

 

Go言語でサーバを立ち上げる

workspace/go/web下にserverディレクトリを作成する。package mainimport ("fmt""io""log""net/http""net/http/httputil")func main() {http.HandleFunc("/", func(w http.ResponseWriter, req *http.Request) {dump, err := httputil.DumpRequest(req, true)if err !=

 

Go言語で並行処理(ゴルーチン)

helloという言葉とworldという言葉をprint関数を作成して、同時に表示してみる。package mainimport ("fmt""time")func main() {print("hello")print("world")}func print(s string) {for i := 0; i < 5; i++ {time.Sleep(100 * time.Millisecond)fmt.P

 

Go言語で無名関数

関数内で作成された関数で、関数名を持たないものを無名関数と呼ぶ。package mainimport "fmt"func main() {f := func() {fmt.Println("hello")}f()}f := func() { fmt.Println("hello")で実行したい関数をそのまま変数fに代入する。f()で変数fに入った関数を実行する意味になる。即時実行の際は、下記のようにコードを入力する。package

 

Go言語で関数型の値を扱う

helloを表示するgreet関数を変数fに代入して実行してみる。package mainimport "fmt"func main() {var f func()f = greetf()}func greet() {fmt.Println("hello")}ここで、f = greetは、関数greetを値として変数に代入している。この場合、f()で、変数fの値が関数型だったら実行される。fmt.Printlnすると、hel

 

Go言語で内部コマンドを作成する③

~/workspase/go/flagを作業ディレクトリとし、main.goファイルを作成し、その中に下記のコードを入力する。package mainimport ("flag""fmt")var IntOpt = flag.Int("i", 1111, "please input interger value")var StrOpt = flag.String("s", "default", "please input string value")

 

Go言語で内部コマンドを作成する②

~/workspase/go/cmdを作業ディレクトリとし、main.goファイルを作成し、その中に下記のコードを入力する。今回は、os.Argsの機能を調べてみる。package mainimport ("fmt""os")func main() {fmt.Println(os.Args)if len(os.Args) > 1 {fmt.Println(os.Args[1])}}次に下記のコマンドを入力する。c

 

Go言語で内部コマンドを作成する①

 ~/workspace/go/cmdを作業ディレクトリとして、main.goファイルを作成し、下記のコードを入力する。package mainimport ("fmt")func main() {fmt.Println("usako")}次に、インストールしたMINGW64を使って、下記のような実行ファイルを作成する。$ cd ~/workspace/go/cmd$ go build main.go$ ./main.ex

 

Go言語で一方向ハッシュ関数

ryokoという言葉を一方向ハッシュ関数を自作して暗号化してみる。package mainimport ("fmt")func main() {hash := CreatHash("ryoko")fmt.Println(hash)}func CreatHash(p string) string {b := []byte(p)fmt.Println(p)fmt.Println(b)return ""}func

 

kintoneで指定の個所だけ印刷範囲にしてみる

最近、サイボウズのWebサービスのkintoneについて色々と調べている。kintone - サイボウズのビジネスアプリ作成プラットフォームkintoneというものを軽く触れておくと、公式サイトの説明文をそのまま引用すると開発の知識がなくても自社の業務に合わせたシステムをかんたんに作成できる、サイボウズのクラウドサービスです。 業務アプリを直感的に作成でき、チーム内で共有して使えます。使用すること自体は有償ですが、開発者登録をすると無償で利用で

 

Go言語でファイルの読み込み

templateというファイルの読み込みを行う。package mainimport ("fmt""io/ioutil""log""os")func main() {file, err := os.Open("template/header.txt")if err != nil {log.Fatal(err)}defer file.Close()fmt.Println(file)var content []bytecontent, err = ioutil.

 

Go言語でhtmlからの文字の部分的取得

htmlから本文を取得してみる。package mainimport ("bufio""io""log""net/http""os""strings")func main() {url := "https://saitodev.co/article/%E3%83%A4%E3%83%96%E3%82%AC%E3%83%A9%E3%82%B7%E3%81%AE%E5%9F%B7%E5%BF%B5"resp, err := htt

 

Go言語で文字列操作

Go言語で"<p><img src="/site/files8/P9160020.JPG" /></p>"の文字列を、<p><img src="./files/P9160020.JPG"></p>"に置換してみる。package mainimport ("fmt""regexp""strings")func main() {line := "<p><img src=\"/

 

Go言語で特定のサイトの複数の画像を取得する

植物のミカタの任意のページから複数の画像を取得してみる。func main() {url := "https://saitodev.co/article/%E6%AF%94%E5%8F%A1%E5%B1%B1%E3%81%AE%E5%B1%B1%E9%A0%82%E4%BB%98%E8%BF%91%E3%81%AB%E3%81%82%E3%81%A3%E3%81%9F%E5%A4%A7%E3%81%8D%E3%81%AA%E5%B2%A9"response, err := http.Ge

 

複合機とGoogleドライブを連携して、出先でFAXの内容を確認する

最近の複合機はFAXを受信した時にGoogleドライブにPDFファイルとして共有する機能があるらしい。この機能があれば出先であってもスマホ等があれば出先でもPDFを確認できるようになるため、帰社するまでFAXの内容を確認できないとか、社内にいる人がFAXの内容をスキャンしてメールで送信という手間が省ける上、営業FAX等の受信で無駄に紙を使用するということもなくなる。ただし、この機能はGoogleドライブで共有だけで、FAXを受信したことをリアルタイムで把握したいので、

 

Go言語でHTMLのイメージタグから画像を取得

画像の名前がついたファイルをそのまま作成する。package mainimport ("fmt""io/ioutil""log""net/http""os""regexp""strings")func main() {var line stringline = "<p><img src=\"/site/files10/P5100314.JPG\" alt=\"\" /></p>"r := regexp.MustCompile("

 

Go言語でWebサイトから画像のデータを取得

植物のミカタから任意の画像データを取得し、main.goと同階層に画像ファイルを作成してみる。package mainimport ("io/ioutil""log""net/http""os")func main() {var url stringurl = "https://saitodev.co/site/files10/P5080305.jpg"response, err := http.Get(url)if err != nil {log.Fatal(e

 

Go言語でファイル作成

main.goファイルと同階層に「hello」と記載されたsample.txtファイルを作ってみる。package mainimport ("log""os")func main() {var file *os.File_, err := os.Stat("sample.txt")if err != nil {file, err = os.Create("sample.txt")if err != nil {log.Fatal(err)}} else {file

 

Go言語で構造体のメソッド

Go言語では、任意の型に特化した関数を定義するための仕組みであるメソッドという機能がある。Person型の構造体を含んだ関数Greetをパッケージに組み込んでmain.goファイルで実行してみる。まず、sample.goファイルに下記のコードを記載する。package sampleimport "fmt"type Person struct {Id intName stringReading string}func (p *Person) Greet()

 

Go言語で構造体

Go言語の型は、typeで自由に作ることができる。今回は、「複数の任意の型の値を一つにまとめたもの」である構造体(struct)という型を作成する。例えばryokoという人を番号とふりがなをつけて表示してみる。package mainimport "fmt"type Person struct {id intname stringreading string}func main() {var ryoko Personryoko = Person{id:

 

Go言語でマップ(連想配列)

任意の型のキーと任意の型の要素を保持する特殊な配列をマップと呼ぶ。他言語では連想配列と呼ぶ。キーが「name」、要素が「Tuyoshi」,キーが「reading」を要素が「Saito」の組み合わせを表示してみる。package mainimport "fmt"func main() {var m map[string]stringm = make(map[string]string)m["name"] = "Tuyoshi"m["reading"] = "Saito"fm

 

Go言語でスライス(可変長配列)

Go言語のmake関数を使って、10までの要素を作り、4番目の数「5」を表示してみる。package mainimport "fmt"func main() {var s []ints = make([]int, 10)s[4] = 5fmt.Println(s)}要素の数を特定しないで記載する配列を可変長配列と呼ぶ。前回の固定長配列は、var s intで表したが、可変長配列は、var s []intと[]を引数の前に記載する。また、配列を記載する際は、s = mak

 

妻にプログラミングを教えることにした-続き

よくこんな話を聞く。プログラマと話す時、細かいところまで確認されて話にくいと。伝える側はおそらくは電話でさくっと伝えて終わらせたいのだろうけれども、段階を踏まれて事細かく且つ理屈っぽく話をされるからだろう。更には電話による口頭のやりとりを拒否されて、メールでやりとりをしてほしいと言われることもあるだろう。上記の問題に対して、私なりの経験をまとめておくことにしよう。それが前から記載している妻へプログラミングを教えている理由に繋がってくるから。妻にプログラミングを教え

 

チャットワークとGoogle Apps Scriptで音声入力で投稿してみる

Google AppsのGoogleドキュメントでは音声入力という機能がある。Googleドキュメントで画像ファイルから文字列を抜き取ってみるGoogle ドキュメント - オンラインでドキュメントを作成、編集できる無料サービス前回紹介したGoogle Apps Scriptでチャットワークに投稿するライブラリと組み合わせて、音声入力でチャットワークに投稿するコードを書いてみる。Google Apps Scriptからチャットワークに投稿してみる音声入力のルールと

 

Go言語で繰り返し

Go言語のforを使って繰り返す変数iを表してみる。package mainimport "fmt"var i intfunc main() {for i = 0; i < 10; i++ {fmt.Println(i)}}for i = 0; i < 10; i++では、iは0から始まって、10より下の数値であれば繰り返し実行する。実行した後にiに+1をして次の繰り返し実行を行う。forは、, 0; i < 10; i++のように、;で区切って3つま

 

Go言語でHTTPのPOST

クライアントがサーバにデータを送ることをHTTPのPOSTと呼ぶ。今回はチャットワークのマイチャットに「GOからのテスト投稿」という文字列を送ってみる。チャットワークに投稿するための事前準備として、チャットワークAPI鍵とroomIDを調べておく必要がある。調べ方は下記の記事を参考にした。PHPでチャットワークAPIを介してメッセージを投稿してみるfunc main() {room_id := "36286956"url := "https://api.c

 

Google Apps Scriptからチャットワークに投稿してみる

チャットワーク(ChatWork) | ビジネスが加速するクラウド会議室PHPでチャットワークAPIを介してメッセージを投稿してみるでPHPからチャットワークに投稿する内容を記載した。が!おそらく普段の業務ではPHPでコードをゴリゴリ書くよりも、Google Apps Script(以後、GAS)で書いた方が様々なWebアプリを簡単に利用できるGoogle Appsの恩恵を預かれるため有効だろう。社会人・学生向けプログラミング教室でGASで業務改善の勉強会を行いま

 

Go言語でHTTPのGET

インターネットでは、クライアントとサーバというものがあり、クライアントがサーバに命令を送って、サーバがその結果を返すということをしている。命令を送ることをリクエストと呼ぶ。今回はウェブサイトを表示するHTTPに焦点を絞って記載する。HTTPリクエストにはGETとPOSTというものがある。今回は、HTTPのGETを使ってみる。例えば、「植物のミカタ」というサイトのトップページにアクセスしたい場合は、一番簡単な方法はhttpが使えるClomeなどのアプリケーションのアドレスバーにhttps:

 

Go言語でユニットテスト

自分が作った関数が正しく動くか調べるのにテストコードというものがある。以前、整数が偶数ならtrue、奇数ならfalseを返すJudgeEo関数を作ったが、それをテストしてみる。まず、以前コードを記載したryoko/func.goファイルと同じ階層に新規ファイルを作成する。ここでは名前をryoko/func_test.goと名付ける。func_test.goに下記のコードを入力して実行する。package ryokoimport "testing"func TestJudgeEo(

 

Go言語で制御構文のif文

if文は正しいか正しくないかという判定によく使う制御構文である。例えば、変数iが5ならば、「iに格納されている文字は5」と表示してみる。package mainimport "fmt"func main() {var i inti = 5if i == 5 {fmt.Println("iに格納されている文字は5")}}if i == 5でiという値が、5であればを意味し、5であれば{}の中身を実行するという意味になる。※fmt.Printlnというフォーマットの標

 

PHPでチャットワークAPIを介してメッセージを投稿してみる

妻にプログラミングを教えることにした-前編でも記載したけれども、最近、仕事上での電話問題の解決のために様々な試みをしている。そのうちの一つとして、SlackやChatWorkといった拡張性の高いチャットツールを利用することを視野に入れている。※LINEやFacebookにあるグループ機能での仕事のやりとりからの脱却が重要SlackとChatWorkの両方を検討してみたけれども、日本の中小企業の方であれば、チャットワーク(ChatWork) | ビジ

 

Go言語でpackage

関数をまとめておく機能としてpackageがある。packageすると、main関数に記載するコード行が小さくなり、コードが読みやすくなるという利点がある上にpackageは再利用できるし、配布もできる。まずgoフォルダに合わせて右クイックで新規フォルダを作り、名前をつける(今回はryoko。これがpackage名になる)。次にryokoフォルダに下記のような新規ファイルを作る。※ryokoフォルダの中のファイルにしたい場合は、ファイル名の前に必ずryoko/を入れること。ryo

 

Go言語で関数

「good morning」を表示するというaisatuという関数を作ってみる。関数とは、func 関数名(){}で作成する一連の処理をまとめたものである。package mainfunc main() {aisatu()}func aisatu() {print("good morning")}main関数の中で、自作したaisatuという関数を実行することになる。main関数はエントリーポイントと呼ぶ。関数の呼び出しには必ず()をつける。ここではaisatuの後の(


Powered by SOY CMS  ↑トップへ