aptについてのまとめ

FjordBootCampの課題で、Debianのインストールを行いました。 あわせてaptについて学んだのでまとめ。

参考:APT - Wikipedia

aptとは?

Advanced Packaging Tool Debian用に開発されたパッケージ管理システム。 dpkgのフロントエンドとして動作するように設計された。

aptの機能

パッケージ同士の関係を「依存」「推奨」「提案」「衝突」の4つにわけて管理し、目的のパッケージをインストールするために必要なパッケージ・削除する必要があるパッケージを自動計算してくれます。

パッケージ管理システムとは?

そういえば過去にHomebrewについて学んだ時もでてきた言葉です。

黒い画面に入門しました - kasumi∞blog

MacでいうHomebrewみたいな感じかな?とおもったら、wikipediaのHomebrewの項目に、以下のようにありました。

LinuxDebianのAPTに似た使用感で急速に利用が広がっている。

なるほど、Homebrewの方がaptのmacOS版といった方がよさそうですね。

dpkgとは?

Debianのパッケージ管理システムの基礎となるソフトウェア。 パッケージのインストール、パッケージの削除、パッケージの情報を得るために使われる。

つまり、aptでインストールをすると、dpkgが呼ばれるということでしょうか。 aptを使わずにdpkgだけでインストール・削除をすることもできるようですが、依存関係などを自分で管理するのは大変……ということでaptが便利なのですね。

aptでvimのインストール

まず、パッケージの検索をしてみます。

$ apt search vim

めちゃくちゃいっぱい出てくる😵

正規表現がつかえるということで、使ってみました。 "vim"の完全一致

$ apt search ^vim$

1件だけでてきました。これですね。 ということで、インストールしてみます。

$ apt install vim

インストールできちゃいました。簡単です。

その他コマンド

パッケージの更新

$ apt upgrade パッケージ名

パッケージの削除

$ apt remove パッケージ名

余談(イースターエッグ

wikipediaイースターエッグが載っていました🥚(こういうのをイースターエッグというのですね)

$ apt-get moo
         (__) 
         (oo) 
   /------\/ 
  / |    ||   
 *  /\---/\
    ~~   ~~   
...."Have you mooed today?"...

apt-getとapt-cacheと統合することを目指したのが、aptというコマンドのようです。 以下でもできました。

$ apt moo

かわいいです🐮🐮🐮

Ruby on RailsでLINE Bot② はじめてのリファクタリング

6/16 Rails Girls Tokyo, More!に初めて参加してきました🎈

Rails Girls Tokyo, More!とは、Rails Girls Tokyoの卒業生向けの勉強会です!本家と同じく、コーチにRubyRailsなどなどを教わることができます。Rails Girlsでつくったアプリの続きをやることもできますし、自分でやりたいことを持っていってコーチに質問することもできます!ありがたい場です🙏🙏🙏🙏🙏

Rails Girls Tokyo 9th の記事→Rails Girls Tokyo 9th に参加しました - kasumi∞blog

ということで、私は作成中のLINE Botもっていきました。

LINE Botの現状

  • herokuで動いている。
  • ユーザーが投稿したメッセージに対して条件が合えば簡単な返信をする。
    (例: "おはよう"→「おはよう!」)
  • 迷っていることをBotに決めてもらえる機能などがある。
    (例: "A B どっちにしよう?" →「Aにしよう!」または「Bにしよう!」)
  • ちゃんと動くし楽しく使っているけれど、なんだかコードが読みにくい。。。😖

問題と感じていること

  • controllerにこんなに長々と処理を書いてるけど、これ絶対ここに書くものじゃない気がする……🙁どこに書けばいいんだろう?🤔🤔🤔
  • ここのコード、簡単な処理なのにこんなにコードが長い……😞絶対にもっと短く読みやすくできるでしょ!でもどう書けばいいんだろう?🤔🤔🤔

やったこと・学んだこと

  • Controllerの処理のうち、返信を生成する処理をModelに移しました。
  • 1つ1つの処理の無駄な部分(returnや不要な変数への代入)、読みにくい部分をわかりやすく変更しました。

(このようにコードを整理することを"リファクタリング"という!)

Controllerについて

ControllerはModelとviewの仲介などデータの受け渡しをするところであるため、LINE Botでいう返信の生成の処理などは普通Controllerには書かないとのこと。
では、なぜ私はControllerにいろんな処理を書いていたのかというと、どこに書けばよいのかわからなかったからでした。(LINE BotにViewは必要ないし、Modelってデータベースつくるときにできたファイルだったような?返信は別にデータベースには格納しないし……。でもControllerに書くのはなんいか変だなあ。)

しかし、Modelはデータベースに格納するデータじゃなくても構わないのですね😳
返信を生成するメソッドを、Modelでdef self.make_replyで定義し、Controllerからは、クラス名.make_replyで呼び出しました。
(また、class << self endの中でメソッドを定義すれば、いちいちすべてのメソッドにself.をつけなくてもクラスメソッドとして定義できる!)

ほかにもたくさん

その他、知らないこと・自分一人では気づけないことをたくさん教えていただきました!

  • スネークケースとキャメルケースの使い方
  • ActiveModelについて
  • メソッドの命名方法(略称は誤解を生むので避けた方が良い)
  • KVSについて(Key-Value Store)
  • class Struct(構造体クラス)
  • 三項演算子(画面上に連なる長々if文がすっきり😂)
  • decoratorについて(Modelの情報を少しだけ加工してViewに表示させたいときなどに使える!)
  • cloudinaryの便利な使い方
  • GoogleChromeの右クリック→検証
  • WebAPIについて

感想

今回もすべてが学びの時間で、本当に有意義で楽しかったです。

○○がやりたい!と思ったときって、検索するとだいたいこうやってやりましたという記事が出てきて、その通りやれば結構できちゃう。でも、なんかおかしいなあ〜?何がおかしいんだろう、どうすればいいんだろう?ってときは検索して自分で解決するのが難しいので、このように相談させていただける環境は本当に有り難いです。ありがとうございます🙏🙏🙏

クラスメソッドについては言葉は本で読んで知っていたけれど、どのようなときに使うべきかまで理解できていませんでした。実際使って見たので、もう一回読み返してみます!

ぼんやりとしたテーマですが、自分でやりたいことを決めて持っていったのがよかったかなと思います。(今回は"つくったLINE Botのコードがなんかわかりにくいので直したい!") もちろん何をすればいいのかわからなくてもコーチに相談に乗っていただけますが、自分でなんとなくやりたいことがあると、それができたときとても達成感があってよいかなと思いました🌸

まだまだ追加していきたいBotの機能があるので、引き続き頑張っていきます!💪

Ruby on RailsでLINE Bot① csvファイルからのデータ投入

4月くらいからRuby on RailsLINE Botをつくっています。いろいろと手探りです。

shifumin.hatenablog.com

しふみんさんのブログを参考にさせていただいております!(感謝🙏🙏🙏

 

どんなBot

  • 何か特定の機能をするBotではなくて、家庭内や友人同士のLINEグループにいれておはなしできるものを想定しています。
  • Botにペットの名前をつけるなどすると、ペットとおはなししている気分になれるかなと思っています。)
  • 決まった単語に反応して、メッセージを返してくれます。

現在実装されている機能の例

おはよう→「おはよう!」
つかれた→「おつかれさま!」
hoge fuga どっちにしよう?→「hogeにしよう!」または「fugaにしよう!」(ランダムで返答)
○○(Botの名前)ありがとう!→「どういたしまして!」

 

今回実装した機能

DDRぼ”機能

(「DDRぼ」と発言すると、KONAMIアーケードゲームDanceDanceRevolutionの収録曲の中からランダムで曲を提示してくれる機能)

Dance Dance Revolution - Wikipedia

DDRって何?と聞かれて説明すると「昔流行ったやつ!」とよく言われるゲームです。(今も現役ですよ!)曲にあわせて上下左右の矢印をふむだけでダンスができるあのゲームです。

 

実装の背景

音楽ゲームをやらない方には全く刺さらないかもしれないのですが………。

ゲームセンターに行って音楽ゲームをやると、収録曲がものすご~~~くいっぱいあるのです。もちろん好きな曲をやるのもよいですが、いつも同じ曲ばかりやっているな~とか、たまには違う曲をやりたいな~というときに、ランダムで曲を提示してくれると便利!ということで、実装を試みました。

ちなみに、音楽ゲームには難易度があり、同じ曲でも複数種類の難易度の譜面が遊べます。人によって上手さが違うので、難易度を指定すると、その難易度が含まれている曲がヒットするようにします。

データ例

曲名“曲A” 難易度 “3/9/10/17”

曲名“曲B” 難易度 “5/6/10/15”

発言と返答例

DDRぼ10 →曲Aか曲Bをランダムで返す

DDRぼ15 →曲Bを返す

 

やったこと・学んだこと

DDRsongテーブルを作った。しかしテーブルへの実際の曲情報はどうやって登録すればいいのだろう?1曲ずつ登録なんてとてもやってられない……と思って調べていると下記の記事にたどり着きました。

rake db:seedを使ったデータの投入

csvデータを読み込んで、1行ごとにデータがいれられる!?すごく便利!

herokuにデプロイして、rake db:seedしました。

あとは「DDRぼ」の後の数字があれば同じレベルの譜面がある曲をとってきて、そのなかからランダムで返します。数字がない場合、または難易度としてありえない数字の場合、すべての行のなかからランダムで返します。

Array.sampleも学びました。便利だ。

 

その他

  • 今はBotに勝手に”ポンタ”と名付けて、ポンタと会話している気分になっています。(危ない人だと思わないでください)(個人的なBotなので許してください)
  • 運動不足解消のためにDDRをやっていきたいと思います。(楽しく運動できるのでオススメです)
  • スクレイピングというものをやってみたいです。
  • 家族や友人との会話の中で、ちょっとしたことをLINE Botに決めてもらうのはとても楽しいです。

黒い画面に入門しました

Fjord Boot Campに参加しました!

Rails Girls Tokyo 9thに参加する前から気になってはいたのですが、アフターパーティーの場でいろんな方のお話をきいて(参加者の方からも!)、参加する決心がつきました!

6月から仕事をおやすみすることになったので、モリモリと勉強をしていこうと思います。楽しみ〜〜🎶🤗

黒い画面入門

エンジニアといえば黒い画面(らしい)ということで、先週からこちらを読んでおりました。

Webデザイナーの為の「本当は怖くない」“黒い画面”入門 Part.01 - FJORD,LLC(合同会社フィヨルド)

学んだこと

  • "黒い画面"にはファイル名を打ち込んで、そのプログラムを実行している。(よくわからず打ってました😜)
  • パスを通すことで、ディレクトリ名を打たなくても、ファイル名だけで実行できる。(パスが通っているから、/bin/lsと打たなくても、lsだけで大丈夫!)
  • Homebrew は Package Managerの一種。
  • Package Managerはソフトウェアの導入や削除ができ、ソフトウェア同士・ライブラリ同士の依存関係を管理してくれる。
  • Homebrewのインストールの前にXcodeをインストールするのは、XcodeをインストールするとTerminal用のソフトがたくさんインストールされ、それがHomebrewの動作に必要だから。
  • Homebrewをインストールするときに打った文字列の意味(curlでアドレスを指定し、その中身をrubyで実行している!😲)
  • $ sudo rm -rf / # 絶対に実行してはいけない!!!!❌❌❌(-rはディレクトリまるごと、-fは確認せずに実行してしまう)
  • catコマンドは、conCATenate(連結する)。本来は引数に渡した2つのファイルを連結して中身を表示するコマンドだが、1つしか渡さなければ単に表示されるだけ(その使い方が多いらしい。ちょっとかわいそう😢本来の意味……)
  • shebang(#!)を使えば、自分で書いたスクリプトがコマンドのように使える(早く何か自動化させてみたいなあ)
  • "黒い画面"はTerminalとShellからできている。

Homebrewのインストール

Homebrewはすでにインストールしていたので、インストールの仕方を再確認して、自分が何をやっていたのかを理解しました。brew doctorしてみると、Xcodeのバージョンが古いと怒られたので、アップデートしました。

感想

読み終えた感想。感動しました。😳😳😳😂😂😂

今までわけもわからずつかっていたコマンドの正体が分かったスッキリ感✨今後は自分が打っているコマンドをきちんと理解してすすめていきます!

Rails Girls Tokyo 9th に参加しました

5/19 Rails Girls Tokyo 9thに参加しました🎵🎀

railsgirls.com

 

 参加まで

エンジニアとしてお仕事がしたいということを友人(@_risacan_)に相談したら、とてもよいイベントだとオススメしてもらいました!(ありがとう💖)

応募したところ、ありがたいことに参加させていただくことができました。

応募してから実際のイベントの日までに、Railsに対する興味は止めることができず、RailsGirlsガイドを(つまづきながらも)やってみたり、つくってみたかったLINEBotをググりながら見よう見まねで作成していたりしていました。

参加するのは楽しみでもありましたが、知らないひとばかりのイベントに初めていく緊張もありました。

当日

とても楽しかったし勉強になった!✨

楽しかったこと

まず、会場に入るとおしゃれで素敵な雰囲気でびっくり!緊張もしていましたが、他のGirlsやコーチの方と自己紹介をしていくうちに打ち解けることができました。

お菓子とおいしいコーヒーをいただきながら、エンジニアさんのお話や、他業界で働いているGirlsのお話を聞くだけでまずとても楽しい!私はWebエンジニアになりたいなあと思って参加したのですが、多趣味な方でプログラミングも趣味として学びたくて参加した方、Webデザイナーのお仕事をされていて、エンジニア側のことも知りたいと思って参加した方など、いろんな方がいらっしゃいました。自分の知らない世界のことを聞くのは純粋に楽しいですね。そして、コーチからもたくさんお話を聞くことができました。Webエンジニアになりたい!と思っている私には、実際にWebエンジニアとして働いている方のお話は非常に参考になりました。

スポンサーLTや、アフターパーティーでのお話も新鮮な話がたくさんで、興味深く楽しむことができました。

それから、お弁当やアフターパーティーのお料理などもおいしかった😋

勉強になったこと

インターネットで調べると、何が正解なのかわかることは多いのですが、なぜ正解なのか、どういう役目なのか、実際にどういう使い方をするのか、などなどより疑問がわくこともあります。それを聞いたら答えてくれる人が隣にいるありがたさと言ったら!素晴らしいです!本当に感謝!

.gitignoreとは何か(gitの管理対象外にしたいlogファイルやDBファイルなどのファイルを指定する!)、gemとは何か(Rubyのライブラリ。Railsもgem!)などなど、そもそもこれってなんだろう?という質問にも答えていただき非常に勉強になりました!

今後について

コーチの方がされているお仕事について聞いたことも非常に参考になり、自分がどういう仕事をしたいか考えるきっかけとなりました。本格的に勉強をして、webエンジニアとして働くことを目指していきたいと思いました。

また、Rails Girls Tokyo自体が楽しいイベントだったことと、いろんな方のお話を聞くのが楽しかったことから、積極的にイベントに参加していこう!という気持ちになりました。Rails Girlsが続けて勉強する場として、Rails Girls Tokyo, More!というコミュニティを紹介していただいたので、まずはそこから参加していきたいと思います!

最後に

オーガナイザーさん、コーチ・スタッフのみなさま、一緒に参加したGirlsのみなさま、スポンサーさま、楽しい時間を本当にありがとうございました!

全くの初心者でも、自分なりにちょびっとだけ勉強していても、各々分からないことを質問できるので、プログラミングに興味がある女性には本当にオススメの楽しいイベントです!

ブログ開設と自己紹介

ブログはじめました

こんにちは、初めましてkasumiです。

プログラミングの勉強を始めるにあたって、学んだことや感じたことなどを書く場所としてブログを開設しました。

どうぞよろしくお願いします🙂

簡単な自己紹介 

自分のこれからの仕事について考えていくうちにアプリケーションを作りたい気持ちが強くなり、プログラマの友人に相談したところRubyを紹介してもらいました。そこから、Rubyを中心に勉強をしていました。

現在のお仕事はシステム調達や運用にかかわるお仕事です。前のお仕事では、SIerにてウォーターフォールの上流工程部分を担当していました。販売管理・人事労務給与・会計管理システムなどの導入、運用サポートなども。大学では、哲学を学んでいました。

 趣味はゲームや野球観戦など。高校時代はバンドでベースを弾いていました。音楽は今でも好きです。ポンタというたぬきのキャラクターが好きです。

 その他

Markdown記法を早く勉強して、身に付けたいと思います)