HaskellにおけるMainについて

Haskell始めました

 数学を勉強したい気持ちと関数型を学びたいという気持ちの二つがあり、知り合いに勧められてHaskellを始めました。 現在、The Haskell Road to Logic, Maths and Programmingをゆっくり翻訳しながら読んでおります。 基礎の基礎ですが、そこでわからないことがあったのでメモ代わりに書きます。

スクリプトファイル

これまでghciでの動きしか見ていなかったので、スクリプトファイルの実行は試していませんでした。 Atomを起動し、いざ書こうとするも、ただ数字を書くのではなくmainが必要とのことでした。

module Main where

main :: IO ()
main = putStrLn "Hello World"

module Main where

自作のモジュール Mainを定義したものです。where句は補助関数定義として活用しますが今回はHello Worldを出すだけなので定義する補助関数はありません この一行はなくても問題ありません。

main :: IO

main関数にIO型モナドの型を与えます。 今現在、僕がモナドについて理解度が低いので説明はこれぐらいにしてください。

main = putStrLn "Hello World"

main関数の処理を書きます。これをアクションと呼び、今回では Hello Worldを出力します。

GraphQLについて

www.adventar.org

アドベントカレンダー8日目です。公開した日は12月9日ですが、8日目です。 今回はGraphQLについて書きたいと思います。と言っても下を読んだことのメモみたいなものですが。

graphql.org

GraphQLとは?

  • GraphQLはAPIのためのクエリ言語で、 データ用に定義した型システムを使用してクエリを実行するためのサーバー側のランタイム。
  • GraphQLは特定のデータベースまたはストレージエンジンに結びついておらず、代わりに既存のコードとデータに基づく。
  • GraphQLサービスは、これらの型の型とフィールドを定義し、各型の各フィールドに関数を提供することによって作成される。

たとえば、ログインしているユーザが(me)であることと、そのユーザの名前を示すGraphQLサービスは、次のようになります。

type Query {
  me: User
}

type User {
  id: ID
  name: String
}
function Query_me(request) {
  return request.auth.user;
}

function User_name(user) {
  return user.getName();
}
  • GraphQLサービス(通常はWebサービス上のURL)が実行されると、GraphQLクエリを送信して検証および実行することが可能
  • 受信されたクエリは、定義された型とフィールドのみを参照していることを確認するためにまずチェックされ、次に提供された関数が実行され結果が生成される。
{
  me {
    name
  }
}

Could produce the JSON result:

{
  "me": {
    "name": "Luke Skywalker"
  }
}



かなり直感的にクエリを叩けるのはいいかなと思います。最近ではRESTfulではなく、GraphQLが次のトレンドになるとまで言われており、今後注目の言語じゃないかと思います。

Jenkinsの構築をしてみたかった

※導入しかしていません。

www.adventar.org

上のアドベントカレンダー4日目の記事です。

Jenkinsの構築をさっさと構築する方法です。

環境何も用意してなくて面倒だったので、OS Xで行います。

導入

まず最初にインストールを行います。
Macbrewが入っているならばすぐに入ります。

brew install jenkins

これでインストールは終わります。 あとはサービスを起動すればブラウザでhttp://localhost:8080/で開けばJenkinsが動いていることが確認できます。

brew services start jenkins

最初に初期用のパスワードを求められるので、パスワードが置いてあるcatかlessを使用して /Users/username/.jenkins/secrets/initialAdminPasswordの中身をみましょう。

そうすると下の画面が出ます。今回はプラグインを選択するつもりはないので、推奨の青いほうを選択しましょう。

f:id:be_07:20161204204709p:plain

しばらく時間をおくとアカウント登録の画面に切り替わるので入力すると完了です。

f:id:be_07:20161204212334p:plain

f:id:be_07:20161204215421p:plain

機会があれば、githubとの連携とか自動化とかやります。たぶん。

少し詰まったところ

途中

qiita.com

上の記事を見て、僕も似たようなことやりたいなぁと思い、実行しようと思いました。 そこでまずはデータ集めをしようと、Pythonで検索とダウンロードを行うスクリプトが必要だったので、下の記事を丸コピしてみたところ、いろいろ、つまづいた。

qiita.com

どうやらgdataの部分でpython3に対応してないみたいなので、

2to3 -w *.py

などで3系用に変換していたのですが、未だエラーが出続ける。 どういうことだと思ってgdata-python-clientのレポジトリを拝見したところ、コミット履歴を見てなんとなく開発がストップしているんだなということが察しました。

女子小学生を狙え

ハッカソンに参加しました。

スローガン株式会社のHackWarsというハッカソンに参加しました。 『学校教育を変えるアプリケーションは開発せよ』というテーマだったので、我々の班は女子小学生をコアユーザーと仮定したプログラミング学習支援用アプリケーションを開発しました。

ありがたいことに賞をいただくことがよかったです。やはりターゲットがよかったんですかね。

今回のハッカソンをデザインの重要性を学んだと思います。やはりデザインができる人がでいると、人に見せる際に印象に残りやすいのかなと感じました。 また、githubのProjectsを使ったので、誰が何をしているのかわかりやすかったのも、作業進行に役立ったのかなと思います。

機会があればまた参加したいですね。次こそは最優秀賞を取りたいです。

決意報告みたいなもの

f:id:be_07:20161024232136g:plain

お久しぶりです。三ヶ月ぐらい放置しました。

この三ヶ月間で僕は真人間になることができたので、これからこのブログも哲学とか機械学習とか声優とか麻倉ももを扱ったまともな内容になると思います。

そんだけ。

一切皆苦

祇園精舎の鐘の声、諸行無常の響きあり。沙羅双樹の花の色、盛者必衰の理をあらはす。おごれる人も久しからず、ただ春の夜の夢のごとし。たけき者も遂にはほろびぬ、ひとへに風の前の塵に同じ。

遠くの異朝をとぶらへば、秦の趙高、漢の王莽、梁の朱忌、唐の禄山、これらは皆、旧主先皇の政にも従はず、楽しみを極め、諫めをも思ひ入れず、天下の乱れんことを悟らずして、民間の愁ふるところを知らざつしかば、久しからずして、亡じにし者どもなり。

近く本朝をうかがふに、承平の将門、天慶の純友、康和の義親、平治の信頼、これらはおごれる心もたけきことも、皆とりどりにこそありしかども、間近くは六波羅の入道前太政大臣朝臣清盛公と申しし人のありさま、伝え承るこそ、心も詞も及ばれね。