ラベル プログラミング言語 の投稿を表示しています。 すべての投稿を表示
ラベル プログラミング言語 の投稿を表示しています。 すべての投稿を表示

JavaでAuto Tweet Program作成計画 Twitter4Jを使う

JavaでAuto Tweet Programを作成しようと思っています。

なぜなのか

自動でツイートするのは面白いし、何より自動化の作業経験は未来につながると感じたからです。自動化するにあたってTwitterAPI「Twitter4J」を使用することにしました。ただ、このAPIは機械学習や文章を作成する機能はありませんので、その部分は私自身が作成するか、他のAPIを導入する等の作業が必要になります。

現段階で出来ること

ということで、JavaでAuto Tweet Programを作成の第一段階としてTwitterAPI「Twitter4J」を把握していくことにします。さっそく昨日少しだけ触ってみましたが、非常に使いやすいAPIになっています。とりあえずは現段階で、次のことが出来ました。
  • HOME TLの読み込み
  • 自分が書いた文章の書き込み

このような状況なので、まだまだ使えるようなプログラムは組めていませんが感覚としては良いプログラムが組めると感じています。なぜならドキュメントが揃っており、ユーザーも多いためです。サーベイすることで試行錯誤の回数を大分減らし、素早くプログラムを組むことができると思います。

今日の計画

計画としては、今日は次のことが出来るようにしたいです。
  • 自分のつぶやきの読み込み
  • 定刻になったら任意の文章を書き込むボット作成



ここで考える必要があるのは、一日にどのくらいツイートするか。また、その内容をどうするか。同じ内容を続けてツイートすることは出来ない使用なので、ここは何かしら自分でプログラムを組む必要があります。今日はTwitter4Jの把握に注力するため、他APIを使用して文章を作成することについてはやらない方針にしました。


さらに努力目標として、自分のつぶやきの読み込んだものを加工して、ブログ記事のネタあるいはアウトラインにするところまで出来たら良いかと思います。ここは少し構成を考える必要があるので今日中に出来るかは不明です。


以上、「JavaでAuto Tweet Program作成計画」でした。


Tomcat/Servletの記述をアノテーションで簡易化する方法

Servletへのアクセスがとっても簡単になりました。久しぶりにTomcatやServletを触ったら結構仕様が変わってましたので、私が観測した範囲でまとめておきます。

今回の記事は、先日書いた次の記事の更新版です。もちろん先日の次の記事の設定方法もまだ健在ですよ。今回の記事で紹介するほうが非常に簡単という話です。
「HTMLヘッダ」や「web.xmlのタグ」の解説。オマジナイのようだけどそれだけではありません。

アノテーション

Servlet 2.0からサーブレットにアノテーションを使用することでweb.xmlの編集が不要になりました。web.xmlはアドレスとディレクトリのマッピングを記述していたファイルです。具体的には、Servletのクラスの前行にこのようにアノテーションを記述すればアクセスすることが出来るようになります。
@WebServlet("/SampleServlet")
public class SampleServlet extends HttpServlet {

アクセス方法

具体的なアクセス方法をご紹介します。上記のServletクラスにアクセスするにはアノテーションに記述したクラス名にアクセスすれば良いのです。ここではSampleServletクラスですね。例えばjavascriptのajaxでアクセスするならこのように記述します。
$.ajax({
  url:'./SampleServlet',
  type:'POST',
  data:{ message:sendMessage },
  error:function() {
    alert("ロード失敗");
  },
  success:function(xml) { alert("ロード失敗"); }
});

これでPOSTでメッセージなりのデータを送信することが出来ます。以前の記述方法から見違えるほど簡単になりましたね。視認性が抜群によくなりました。

もう少し具体的に言うと、上記のようにajaxを書くと、ServletクラスのdoPostメソッドに指定したデータを送信することが出来ます。doPostメソッドは送られてきたデータを第一引数で取得し、第二引数を使用して送り返すことが出来ます。doPostメソッドから第二引数を使用して送り返されたデータはajaxのsuccess:function(xml)に入ります。これでjavascript(ajax)とjava(Servlet)を行って帰っての通信をすることが出来ました。簡単でしたね。

このようにアノテーションを使用することでweb.xmlというファイルを変更しなくて良くなりました。

以上、「Tomcat/Servletの記述をアノテーションで簡易化する方法」でした。

JSONの構造(オブジェクト・配列)と使い方(Java)

JSONの構造(オブジェクト・配列)と、その使い方(Java)についてご紹介します。

JSONとは

JSONとは、データ交換フォーマットです。特徴としては、人間にとって理解しやすいフォーマット。さらに、軽量かつソースコード上でも扱いやすいといったことがあげられます。また、データ交換フォーマットなので、プログラミング言語の種類によらず使用することが出来ます。

JSONの構造

JSONの構造はオブジェクトと配列に大別されます。それぞれの基本構造はこのようになっています。

オブジェクト

{"name":somegoro, "age":"25"}

配列

["somegoro", "25", "man"]

また、これらを組み合わせることも可能です。

オブジェクトの中にオブジェクト

{"user01":{"name":somegoro, "age":"25"}, "user02":{"name":daigorou, "age":"28"}}

オブジェクトの中に配列

{"user01":["somegoro", "25", "man"], "user02":["somegoro", "25", "man"]}

配列の中にオブジェクト

[{"name":somegoro, "age":"25"}, {"name":daigorou, "age":"28"}, {"name":someko, "age":"18"}]

配列の中に配列

[["somegoro", "25", "man"], ["daigorou", "28", "man"], ["someko", "18", "woman"]]

こうして自由に組み合わせることが可能です。今は配列数やオブジェクト数を絞っていますが、これが膨大な数になり組み合わせも複雑化すると人間が見れたものではないですね。こういうときこそプログラムで人間の見やすい形式に変換しましょう。

変換について

JavaScriptでも自由に変換することが出来ますが、Javaを使える環境ならばJava側で変換した方がシステムとして高速かつ安定したものになります。Java側で処理する際にはライブラリを使用して処理するのが便利です。


JSONC

JavaでオブジェクトとJSONを相互変換するためのオープンソースのライブラリです。JSONIC公式サイト(http://jsonic.osdn.jp/)に使用方法とダウンロードリンクがあります。ここからダウンロードして「Javaのビルド・パス」の「ライブラリ」に追加してください。プログラム上で import すると上記で追加したライブラリが使用できます。

実際に使用しているこのお方の記事がわかりやすいです。
http://blog.codebook-10000.com/entry/20130930/1380507089



以上、「JSONの構造(オブジェクト・配列)と使い方(Java)」でした。

Android 開発するならAndroid Studio!Eclipse pluginのGoogle公式サポートは2015年度に終了

Androidアプリを開発しようと色々調べていたら、Eclipseベースの開発環境は現在の主流では無くなっているようです。私が以前、官公庁向けのAndroidアプリを開発していた2010年頃とは状況が随分と変わっているようですね。

infoQ - Google、Android Eclipseツールのサポートを終了

上記の記事を要約すると、Eclipse AndroidプラグインのGoogle公式サポートは2015年度をもって終了することが書かれています。そして、今後はAndroidの公式開発ツールをAndroid Studioとしてサポートしていくと。

では、これまでのAndroidアプリ開発環境はどうなってしまうのか。調べて見たらこれも情報が出てきました。EclipseのAndmoreプロジェクトで引き続きサポート活動は続くようです。

Eclipse Andmore

ですので、多少の間はEclipse環境のまま開発を進めてもいいかもしれませんが、ゆくゆくはGoogleが公式の開発環境と指定した「Android Studio」に移行しなければなりませんね。これからAndroidアプリの開発を始める方は「Android Studio」一択でしょう。

2010年頃のEclipse環境Androidアプリ開発はたくさんの課題があったことを今でも思い出します。起動に10分くらいかかって、やっと起動したかと思えばクラッシュして再起動なんてことが頻発していました。ベテランエンジニアでも開発に苦戦していましたし、私は当時新卒入社して数年目で、技術力不足だったこともあり開発には本当に時間がかかりました。そんな状況でしたので、プロジェクトは大赤字を記録していました。みんなで徹夜してたのが懐かしいですねぇ。

今のEclipseでのAndroidアプリ開発環境のことは詳しく知りませんが、組込み系は開発環境が重くなりがちです。これは標準化が難しいからで、専用の開発環境を作れば改善されるのではないかと思います。よって、私は「Android Studio」大賛成です。これで大分軽くなるのではないでしょうか。

よって、今回作るAndroidアプリは「Android Studio」で開発してみようと思います。

java から HTML へのデータ受け渡しについて(詳細版)

以前、「java から HTML へのデータ受け渡しについて」の記事を書きました。
https://somegoro.blogspot.jp/2016/11/java-html.html
この記事ではざっくりした内容しか書かれていない所謂簡易版だったので、今回は内容をもう少し掘り下げた記事を書きます。

思えば上記の記事を書いたころはIT業界に久しぶりに戻ってきたときでした。プログラミングどころかエクセルの使い方もすっかり忘れていて、なんでもかんでもWebで調べていたことを思い出します。何をするにも時間がかかって、当時の現場の皆さんには迷惑をかけただろうなぁ。当時の私はまったく余裕が無かったので、強気な発言ばかりしていました。

さて、思い出すこともそれくらいにしておいて本題に入ります。
「java → HTML のデータ渡し」についてです。ここの部分のデータの渡し方は色々あるのですが、私が最も簡単だと思う方法を今日は記事に書きます。具体的にはjQueryを使います。

jQueryには、便利なデータ受け渡し処理が用意されています。代表的なのが次の3つです。
・$.get
・$.post
・$.ajax

$.get はGETでサーバにデータ送信する処理です。$.post も同じようにPOSTでサーバにデータ送信する処理。$.ajax は記述の仕方次第でGETでもPOSTでもサーバにデータ送信することが出来る処理です。私は便利なので、ほとんど $.ajax を使用しています。GETで送るかPOSTで送るかは、用途によって選択するのが一般的です。

サーバにデータを送信する処理は上記3つですが、サーバからのデータ取得はどのようにするのか。実はこれもサーバにデータを送信する上記3つの処理を使用します。どれでもいいのですが、やはり私は便利なことを理由に$.ajax を使用します。$.ajaxのブロックチェーンには、サーバからデータを取得することが出来る次の処理が用意されています。
・done(function(data) {...}
・success: function(data){...}

2つ書きましたが、どちらを使用してもサーバからのデータを取得することは出来ます。jQueryのバージョンによって推奨しているものがあるので、使用しているjQueryのバージョンを確認して推奨していう方を使用するのがいいでしょう。

引数にdataと書いていますがここの名称は任意でいいです。引数で指定した任意の名称のオブジェクトにデータが入っています。では、どのようなデータが入っているのでしょうか。それはサーバで出力したデータです。サーバ側のプログラムであるjavaでprintln で出力してやれば、上記に書いたdataに自動で取得されます。細かいことはみんなjQueryがやってくれるのですね、便利ですね。

それでは最後に通してで記載しておきます。
javascript
$.ajax({
   type: "POST",
   url: "/javaClassName",
   success: function(data){
     alert(data);
   }
 });

java
public class javaClassName {
  ...
  ...
  ...
  System.out.println(678);
}

以上、java → HTML のデータ渡しの詳細でした。

CSS メモ リストのインデント

リストのインデントはこうやってやるらしい。
これから試してみる。

li {
padding-left: 1em;
text-indent: -1em;
/*必要であれば以下も*/
list-style-position:inside;
}

よくあるダメコードは別の要素で見かけだけ揃えているもの。それではロボットは意味がわからないことでしょう。SEO的なことを考えるのならば、リストはリストとして作った方がいい。


もっと良さそうなコードを見つけた。
<ul style="list-style-position: outside">
<li>項目その1</li>
<li>項目その2</li>
<li>項目その3</li>
</ul>

参照はここからでした。
http://yume.hacca.jp/koiki/list/indent.htm


ちなみに、Google検索で次のように探すとたくさん出てきますね。
・「CSSのliリストで2行目以降を一文字下げる」
・「html リスト 複数行」etc...



HTML formで受けたデータはどのように処理すればいいのか

HTML formで受けたデータはどのように処理すればいいのか


■Getの場合はこうしてしまおう。

・javascriptでクエリ文字列を取得する
http://qiita.com/ma_me/items/03aaebb5dc440b380244

・[JavaScript] JavaScriptでURLのパラメーターを取得する
https://www.ipentec.com/document/document.aspx?page=javascript-get-parameter


■Postの場合はどうしたらいいのだろうか。
HTMLで受け付ける方法を記載してあるものが見つからない。そもそもServer側プログラムに渡すのがセオリーですものね。

PHPだとこんな風にしてデータ取得するようです。

・データの取得
http://akita-nct.jp/~yamamoto/comp/WEB/get_data/index.php

・GETで送られたデータ処理
http://www.phpbook.jp/appli/form/index2.html



ふーむ、やはりjavascriptではPostデータは取得できないようですね。HTMLにPHPを埋め込むしかないようです。

・Javascriptメモ:POSTデータの受信
http://qiita.com/juniskw/items/fb2b2bd6a7a003e5cb26

・フォームからのデータを受け取る方法
http://manabukun.net/kyouzai/php/php11.htm



■詳しい情報
HTTPまわりの情報だとかを詳しく書いてあるサイトを見つけました。ポップなデザインのブログですが今まで見たどのブログよりも詳細に情報が載っています。わからないこともあるのでググって理解します。

・入力された値を送信→受信
http://web-design-felica.hatenablog.com/entry/20150115/p1


・フォームデータを送信する
https://developer.mozilla.org/ja/docs/Web/Guide/HTML/Forms/Sending_and_retrieving_form_data

こちらはMOZILLAのサイトです。さすがに詳しいです。しかし、やはりHTMLでの取得方法は記載していません。


開発現場では軽視されがちな気がするけど、意外と奥が深い フロントエンドの世界。

※追記
iframeにformデータを送ると受け取ってくれるらしい情報を入手しました。明日職場で試してみようかと思います。postもgetも大丈夫なんだとか聞きました。


jQuery で Toggle ボタン作ってみた。addClass, removeClass, hasClass

jQuery で Toggle ボタン作ってみました。

クラスの操作をjQueryで次のように実施しています。
・クラスの追加 → addClass
・クラスの削除 → removeClass
・クラスの確認 → hasClass

このサンプルで想定したのはテーブルをソートしたときのヘッダです。これと先日アップした次の記事を組み合わせることで簡単にテーブルヘッダが作成できると思います。

Goro's Jornal ボタンのサンプル:https://somegoro.blogspot.jp/2016/11/html-css-button-active-hover-background.html

ではサンプルをどうぞ。コピペ自由です。これで残業を減らして健康的に暮らしてください。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>ToggleEvent_jQuery</title>
<script src="https://code.jquery.com/jquery-3.1.1.min.js" integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=" crossorigin="anonymous"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js" integrity="sha256-VazP97ZCwtekAsvgPBSUwPFKdrwD3unUfSGVYrahUqU=" crossorigin="anonymous"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css">
<script>
$(function(){

$('.tab').on('click', function() {
if($(this).hasClass("active01")){
$(this).removeClass("active01");
$(this).addClass("active02");
}else if($(this).hasClass("active02")){
$(this).removeClass("active02");
$(this).addClass("active01");
}else{
$(this).addClass("active01");
}
/* 兄弟要素の属性を指定 */
$(this).siblings(".tab").removeClass("active01 active02");
});
});
</script>
<style>
.tab {
width:200px;
height:50px;
border: 1px gray solid;
display: flex;
align-items: center;
justify-content: center;
cursor:pointer;
}
.active01 {
background:gray;
}
.active02 {
color: white;
background: black;
}
</style>
</head>
<body>
<div class="tab" id="tab01">タブメニュー</div>
<div class="tab" id="tab02">タブメニュー</div>
<div class="tab" id="tab03">タブメニュー</div>
<div class="tab" id="tab04">タブメニュー</div>
</body>
</html>

text入力で自動入力させる方法 autocomplete HTML5

HTMLでテキスト入力欄を作成するには要素に「input type="text"」と指定しますね。

HTML5ではこのテキスト入力欄に様々な値を自動入力出来るようになりました。この自動入力は要素内に指定されたname属性を見ることで自動入力する値を決定しています。

自動入力(autocomplete)で作成したテキスト入力欄は、一つ自動入力でテキスト入力すると他の自動入力テキストに対しても自動で入力してくれます。

ECサイトなどでお馴染みのものですよね、webサイトが自動入力に対応してくれていると便利なものです。

今回も一通りのサンプルを作成してみました。コピペして使ってください。


<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Sample_HTML5</title>
<style>
label {
display: block;
height: 3em;
}
</style>
</head>
<body>
<div class="form_area">
<form action="/" method="post">
<!-- autocompleteはname属性の履歴を見るのでinput要素name属性を必ず指定すること -->
<label>autocomplete-organization<br>
<input type="text" name="organization" autocomplete="organization" autofocus="autofocus">
</label>
<label>autocomplete-email<br>
<input type="text" name="email" autocomplete="email">
</label>
<label>autocomplete-name<br>
<input type="text" name="name" autocomplete="name">
</label>
<label>autocomplete-postal-code<br>
<input type="text" name="postal-code" autocomplete="postal-code">
</label>
<label>autocomplete-address-level1<br>
<input type="text" name="address-level1" autocomplete="address-level1" placeholder="東京都">
</label>
<label>autocomplete-address-level2<br>
<input type="text" name="address-level2" autocomplete="address-level2">
</label>
<label>autocomplete-address-line1<br>
<input type="text" name="address-line1" autocomplete="address-line1">
</label>
<label>autocomplete-address-line2<br>
<input type="text" name="address-line2" autocomplete="address-line2">
</label>
<label>autocomplete-on<br>
<input type="text" name="on" autocomplete="on">
</label>
<label>autocomplete-off<br>
<input type="text" name="off" autocomplete="off">
</label>
<label>submit<br>
<input type="submit" value="送信">
</label>
</form>
</div>
</body>
</html>

ボタンのサンプル HTML CSS button :active :hover background: url

一日一善。一日一サンプル。

今日のサンプルです。ボタンを作成してみました。画像でボタンを作る方法の良い勉強になりました。

画像でボタンを作る方法は、たくさんありますが、現時点ではbackground属性でcssに書くのが一般的のようですね。

ボタンの動作は次のようにして指定できます。
・上にカーソルを置いている時 →  :hover
・クリックしてる最中 →  :active

また、カーソルの動作も指定できます。(通常ボタンはカーソルを上に置いても変化しません)
・上にカーソルを置いている時 → cursor: pointer;



<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Sample_HTML5</title>
<style>
.button {
height:29px;
width:72px;
background: url('google_submit01.png');
background-repeat: no-repeat;
}
.button:hover {
background: url('google_submit02.png');
background-repeat: no-repeat;
}
.button:active {
background: url('google_submit03.png');
background-repeat: no-repeat;
}
.cursor_sample {
height:29px;
width:72px;
cursor: pointer;
color: white;
background-color: blue;
border: 1px DarkBlue solid;
}
</style>
</head>
<body>
<form action="#" method="post">
<label>image_submit<br>
<input type="image" formmethod="post" src="google_submit01.png" alt="submit">
</label>
</form>
<label>image-button, :hover, :active<br>
<div class="button"></div>
</label>
<label>cursor_sample<br>
<div class="cursor_sample">送信</div>
</label>
</body>
</html>


jQuery イベントの登録方法3つ id class 要素(タグ)

jQuery イベントの登録方法を3つご紹介します。
jQuery のイベント登録は非常に簡単で、まるでスタイルシートを扱っているかの如く書くすることが出来ます。

今回ご紹介する3つの方法は次のとおりです。
・ id
・ class
・ 要素(タグ)

id, classはそれぞれ属性などと言ったりもします。要素はタグのことです、<div>とか<span>とか。それではさっそく始めます。

スタイルシートでは次のように記載することで表現を設定しますね。
・ id="****" → #**** { }
・ class="****" → .**** { }
・ <****> → **** { }

jQuery もほとんど同じようなものです。次のように記載することでイベントを登録できます。
・ id="****" → $('#****').
・ class="****" → $('.****').
・ <****> → $('****').


実践的に書いてみると次のようになります。コピペして使ってみてください。それぞれのアラートが確認できることでしょう。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>RegistEvent_jQuery</title>
<script src="https://code.jquery.com/jquery-3.1.1.min.js" integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=" crossorigin="anonymous"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js" integrity="sha256-VazP97ZCwtekAsvgPBSUwPFKdrwD3unUfSGVYrahUqU=" crossorigin="anonymous"></script>
<script>
$(function(){

$('#id01').on('click', function(){
alert("id_button");
});
$('.class01').on('click', function(){
alert("class_button");
});
$('div').on('click', function(){
alert("div_button");
});

});
</script>
</head>
<body>
<button id="id01">id_button</button>
<button class="class01">class_button</button>
<div>div_button</div>
</body>
</html>

jQuery CDN ダウンロードせずにjQueryを使う方法

jQueryをダウンロードせずに使う方法をご紹介します。
ネットワーク越しに jQuery を使わせてもらうのです。このネットワークのことを jQuery CDN と言います。

jQuery CDN は本家 jQuery の他、Google、Microsoftで配信されています。今回は本家 jQuery の最新版の使用方法をご紹介します。

こちらのサイトの次の二つのリンクからコピペします。

サイト:https://code.jquery.com/

・ラベル「jQuery Core」 リンク「minified」
・ラベル「jQuery UI」リンク「minified」


そして、次のようにHTMLファイル中に記載します。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Sample_jQuery</title>
<script src="https://code.jquery.com/jquery-3.1.1.min.js" integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=" crossorigin="anonymous"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js" integrity="sha256-VazP97ZCwtekAsvgPBSUwPFKdrwD3unUfSGVYrahUqU=" crossorigin="anonymous"></script>
<script>
$(function(){

$('#sample').on('click', function(){
alert("hello");
});

});
</script>
</head>
<body>
<button id="sample">Sample_jQuery</button>
</body>
</html>

ボタンをクリックしてみましょう。hello とポップアップされたら jQuery が使用できている証です。


デルファイのお勉強04

前回『https://somegoro.blogspot.jp/2016/08/blog-post_7.html』に引き続き、デルファイのお勉強をしていきます。今回も参考資料は次のサイトを使用させていただきます。

クジラ式 Delphi 資料
http://oto.chu.jp/a.oto.chu.jp/kujira/text/delphi/index.htm

それでは始めましょう。

■ループ処理

・while文でループさせる

while  条件式 do
  処理;

これは一般的な while の処理って感じですね。他の言語と変わらないでしょう。
条件式が true ならば処理を実行します。false ならば処理を実行せずに終了です。

・for文でループさせる

for  変数 := 初期値 to 終了値 do
 処理 ;

これは少々特殊な感じがしますね。初期値を変数に代入して、処理を実行します。
そして、変数が終了値になるまでループを続けます。
終了値になったら、処理を実行して終了します。最後に処理を do することが肝ですね。

・repeat文でループさせる。

repeat
  処理1 ;
  処理2 ;
until 条件式;

これは do while みたいな感じですね。まず最初に処理を実行する、その後に条件式によりループするかどうか判定する。

・Breakで、ループ処理から抜ける
・Continueで、ループ処理の頭からやりなおす。
・Exitで、プログラム自体を終了させる。

これらは一般的ですね。どれもループから抜け出す方法です。


■定数

定数は値の変わらない変数のことです。Java で言うところの final 型の変数、C や C++ では定数がありますね。書き方は C や C++ とほとんど同じです。

const
 TEISU = 10;

これで TEISU という名前の定数が出来ました。10 という値は変えることが出来ません。デルファイの変数宣言の仕方とは少々違うんですね。デルファイでいうと条件式に似てますね。


■関数
デルファイにも関数があるようです。2つのタイプの関数があってそれぞれ機能が異なります。

 ・procedure ←値を返さない
 ・function ←値を返す

それぞれ見ていきましょう。

・procedure

書き方はこのとおりです。これで Kansu_kun01 という名前の関数ができました。戻り値は無く、処理をするだけの関数です。

procedure Kansu_kun01 ( HIKISU_MOJIRETU : String );
 begin
 処理;
 end;

引数はセミコロンでつなぐことで複数指定することが出来ます。さらに呼び出すときには次のようにします。

begin
 Kansu_kun01( 'Hello_World' );
 Readln;
end.

このとき、呼び出す前に関数を宣言および作成しておかないと、エラーになってしまうようです。


・function

書き方はこのとおりです。これで Kansu_kun01 という名前の関数ができました。戻り値がありますので、処理をして値を返します。おそらく、Result に値を設定することで戻り値として吐き出せるのでしょう。

function Kansu_kun02 ( a : Integer; b : Integer ) : Integer;
 begin
  Result := a + b;
 end;

var
 test_kekka : Integer;
begin
 test_kekka := Kansu_kun02 ( 1, 2 );
 Writeln ( test_kekkakekka );
 Readln;
end.

こちらも、メイン処理にて関数を呼び出す前に、関数を宣言および作成しておかないと、エラーになってしまうようです。


・メイン関数

メイン関数は関数宣言せずにいきなり begin で始まり、end. で終了します。こんな感じです。

begin
 処理;
end.

上記でも度々登場していますね。

この辺で1000文字を超えてきたので一旦区切ることにします。

それではまた。

デルファイのお勉強03

前回『https://somegoro.blogspot.jp/2016/08/blog-post_6.html』に引き続き、デルファイのお勉強をしていきます。今回も参考資料は次のサイトを使用させていただきます。

クジラ式 Delphi 資料
http://oto.chu.jp/a.oto.chu.jp/kujira/text/delphi/index.htm

それでは始めましょう。

■型変換について
・IntToStr() は、Integer 型から、String 型に変換する処理。中身にInteger 型を入れれば、String 型で吐き出してくれる。

・FloatToStr()は、 Double型から、String型へ変換する処理。上記と同じ感じ。

・ Delphiには親切なヘルプが付いているらしい。どうやってみるのだろうか。

・Trunc( ) は、少数点以下を切り捨てる処理。

・Round( )は、 小数点以下を四捨五入する処理。
・Readln()は、ユーザーから入力を得る処理。中身の変数で入力を受け付ける。

・StrToIntDef( , )は文字列から整数に変換する処理。
二つの引数を指定する。最初に変換対象、次に変換できなかった時に吐き出す値。
すると、今まで変換できなくいとエラーとなって終了になってしまっていたものが、終了にならずに第二引数で指定したものが吐き出される。

■条件分岐について
・if 条件式 then 
  処理01;
 else
  処理02;

条件分岐処理は上記のように記載する。

・条件式は次のとおり
a = b
a > b
a < b
a >= b
a <= b
a <> b

・併せて書くとこんな感じになる

if a = b then 
  処理;

aとbが同値ならば配下処理を行う。
このとき、かっこがないのでわかりづらいけど都合よく次の処理を実行してくれる。
同値でないなら次の処理を飛ばして、その次の処理に行く。
else もふつうに使用できる。これもかっこは必要なし。
  
わかりやすく書くとこんな感じになる。(もちろんこれでも正常に機能する)
  
if ( a = b ) then 
  処理;

・and で、複数の条件式で判定する

このように書くと複数の条件で条件分岐処理を書くことができる。and は、「かつ」という意味です。一般的な言語と変わらないですね。

if ( a = b ) and ( a = c ) then 
  処理;

・or で、複数の条件式で判定する

このように書くと複数の条件で条件分岐処理を書くことができる。or は、「または」という意味です。一般的な言語と変わらないですね。

if ( a = b ) or ( a = c ) then 
  処理;


■ラベル
関数の名前みたいな感じでしょうか。ラベル名の下に処理を書きます。これもカッコなどでは囲わないので改行でまとまりの終了が判断されます。
ラベル名01
 処理01;
 処理02;

ラベル名02
 処理01;
 処理02;

こんな感じで書かれます。私を含め、今時の言語になれた人には違和感を感じますね。

・begin の前に宣言します。

・label NANTOKA_LABEL;
このように終了はセミコロン;です。

・label NANTOKA01_LABEL, NANTOKA02_LABEL;
2つ以上宣言したい場合はカンマ(、)で区切ってこのように宣言することができます。

・goto ラベル名;
これでラベル名の処理が実行されます。

さて、1000文字を超えたので、この辺で区切ろうと思います。

それでは。

デルファイのお勉強02

前回『https://somegoro.blogspot.jp/2016/08/blog-post.html』に引き続き、デルファイのお勉強をしていきます。今回も参考資料は次のサイトを使用させていただきます。

クジラ式 Delphi 資料
http://oto.chu.jp/a.oto.chu.jp/kujira/text/delphi/index.htm


それでは始めましょう。
GUIはコンポーネントをクリックするだけで画面上に対象のコンポーネントを表示させることができると紹介した。

ではもう一つのタイプのCUIはどうでしょうか。これはコンソールタオイプの画面ですね。図とかは表示させることはできません。しかし文字は表示させることが可能です。Windowsで開発の場合、一般的にはMS-DOSプロンプトを使うことになるでしょう。

このCUIは機能確認のときにあ便利らしいです。なぜかは今のところ、わかりません。それでは進んでいきましょう。


■コンソールについて
・コンソールの時も 処理はbeginからend.までの間に記載します。

・コンソール版でもエラーは出る。型が合わないものを入れたりしようとすると。
  どういう風にでるのかは不明。実際に試してみたいけど、これ(デルファイ)無料なのかな??


■処理について
・Readln;は、キーの入力待ちをする処理です。

・Writeln('ここに表示したい文字または数字を記載する。');という処理です。

・Writeln(この中では演算処理も可能);という処理です。

・演算子modは、割り算の余りを出してくれます。


■変数について
・変数は var Test : Integer; こうやって書く。
  この場合 var が変数宣言。Testが変数。Integer が型。

・変数宣言は一回書けば良い。だから2個の変数を扱いたいときは次のように書く。
  var
      Test01 : Integer;
      Test02 : Integer;

・変数はbeginからend.までの間には書けない。じゃどこに書くのっていうと、begin の前。
  宣言するみたいな感じですね。

・変数の代入の仕方  Test := 10000000000000; これで変数Tstに数字10000000000000を代入することが出来た。みづらいかもしれないから全角で書くと、:=となっている。

・デルファイは大文字小文字の区別をしない。
  だから変数書くときには要注意。文字検索では引っかからなくとも、実際には同じ変数というのがある。


・変数の種類
変数にはいろいろなものがありますが代表的なものです。代表的なものは他の言語と変わらないですね。

 Integer  整数
 Double  実数
 String  文字列
 Boolean  真または偽
 Char  文字型かつ半角一文字

・配列型変数

上記の方法では、変数を100個宣言するのは非常に大変ですね。そこで便利な宣言方法があるのです。それが配列型変数です。

HTest : Array [ 1..100 ] of Integer;

これで変数を100個作成することが出来ました。 HTest[1], HTest[2], HTest[3] という感じで、  1~100までの配列型の変数ができています。

また、こうすれば値も入力できた状態で変数を宣言することができます。

var
 kokugo : Array [ 1..5 ] of Integer = ( 10, 20, 30, 40, 50 );


・ローカル、グローバル

これも他の言語でお馴染みのものです。デルファイにもあります。

ローカル変数は、関数内で宣言したもので、宣言した関数以外の関数内では使用することが出来ません。

グローバル変数は、関数の外で宣言されたもので、プログラム全体で使うことが出来ます。



そろそろ1000文字を超えたので区切ります。
次回お楽しみに。(おもてなしする文章ではないですね(^^;))


デルファイのお勉強01

ここで唐突にデルファイのお勉強を始めます。

まずデルファイとは何なのか確認してみましょう。

Delphi
Embarcadero Delphi (エンバカデロ デルファイ) は、コンソール (CUI)、デスクトップ (GUI)、Web、モバイルアプリケーション開発のための統合開発環境 (IDE) である。

wikipedia(https://ja.wikipedia.org/wiki/Delphi)より


統合開発環境なんですね。言語じゃなくて。

じゃ言語は何なの?というと今のところ不明です。wikipediaには記載なしでしたが、このまま調べていけばわかることでしょう。

とりあえず今回はわかることをザッと書いていきます。

次のお方のサイトが非常に見やすいんじゃないかと思いましたので、確認するサイトはこれらを見ていこうと思います。

クジラ式 Delphi 資料
http://oto.chu.jp/a.oto.chu.jp/kujira/text/delphi/index.htm

Delphi入門
http://www.w-frontier.com/delphi/index.html


イメージとしては「C++ Builder」に近いらしいです。同じボーランド社発のものですし。


さて、お勉強にあたって引用記載はしない方針でいきます。(引用と記載することや引用箇所を明示すると、学習の流れの妨げになるためです。) 一般的なプログラミング手法で書きつつ、上記サイトで紹介されていることの要点をまとめる形式で備忘録的にブログを書いていこうと思います。

それではスタートです。

・早速出てきました。 言語はDelphi言語というらしいです。
・部品コンポーネントをクリックすることで画面を作っていく。
・F9で実行

・部品コンポーネントを置いただけでは表示されるだけ。実際の動作は自分でプログラムを記載しないといけない。

・ボタンコンポーネントをクリックすると、画面上にボタンが現れる。そのときのプログラムは次のとおりである。
 procedure TForm1.Button1Click(Sender: TObject);
 begin

 end;

この begin end 間にプログラムを書いていく。うん、今のところ実に簡単だ。

・ポップアップメッセージの出し方。先ほどの容量で次のように記載する。
 ShowMessage('ここにポップアップメッセージを記載する。シングルダッシュで囲ってる');

・テキストエディタの内容をポップアップ表示させる方法は次のように記載する。
 ShowMessage(Memo1.Text);

このとき、Memo1はおそらくテキストエディタのIDのことでしょう。IDは自動割り当てなのかな。記載していなかったけど。そのIDはどこを見れば確認することができるのだろうか。


この辺で1000文字を超えてきたので一旦区切ることにします。

それではまた。


「 VBScriptの説明 」 と 「 複数行を一度にコメントアウトする方法 」

みなさん「VBScript」って使用していますでしょうか。私はお手軽なのでたまに使用します。


今回の記事では 「VBScriptで複数行を一度にコメントアウト」する方法を記載します。しかしその前に、「VBScript」について多少の説明をしておきましょう。


・「VBScript」とは

「VBScript」はその名のとおりスクリプト言語です。いわゆるVB(Visual Basic)の簡易版です。では、どんなことが出来るのでしょうか。


「VBScript」はWSH、IIS、IE上で動作するそうです。私はWSH、IISというのは良くわかりません。わかりませんが、ブラウザ依存なしで独自画面を作成して作れることと認識しています。実際に「VBScript」でIEでない独自画面を持つことが出来ます。IE上で動作させたいとくにはHTMLファイル内に記載します。


「VBScript」を使ったプログラムを書くための特別な環境は必要ありません。スクリプト言語なので当然と言えば当然ですが。テキストエディタにソースコードを記載して、拡張子を.vbsとして保存。そのファイルをダブルクリックすることで使用できます。


それでは実際に、「VBScript」を使ったファイルを作成してみましょう。今回はテストとして「テスト」とポップアップ画面を表示するファイルを作成します。

テキストエディタを開いて次の文を書き込んでください。

MsgBox("テスト")


書き込めたら、次の名前でファイルを保存してください。

test.vbs

これで、「VBScript」ファイルが出来上がりました。では、この出来上がったファイルをダブルクリックしてみてください。

テスト と表示されたポップアップ画面が出ることでしょう。これでテストは成功です。




さて、「VBScript」とはどんなものなのかを解説してきました。ここからは「VBScriptで複数行を一度にコメントアウト」する方法について書いていきます。


「VBScriptで複数行を一度にコメントアウト」する方法


結論から言うと「VBScriptで複数行を一度にコメントアウト」することは出来ないようです。
でも、同じようなことは出来ます。常に実行しないようにすれば良いのです。コメントアウトのようなものなので次のように書きます。


If False Then
' 実行したくない処理
xx
yy
End If



これで、複数行を一度にコメントアウトすることが出来ます。



いかがでしたでしょうか。今回の記事では次の2点を解説しました。
1.VBScriptとは何なのか
2.VBScriptで、複数行を一度にコメントアウト

スクリプト言語なので簡単に実験できて理解しやすいですね。


上司がクソ野郎になってきた

上司がクソだ。 全然勉強していなくて話が通じなくてクソ REST知らないってどういうことなんだろう。弊社標準になってから久しいJavaをまともに組めないってのはどういうことなんだろう。 計画上では詳細設計フェーズが半分を過ぎようというときに要件定義できていないってのはどう...