質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Q&A

解決済

2回答

727閲覧

ラズパイでSwiftを使いたい

NakaKou

総合スコア19

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

0グッド

0クリップ

投稿2019/03/12 12:37

この無謀な行為の動機について

僕はプログラム初心者です。

javaとかpython、swiftなど必要に応じて浅く触ってきました。
swiftはずば抜けて好きです。だからラズパイにおいてもswiftを使いたいです。

また、私は”スマートHome”を作るりたいと思っています。なのでラズパイを
使いたいです。

現状

ラズパイへのswiftの導入はこのサイトに書いてある通りに行いました。
初めは「これで完璧!!」と思っていました。

しかし!!

以下のようなエラーが出てきてしまい思っていたものとは違う結果となってしまいました。
それでも、簡単なプログラム程度ならバイナリー化も実行もできました。
ラズパイ

困ったこと

「ラスパイでできないのはしょうがないmacでやってみよう」とやってみました。
テキストエディタで書いて「〜.swift」と名前をつけて
ターミナルでコンパイルしようとしました。

でも、できませんでした。

恥ずかしながら、僕はラズパイで行う以前にMac上(Macのターミナル)でさえ
swiftのプログラムを作り実行できないようです。

試してみたのは以下のプログラムを少し直したものです。

Swift

1import UIKit 2import PlaygroundSupport 3 4let addr = "192.168.0.123" 5let port = 4567 //PORT Num 6 7var buffer = [UInt8](repeating: 0, count: 255) 8 9var inp : InputStream? 10var out : OutputStream? 11Stream.getStreamsToHost(withName: addr, port: port, inputStream: &inp, outputStream: &out) 12 13if inp != nil && out != nil { 14 let inputStream : InputStream = inp! 15 let outputStream : OutputStream = out! 16 inputStream.open() 17 outputStream.open() 18 19 if outputStream.streamError == nil && inputStream.streamError == nil { 20 let queryString = "クライアントから送信したいデータ" 21 let queryData = [UInt8](queryString.utf8) 22 while true { 23 UnsafePointer<UInt8>(queryData) 24 outputStream.write(queryData, maxLength: queryData.count) 25 var readChars: Int = inputStream.read(&buffer, maxLength: buffer.count) 26 if (readChars > 0) { 27 let readString: String = NSString(data: NSData(bytes:buffer, length:readChars) as Data, encoding: String.Encoding.utf8.rawValue)! as String 28 print(readString) // サーバから受信したデータ 29 usleep(300 * 1000) //300ms待つ(適当 30 } 31 32 } else { 33 print ("server closed connection") 34 inputStream.close() 35 outputStream.close() 36 break 37 } 38 } 39 } else { 40 print ("could not create socket") 41 } 42} else { 43 print ("could not initialize stream") 44}

以下のようなエラーが返ってきました。
Macのターミナル
パッケージがなんとからしいですね...
調べてみましたが分かりません。悔しいです!

あと...

Mac持ちというのにLinixの詳しい知識はほとんどありません。
(これでは、エセMac使いですね(;_;))

聞きたいこと

  1. Macにて、Xcodeを使うことなく任意のエディタ・場所で書いた

  UIKit,Foundationを使ったswiftのコードをコンパイし、実行できるようになりたい。

  1. 0で行ったことをラズパイでも行いたい。

以上2つです。

誰か教えてください。

お願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fuzzball

2019/03/13 00:14

UIKitは使えないんじゃないかな。
guest

回答2

0

ベストアンサー

参考にしているプログラムは、iPad用のPlaygroundで動作するプログラムです。

swift

1import UIKit 2import PlaygroundSupport

の部分ですが、
UIKitは、iPhoneやiPadで動作するiOS専用のフレームワークですので、ラズパイでは使えないのはもちろん、macOSでも使えません。
PlaygroundSupportは、Playground環境をサポートするためのモジュールですので、Playground環境以外では使えません。

ただ、参考にしているプログラムでやろうとしているのは、Foundationで提供されているInputStream、OutputStreamを使ってsocket通信をしようとしているだけのようですので、上記のimportの代わりに

swift

1import Foundation

とするだけでmacOSでもビルドできるかもしれません。

ラズパイでFoundationが使えるかですが、
https://qiita.com/dankogai/items/d8cd9df0bdf820dcef1d
によると、swift4.2になってからLinux用swiftもFoundationが
使えるようになったようですから、今ラズパイで使っているSwiftのバージョンが
4.2なら、同じように import Foundationにしたらビルドできるかもしれません。

ラズパイ自体使ったことないので、それ以上のことは私にはわかりません。

投稿2019/03/13 00:44

TakeOne

総合スコア6299

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

NakaKou

2019/03/13 23:34

言われてみれば、当たり前ですね。 くだらない質問に答えてくださりありがとうございます。 import Foundationに変更してMacにてコンパイルしましたが、 <module-includes>:1:9: note: in file included from <module-includes>:1: #import "Headers/CoreFoundation.h" ^ /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/CoreFoundation.framework/Headers/CoreFoundation.h:43:10: note: in file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/CoreFoundation.framework/Headers/CoreFoundation.h:43: #include <CoreFoundation/CFBase.h> ^ /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/CoreFoundation.framework/Headers/CFBase.h:72:10: note: in file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/CoreFoundation.framework/Headers/CFBase.h:72: #include <Block.h> このようなエラーが無数に出てきてしまいました。 これはなんでしょうか
TakeOne

2019/03/14 02:52

それはヘッダのinclude状況を示しているヒントメッセージです。エラーになっているなら「error: no such module 'UIKit'」といったように「error:」と書かれているところにエラーメッセージが出ているはずです。 新しくやったことを追記する時は、質問欄を編集して追記してください。
guest

0

エラーメッセージを読んで、その意味を理解しましょう
まずはそれからのはなしです

投稿2019/03/12 12:48

y_waiwai

総合スコア87719

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

NakaKou

2019/03/13 00:13 編集

そうですか。頑張ってみます エラーについてもっと調べれば、必ず解決できますか? 僕も結構調べたのですが、分かりません。 何かキーワードをもらえませんか?
MacKimura

2019/03/15 07:14

y_waiwaiさんからは、具体的なアドバイスはもらえません。 何かにつけググって下さい、まずは理解して下さいと言われる方なので、あきらめて下さい。 質問者様のワラをもつかむ努力も知らずに。。 ネガティブなコメントですみません。
NakaKou

2019/03/15 22:15

とんでもありません、 僕の努力が足りないんですね。 頑張ります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問