やわらかテック

興味のあること。業務を通して得られた発見。個人的に試してみたことをアウトプットしています🍵

Elixir

【第7回清流elixir勉強会@fukuoka.exさん】Elixirのシギルについて調べて色々試した【リモートでジョイン】

トピック 昨週に引き続き、清流elixirの第7回目の勉強会を開催させて頂きました 今回は清流elixirのみではなく福岡を拠点に活動されているfukuoka.exさんのもくもく会に リモートでジョインさせて頂きました fukuokaex.connpass.com もくもく会を主催されて…

【Elixirで学ぶCS】Elixirで加算器を実装するまで

なにこれ(既視感 前回の記事の続編です www.okb-shelf.work まだ挫折してないです www.oreilly.co.jp この本を勉強しているつもりなのですが、普通に難しい 僕のレベルが低いのもあるが、説明があるようでなかったりと結局ググらないと分からない部分が多い …

【レポート】第6回清流elixir勉強会inMisoca様を開催しました【競プロ@Elixir】

トピック 今回で第6回目の勉強会を開催致しました elixir-sr.connpass.com 2019年4月から清流elixirの運営を初めて早2ヶ月 Elixirを全く知らない状態 & 新卒のクソザコでも何とかなりました 昨週、東京に行って感じたことは名古屋はまだ多くの技術がブルーオ…

【実装コード有り】Elixirでpandasっぽいcsvファイルを触るモジュールを作ってみた

ゆるふわな動機 pythonのライブラリにpandasと呼ばれるものがある 厳密にはC言語で書かれているのでpythonかというとそうでもないが このpandasが提供しているAPIにread_csvというものがあり csv形式のファイルをdf形式で読み込みpandasでお気軽にゴリゴリと…

岐阜県民だけどErlang&ElixirFest2019のために初ソロ東京に行ってきた

Erlang & ElixirFest2019とは Erlang & Elixirが大好きな人やら興味のある人が集まる万博みたいなお祭り 年に一度開催されていらっしゃるようで今年で3度目になるそうです Erlang & ElixirFest2019 elixirconf.connpass.com 開催場所はご想像の通り、東京で…

【Elixirで学ぶCS】Elixirで論理ゲートを実装するまで

なにこれ 僕は一応、理工学部の出身ではありますが建築土木が専攻でした この業界にいながらcsについての知識が皆無 前からやらねば...やらねば..と思ってはいたが触れる機会がない & 一度挫折済み しかし、アルゴリズムの勉強を始める中でデータ構造の重要…

【レポート】第5回清流elixir勉強会in丸の内を開催しました【再帰関数】

トピック 今回で第5回目の勉強会を僕の運営しているコミュニティで開催することができました 清流elixir 先週にはfukuoka.exを運営されているpiacereさんと Twitterで繋がらせて頂きまして多くの方に清流elixirの名を知って頂けました 本当にあざます!!! や…

【超簡単】Elixirとtrotを使って爆速でAPIを立ち上げるまで

おなじみgit探検隊 Elixirに限ったことではないが、定期的にgitでトレンドのレポジトリはチェックするようにしている そうすると大体、何が流行っていて何に注目が集まっているかが何となく分かる 最近は中国語のREAD.MEが多くて翻訳ないと詰む さておき、ま…

【レポート】第4回清流elixir勉強会in丸の内を開催しました【色々なパターンマッチ】

トピック 今回で第4回目の勉強会を僕の運営しているコミュニティで開催することができました 清流elixir connpassでの参加人数+開催直前に新規の1名の方に参加して頂けました 少しずつ賑わってきてる感があって素直に嬉しいです また参加者の業種や立場がバ…

【実装コード有り】Elixirで近しいデータを予想するためにk近傍法を実装した

k近傍法とは ざっと説明するとAというデータとBというデータが どれだけ近しいかを予測するためのアルゴリズム 仕組みは超簡単で以下のようなデータがあったとする size(大きさ)は1~5の5段階 is_red(見た目)は1~5の5段階 has_seed(種があるかないか)は0or1 a…

【実装コード有り】Elixirでタイポ発見器を最長共通部分列を使って作る

プログラムでタイプミスを修正する難しさ 以下のような変数があったとする user_input_textは自身で入力したテキストで"apple"と入力したつもりが 間違えて"anpple"と入力してしまっている user_input_text = "anpple" answer_text = "apple" 他にもタイプミ…

【実装コード有り】ElixirのMapSet(集合)の使い方と集合カバー問題を解くまで

Setは非推奨 元々、Elixirに実装されていたSetという集合のモジュールは現在、非推奨となっており MapSetを使ってくれよなと公式が言っている なのでよほどの理由がない限りはMapSetを使えばいいんじゃないかなと MapSetの使い方 MapSetモジュールを使うこと…

Elixirでダイクストラ法を実装して最短経路を求めるまで

グラフと最短経路 こんなグラフのネットワークがあったとする Start, A, B, Goalをそれぞれノードといい 6,2,3...のような数字をエッジの重み(ここでは距離)という StartからGoalへの最短経路は見て分かるように Start -> B -> A -> Goal になるかと思う こ…

【サンプルコード有り】ElixirとFakerを使ってサンプルデータを作る方法

githubの探検中に面白いものを見つける なんだこれは(褒め言葉 github.com hexdocs.pm Faker is a pure Elixir library for generating fake data. fmfm... どうやらフェイクデータを色々作れるライブラリだそうです 公式ドキュメントを見てみると 名前 アド…

Elixirでqueue使って幅優先探索を実装する

Elixirにqueueがなかった件 しかし、Erlangには用意されていた Erlangの公式ドキュメントにばっちしqueueについて記述されている Elixirで解決できない時はErlangのドキュメントを見るというのは本当ですね Elixirからのqueueの使い方 新規のqueue作成 2つの…

【実装コード有り】アルゴリズム初心者がセレクトソートとクイックソートをElixirで実装する

ソートの必要性について www.okb-shelf.work 前回の記事で実装した二分探索は対象のリストがソートされていることが前提であり、つまりはリストをソートしてくれるアルゴリズムが必要になるということ え?もうEnum.sort()あるけど?とは言わない約束 一度自…

【実装コード有り】アルゴリズム初心者がElixirで二分探索のコードを実装するまで

二分探索の生まれた背景 昇順ソート済みのリスト(配列)から特定の値のindex番号を取得したいとする #8のindex番号はいくつ?(7が知りたい) item = 8 lst = [1,2,3,4,5,6,7,8,9,10] これを単純に配列の頭から探索していくと index番号の0から初めて7番目、すな…

【サンプルコード有り】ElixirでTaskを使った簡単な並行処理の実装方法

Taskとは Elixirでプロセスを作成する方法はいろいろあります 以前はelixirで並列処理を使ってファイルを同時に開き特定の文字を検索するで 並列処理をやりましたが、その時は spawn(module, :func, [argument) こんな感じでspawnメゾットを使ってプロセスを…

【レポート】第3回清流elixir勉強会in丸の内を開催しました【マップのパターンマッチ】

トピック 昨日、愛知県の丸の内にて私が運営しているコミュニティ清流elixirで 第3回目となる勉強会を開催させて頂きました さすがに3回目ともなると多少は要領が分かってきてわりとスマートに 活動できるようになってきたかと思ってます(力不足ですません …

【サンプルコード有り】Elixirでのhttpリクエストを簡単な叩き方

公開APIについて 以前「清流elixir」の勉強会でこの公開API、通称ジブリAPI(勝手に命名)を Enumとパイプ演算子を使って遊ぶ予定だったんですけど 当日になってcurlの戻り値が%{}(マップ形式)となっていないことに気づく(そりゃそう 知見としてもかなり強力な…

ErlPortでpythonのクラスメゾット呼び出しとElixir側にAtomを返す

前回のはなし www.okb-shelf.work Elixirからpythonの関数を呼び出して、最終的にjanomeを使って形態素解析を行いました 本当はpythonのclassメゾットの呼び出しとElixirに対して Atomのデータを返すということがやりたかったんですけど そこそこ記事が長く…

Elixirからpythonを呼び出してJanomeで形態素解析してみた

ErlPortなるものを発見 色々とネットサーフィンしてたらErlPortというErlangのライブラリを発見 なんとErlang環境からpythonとRubyを実行できる模様...凄すぎる ErlangのモジュールはElixirから呼び出し可能なので勝ちました 前回の記事で作成したparser関数…

【レポート】第2回清流elixir勉強会in丸の内を開催しました

トピック 第2回清流elixir勉強会 昨日、無事に第2回の勉強会を開催させて頂きました 第1回目では方針を決める時間が長く、手を動かす時間が全くなかったのですが 今回の勉強会では「パイプ演算子を触る」というテーマで 普通に真面目に勉強しました(そこそこ…

【サンプルコード有り】ElixirのOptionParserの入門と使い方

OptionParserとCLI 最近はこってりした記事を書いてばかりなので 久々にあっさりした記事を書こうと思います CLIって何 ここらへんは自己満程度の部分でメインはOptionParserの使い方のところなので そんなもん知っとるわという方は飛ばしてください Command…

elixirで並列処理を使ってファイルを同時に開き特定の文字を検索する

あいかわらず長いタイトル どういうことかというと ./file/file1.txt ./file/file2.txt : ./file/file99.txt file(n).txtには単純に文字が書いてあるだけです こんな感じですかね ppppppcatpppppppppppppp ppppppcatpppppppppppppp ppppppcatpppppppppppppp …

elixirでcsvファイルにデータを書き出す

mixのプロジェクトの用意 前提としてmix newでプロジェクトが作成されている状態とします mixコマンドを使ってプロジェクトを作成するまでの手順は こちらの前半部分で触れていますので 必要であればご覧ください テキトーにgitを覗いてみる あった(秒速 bea…

elixirで簡単にAmazonレビューをスクレイピングする

用意するもの elixir(1.8.1でやってます) mix(elixirのビルドツール。クソ便利) HTTPoison(HTTPクライアント) Floki(HTMLパーサー) 事前準備について elixirのインストールについては割愛します 公式のドキュメントみた方が圧倒的ッ!に早いです こちらに各環…

【事後報告】清流elixirというコミュニティを立ち上げました

今更ですが connpassで東海地方(主に岐阜/名古屋)でelixir勉強しようぜ!!って 安直な気持ちで立ち上げました「清流elixir」です 名前の由来はアホほど適当で、僕は岐阜出身です 岐阜といえば川でしょ。綺麗だから清流でええや。elixirのアイコンも雫みたいな…

elixirで2次元のリストを縦方向に結合(merge)する

日本語が下手な件 どういうことかというと... #この配列を _lst_data = [ [1,2,3], ["a", "b", "c"], [true, false, true] ] #こうしたい _output_image = [ [1, "a", true], [2, "b", false], [3, "c", false] ] 要するに「2次元のリストを縦方向に結合(mer…

【サンプルコード多数あり】Reduce関数の基礎と考え方

関数型言語での繰り返し処理 関数型言語には基本的に繰り返し分(for文)と呼ばれる文法は用意されておりません。では、例えば以下のような処理をどのように行うのでしょうか。 配列の要素を1つずつ取り出し2倍にする 上記の処理の結果から5以上の値を取り除く…